First-launch onboarding
Step diagram
User taps the app icon
UserFirst open after install. No saved preference, no signed-in user.
Splash + theme bootstrap
AppApp reads prefers-color-scheme synchronously before first paint to avoid the flash of wrong theme.
Locale auto-detect
AppApp resolves the device locale and falls back to en-US if no resource matches.
Sign-in (optional)
UserUser taps KoderSignInButton or skips into a guest session if the app supports it.
Lands on home
AppPersisted preferences and user object are now in scope. Navigation back from here exits the app.
Common pitfalls
- Hardcoding ThemeMode.dark before the saved preference is loaded — causes the flash of wrong theme on every cold start.
- Showing the home screen before locale resolution finishes — first paint shows raw ICU keys.