The biggest reason people stay in a habit app they’ve outgrown is the grid. Two years of ticks is hard to leave behind. So habit import shipped alongside the rest of the new features: bring the history, keep the streak.
Two shapes cover almost everything
Exports in the wild come in two shapes.
Wide: a date column, then one column per habit. Loop Habit Tracker’s
Checkmarks.csv is this shape, inside its export zip or on its own.
Loop’s values need care: 2 means ticked by hand, 1 means implied by
the habit’s frequency, 0 not done, -1 unknown. Only 2 counts.
Importing the implied ones would invent days nobody did.
Long: one row per habit per day, with a date column and a name column: Habitify-style exports and most spreadsheets. A value column, if there is one, becomes the amount. Otherwise each row is a tick.
The parser finds columns by header name, sniffs comma, semicolon or tab, and copes with UTF-8, UTF-16 and Latin-1.
Year first, or not at all
03/04/2026 is the 3rd of April in most of the world and the 4th of
March in the US. Guessing would quietly move a year of history by weeks,
and nobody would notice until a streak looked wrong. So only year-first
dates are accepted (2026-04-03, 2026/04/03, or a timestamp that starts
that way). Anything else gets a clear error that says how to fix the file.
Preview, merge, never overwrite
Import runs twice. First as a dry run that lists each habit, how many days, the date range, and whether it merges into a habit you already have (same name, ignoring case). Nothing is written until you confirm.
Then:
- Days you already logged here are never overwritten. Importing the same file twice adds nothing the second time.
- New habits start with a weekly target matching how often you actually did them, so the streak starts honest rather than broken.
- The streak engine recomputes once at the end, not once per day.
AlzyWelzy
Building PaceStreak. GitHub
Related
ProductHabits on chosen days, and pausing just one
A habit can now be planned for specific weekdays, and paused on its own while everything else carries on. Both had to mean the same thing to the streak, the reminders and the badge.
2 min
ProductA routine is only an order
Habit routines and the focus timer shipped without touching the streak engine. Why a routine stores nothing but a list of ids, and why the timer stores a start time instead of counting.
2 min
ProductSixty-eight habits to start from, and an empty list
PaceStreak ships a catalogue of 68 ready-made habits across health, learning, mind, people, focus, money, home and creative. The habit list itself still starts empty, on purpose.
1 min