3weeks Dev Log #10 — Finally: iOS and Android Simultaneously

The Goal Was Always Both Platforms
Android support was one of the primary motivations for the rebuild.
The 21-day habit formation concept doesn't belong to iPhone users alone. Android users want to build habits too. In 2019, I was an iOS developer and shipped iOS only. In 2026, with Flutter, the same codebase builds for both.
Flutter's Cross-Platform Is Not Automatic
Flutter builds for both platforms from one codebase — but "one codebase" doesn't mean zero platform-specific work.
Notifications: iOS uses UNUserNotificationCenter; Android uses notification channels with OS-version-specific behavior. Battery optimization exceptions on Android require explicit handling, otherwise background notifications may not fire on certain devices.
Permissions: Microphone, notifications, storage — both platforms require permission requests, but the patterns differ.
UI details: The same Flutter code renders slightly differently across iOS and Android. Font rendering, navigation behavior, button styling — small things that need individual attention.
Aligning these took more time than expected.
The Android Closed Test, With Experience
When SMART LOTTO launched on Android, finding 12 testers for the 14-day closed test was a genuine challenge. I'd had no experience with the requirement and no Android community to draw from.
3weeks benefited from that learning. I knew the process, had community contacts from the SMART LOTTO effort, and prepared accordingly.
The second time was significantly smoother.
Two Stores, Two Reviews
App Store review involves human assessment. Wait a few days, receive specific feedback if rejected. A productivity app without sensitive classifications passes without major friction.
Google Play review is more automated. Policy-compliant apps generally move through quickly.
Both stores approved 3weeks. For the first time, iOS and Android users could both access it.
2019 to 2026
July 25, 2019, 4:58 AM — first release.
Seven years later, completely new architecture, new features, both platforms.
The core is unchanged:
21 days. Every day. Without missing one.
That simple rule was the right design then. It still is.
What It Means for an App to Last
Running 3weeks over multiple years has taught me something about longevity in software.
An app that persists accumulates things: user feedback patterns, download data, clarity about which features actually get used. Things that aren't knowable at launch.
A single app maintained and improved over years is worth more — in learning and in user value — than many apps built and abandoned.
3weeks will keep going.