Guide
Again has three recording modes. Pick the one that fits the thing you do; the interaction is always the same — tap the row to record what you actually do.
Loops — when the next time depends on the last time
A Loop is for things that recur on your cadence, not on a fixed calendar date. "Haircut every 5 weeks" — you don't actually want a haircut on June 12th, you want it about 5 weeks after the last one. Tap Done when you finish, and Again schedules the next one from that moment.
Two flavours, depending on the thing:
- From completion (default) — "5 weeks from when I last did it." Best for personal stuff: haircuts, dental, AC filter, watering plants. If you're a week late, the next one is a week later too.
- From due date — "every month on the 1st." Best for things tied to the calendar — rent, monthly review — where being late shouldn't slide the next one later.
Pick specific weekdays (M/W/F, weekdays only, etc.)
For "every 1 week" loops you can pick which days the loop should fire on — gym Mon/Wed/Fri, lawn watering on Tue/Thu, board games every Sunday. When you mark the loop done, the next due date jumps to the next allowed weekday in your selection.
Only on "every 1 week" recurrence. For "every 2 weeks on Tuesday" and similar, the existing single-weekday picker still applies.
Per-occurrence variations
Some things don't repeat uniformly. "Dental every 6 months — every 2nd visit is dental + whitening." "Groceries every week — every 4th is the bigger Costco run." A variation overrides the title (and notes, emoji) on every Nth occurrence. The loop row shows what's coming on the next completion, so you're never surprised.
When adding a variation you pick two numbers: every N occurrences, and starting from the Kth. K is the absolute occurrence index — counted from the very first completion — and it defaults to your next upcoming one, so the new variation fires immediately. A live dot strip in the editor shows the exact firing pattern at a glance before you save.
Stack variations for richer rhythms
Variations cascade by specificity: when two of them both apply to the same occurrence, the more specific one — the one with the larger N — wins. This lets you model schedules that real life actually produces.
Take a dental loop with three variations stacked on top of the base:
- Base: "Dental checkup"
- Every 2nd: "Dental + whitening"
- Every 4th: "Dental + whitening + x-rays"
- Every 8th: "Dental + whitening + x-rays + deep clean"
Visit 1 shows the base title. Visit 2 swaps to whitening. Visit 4 matches both the every-2nd and every-4th rules, and every-4th wins because it's more specific. Visit 8 matches all three and every-8th wins. Every-other-visit gets the quietest treatment, and the milestones layer up automatically.
You write each tier as if it were standalone — the cascade handles the precedence for you, no "this overrides that" setting to wire up.
Gestures on a loop row
Four interactions, no menus:
- Tap — mark done. The row animates out and a snackbar offers Undo for 6 seconds in case you tapped the wrong one.
- Swipe right (drag the row to the right) — reveals Snooze (bump the next-due date one day forward, without counting as a completion, so the cadence stays anchored to your real history) and Sleep (pause the item — see below). On Dailies and Tallies, swipe-right is just Sleep.
- Swipe left (drag the row to the left) — reveals Edit and Delete buttons.
- Long-press — open the detail screen, which shows the full completion history with per-entry delete, the next-occurrence variation if any, and an edit shortcut.
New to the app? Tap the ? in the top bar for a quick animated tour of these gestures plus Sleep, Variations, and the calendar mirror. It pops up once on first launch and is always there if you want a refresher.
Show in your calendar
One global toggle, no per-loop fiddling. Open Settings → Calendar mirror, grant calendar access, pick which calendar to write to. From that moment every active Loop appears as an all-day event at its next due date; new loops show up automatically; archiving or deleting a loop removes its event. Each device picks its own target — you can mirror to your personal calendar on one phone and a work calendar on another.
One-way: edits made directly in your calendar app are overwritten on the next change. The loop in Again is the source of truth. Across multiple phones on the same Google Calendar, you'll see one event per loop, not duplicates.
You may spot a short tag like [again:9c2f7b1a…]
at the end of an event's notes. It's how Again recognises its own
events after they sync through Google or iCloud — those services
quietly drop the hidden markers most apps rely on, and this tag is
what survives the round-trip. Leave it in place: if it's deleted,
Again may not recognise the event on the next update and could add
a second copy. Its position in the notes doesn't matter, only that
it's still there.
There's an optional second layer: Keep completed occurrences (the toggle appears once you've picked a calendar). With it on, every time you complete a Loop it also stays in your calendar, on the day you actually did it — so your calendar builds a visible track record, not just a list of what's next. Mark something done late and it's recorded on the day you tapped Done, not the original due date. Off by default; turning it on backfills your existing history.
One thing to know if you sync across phones: this toggle is per-device. If two of your phones mirror to the same calendar, set it the same way on both — one phone keeping history while the other doesn't will repeatedly add and remove the same entries.
Dailies — daily things you want to remember
A Daily is something you want to do every day. Vitamins, stretch, a journal entry. Tap to mark it done for today; the row moves to a "Done today" group below. At local midnight, everything resets.
A small flame chip appears once you've completed a Daily on consecutive days. It's there for context, not pressure — no fanfare, no streak-loss notifications, no XP. If a streak breaks, the chip just goes away; nothing else happens.
Reminders
Each Daily can carry its own reminder time. In the editor, turn on Daily reminder and pick a time; you'll get a quiet notification at that time every day. Once you mark the Daily done for the day, the reminder silently goes away — it returns tomorrow.
Show on these days
By default a Daily appears every day. Pick specific weekdays in the editor's Show on these days picker if you only want it on some — vitamins on weekdays, journal on Sundays, gym on Mon/Wed/Fri. The filter is purely visual: nothing to tap on off-days, but your streak and history keep working normally.
Off-day Dailies move to a faded Hidden today section at the bottom of the Dailies tab — so you can still find them, tap to open the detail screen, and edit. Search finds them too.
Tallies — things you just want to count
A Tally is a counter for things you want to record without scheduling. Meditation. Push-ups. Glasses of water. One tap = +1; the count and last-tap time live right on the row.
Tallies have no goals and no reminders, on purpose. A target would turn them into guilt-Dailies. Each tap is logged, so undoing a stray tap is one long-press.
Start from a template
Don't fancy filling in a blank form? When you add a loop, daily, or tally, tap Start from a template at the top of the screen and pick a common one — "Haircut every 5 weeks", "Take pills", "Coffees". It fills in the form for you; adjust anything you like, then save. These are the same examples that greet you on a fresh install, now a tap away whenever you create something.
Notes on what you logged
Sometimes the date isn't the whole story. Open any loop, daily, or tally, find an entry in its history, and tap the note button to jot something — "crown on the upper left", "12 min, calm". The note shows under that entry from then on.
Recording stays a single tap — the note is always optional and added afterwards, never asked for up front. Notes sync between your devices and are kept in your JSON backup.
Sleep — pause and seasonal windows
Any Loop, Daily, or Tally can be put to sleep by swiping the row to the right and tapping Sleep (the bed icon), or from its edit screen. Sleeping items hide from your active list — no clutter, no reminders, no calendar events — and reappear automatically when the time comes.
Three mechanisms, independently configurable:
- Timed sleep — pick a duration (1 week, 1 month, 3 months, 6 months) or a specific date. The item wakes itself at midnight on that date; no action needed. "Indefinitely" is also available for things you want to keep but not see.
- Scheduled deactivation — set a date after which the item retires for good. Useful for a "pool opening checklist" loop that's relevant for one season then done. Pair it with seasonal windows if you want it to keep coming back each year.
- Seasonal windows — pick which months the item is active. "May through September" keeps a pool maintenance loop visible in summer and sleeping the rest of the year, every year, with no manual action. Multiple windows are supported — "Nov–Nov plus May–Aug" for something with two seasons. A 12-month dot strip in the editor shows the pattern at a glance.
The three mechanisms compose: a timed sleep always wins first. If active_until has passed, the seasonal window can still wake the item each year. If no seasonal window is set, the item stays sleeping after deactivation until you wake it manually.
Use the bedtime icon (🌙) in the tab's app bar to flip the list between your active items and your sleeping ones. Sleeping rows support the same swipe-left edit and delete as active rows.
The calendar mirror removes a loop's calendar event while it sleeps and re-adds it automatically when it wakes. Reminders work the same way.
The home-screen widget
Each widget on your home screen picks one mode in its configuration — Loops, Dailies, or Tallies. Tap a row to record the event without opening the app. Put two widgets side by side if you want both Loops and Dailies at a glance.
Optional sync between devices
Sync is off by default. When you turn it on, your phone generates a random ID and a private key locally — that's everything the server ever sees. No email, no password, no third-party login. Linking a second phone is a one-time QR scan from the first one.
Every loop, daily, tally, and completion is encrypted on your phone before it leaves. The server stores opaque blobs it has no key to read. The QR you scan to link a second phone carries that encryption key device-to-device over the camera channel, not over the internet.
The QR-link screen and the "Sync key" reveal both block screenshots, system-recents thumbnails, and screen recordings on Android. Anyone with eyes on your screen still sees the code, so treat the QR as a one-time secret — generate it, scan it, move on.
Using a screen reader? The QR scan needs a
camera and sighted aiming, so it isn't the accessible path.
Instead use Settings → Sync → Use a saved sync key
(also called Restore from sync key): paste the
id:secret you saved when you first enabled sync, and
the second device joins with no camera involved. It reaches exactly
the same end state as the QR link.
Manage which devices are linked
Settings → Sync → Manage devices shows every phone and tablet currently using your sync, with its real model name and when it was last seen. The current device is marked "This device" and can't be unlinked from here (use Disable sync for that). Tap the unlink icon on any other row to sign that device out, or use Unlink all other devices after replacing a phone to clean up in one tap.
Unlinking a device only signs it out of sync. Its local copy of your loops, dailies, and tallies stays on the device.
Rotate your sync key
Worried your sync key may have leaked? Settings → Sync → Rotate sync key generates a fresh one on this device. The old key stops working everywhere, every other device is unlinked, and the new key is shown on screen so you can save it. Your cloud data isn't deleted — this is a credential change, not a wipe.
After a rotation, any device you still want to sync needs to re-link with the new key (QR from this device, or paste the new key into Restore from sync key on the other device).
Restoring on a new phone
If you've saved your sync key, you can rejoin from a fresh install via Settings → Sync → Restore from sync key. Paste or scan, biometric-confirm, and your phone pulls down your loops and joins the sync mesh.
If other devices are already linked to your sync, Again now asks what you want to do with them:
- Keep all — the typical add-a-tablet flow. Your new device joins, the others stay linked.
- Unlink other devices — the right pick if you're restoring after losing access to your old phone, or after a suspected key leak. Your new device keeps the data; the others are signed out.
See the privacy policy for the full data story.
Use Again on the web
A web companion lets you tick things off from any browser — handy when your phone is in your bag and you are sat at a desk. It is a convenience, not a replacement: your phone stays the home of your data.
- Open web.again.nopanic.ing in a browser tab.
- Scan the code it shows with Again — or just point your phone's camera at it.
- Your browser becomes a temporary, private companion to your phone.
- Tick off loops, dailies, and tallies from the browser.
- Disconnect when you are done — or just close the tab.
What it is not: no account, no password, no permanent cloud dashboard. The browser link is account-less and lasts only until you close the tab — then it is gone. It rides the same end-to-end-encrypted sync the app already uses, so it needs sync turned on.
Theme
Settings → Theme picks Follow system, Light, or Dark. Default follows your phone.
Backup
Settings → Backup & Restore exports everything — Loops, Dailies, Tallies, completions, settings, variations — as a single JSON file you can save wherever you like (Google Drive, email it to yourself, your own folder). Importing the same file later restores the full state. The file is plain JSON; you can read it.