Lapse
Mobile App · 2026
Cancel before it charges.
A subscription and free-trial tracker for Android. It reminds you before a renewal or a trial charges you, keeps the cancel link one tap away, and shows how much you've saved by cancelling what you don't use.
- Platform
- Android
- Data
- SQLite · on-device
- State
- Riverpod 3
- Licence
- MIT · open source
Free trials quietly turn into charges. Lapse tracks every subscription and trial, sends a reminder before each charge with a Cancel now link right in the notification, and keeps a running total of what you've saved by cancelling. It's local-first: no account, no backend and no bank linking, so the data never leaves the device.
The challenge
A reminder app is only useful if it's never wrong. Reminders have to arrive on time with no server behind them, survive reboots and time-zone changes, and totals can't drift by a rupee or a day.
The approach
A pure-Dart planner works out every reminder from the subscriptions and reschedules them all whenever anything changes. Money is stored as integer minor units and billing dates as calendar dates, so rounding, time zones and daylight saving can't shift a total or a day.
Architecture
- Clean Architecture, feature-first: domain, data and presentation per feature, with pure-Dart use cases and a billing engine
- No code generation: Riverpod providers, models, JSON mapping and SQL are all written by hand
- Reminders re-sync on start, resume and time-zone change, using exact alarms when allowed, with Cancel now and Snooze 1d actions
Key features
Add in seconds
Pick from a catalog of 50 popular services, or add your own subscription or free trial.
Reminders that act
Nudges 7, 3 or 1 day before or on the day, with Cancel now and Snooze 1d right in the notification.
Savings tracker
Mark something cancelled and a celebration shows the yearly amount saved, with a running total.
Built for everyone
Light and dark themes, reduce-motion support, screens tested at 200% text, and JSON backup.
Built with
- Flutter
- Riverpod
- SQLite
- go_router
- Local notifications