Notifications
Mobile app: every screen, state and flow in Notifications.
6 screens and overlays, 58 states, 3 flows. Frames show a real screenshot where one was captured and a wireframe card where the state needs data or conditions a device run cannot produce.
Flows
Notification permission on Home
Know when your order ships
Requesting permission
Primary button loading and disabled
Not reachable on a device: OS dialog over the app; screenshot via adb only
Branches and edge cases
Know when your order ships
Unable to request permission
Danger toast titled Error when the request throws; modal closes
Not reachable on a device: Capture audit 2026-10-30. ios: Prior source investigation: no distinct reachable UI for this state. android: Prior source investigation: no distinct reachable UI for this state.
Flow diagram
Notification permission
Know when your order ships
Requesting permission
Primary button loading and disabled
Not reachable on a device: OS dialog over the app; screenshot via adb only
Branches and edge cases
Order Confirmed!
Notification prompt
Once per visit if eligible, pushes notification-permission modal
Needs data: Capture audit 2026-10-30. ios: Real checkout/payment required; do not bypass route allowlist. android: Real checkout/payment required; do not bypass route allowlist.
Know when your order ships
Unable to request permission
Danger toast titled Error when the request throws; modal closes
Not reachable on a device: Capture audit 2026-10-30. ios: Prior source investigation: no distinct reachable UI for this state. android: Prior source investigation: no distinct reachable UI for this state.
Notification Preferences
Loading your preferences
Centered spinner (progressbar role) until the backend answers; no default toggles are shown
Not captured yet
Notification Preferences
Could not save preferences
Save failed
Not reachable on a device: Needs a network fault, crash, race or code change to show
Flow diagram
Notification inbox and taps
Branches and edge cases
Notifications
Notification skeleton
First page loading, 6 rows
Not reachable on a device: Needs a network fault, crash, race or code change to show
Notifications
Couldn't load notifications
Timeout; Try again redrives session
Not reachable on a device: Needs a network fault, crash, race or code change to show
Push notification tap
Opens detail page for rich content
A push whose notification has detail content opens /notifications/detail/[id], like an inbox tap. A valid deepLink still wins
Needs data: Capture audit 2026-10-30. ios: Physical device required; simulator push listener disabled. android: Physical device required; simulator push listener disabled.
Flow diagram
Screens and states
Know when your order ships
(modals)/notification-permissionKnow when your order ships
Soft ask before the OS notification dialog. Offered once on Home after sign-in and again after an order. After a final OS denial it offers Open Settings instead.
src/app/(modals)/notification-permission.tsxEntry
- Home after sign-in, 1.5 s settled (useOfferNotificationsOnHome)
- Order confirmation after 1.2 s
- Developer settings row
Exits
- Turn on notifications → OS dialog, then close
- Open Settings (OS blocked) → system settings, then close
- Not now → close to previous or Home
- Swipe or back → same as Not now
States · 17
src/shared/utils/notification-utils.tsx:76src/app/(modals)/notification-permission.tsx:218src/app/(modals)/notification-permission.tsx:125src/app/(modals)/notification-permission.tsx:143src/app/(modals)/notification-permission.tsx:159src/app/(modals)/notification-permission.tsx:102src/app/(modals)/notification-permission.tsx:50src/app/(modals)/notification-permission.tsx:201src/app/(modals)/notification-permission.tsx:114src/app/(modals)/notification-permission.tsx:130src/app/(modals)/notification-permission.tsx:161src/shared/utils/notification-utils.tsx:93src/app/(modals)/notification-permission.tsx:146src/features/notifications/hooks/use-offer-notifications-on-home.ts:28src/app/(modals)/notification-permission.tsx:200src/app/(modals)/notification-permission.tsx:136src/app/(modals)/notification-permission.tsx:175Notifications
(app)/notificationsNotifications
Inbox with category filters, swipe delete with undo, infinite scroll. Live subscription, so no pull to refresh.
src/app/(app)/notifications/index.tsxEntry
- Home bell with unread badge
- Profile menu
- Push tap fallback
- Deep link
Exits
- Row tap → resolved destination
- Swipe or trash → delete with undo
- Sign in → auth sheet
- Filter chips
States · 15
src/features/notifications/components/notifications-list-screen.tsx:132src/features/notifications/components/notifications-list-screen.tsx:142src/features/notifications/components/notifications-list-screen.tsx:158src/features/notifications/components/notifications-list-screen.tsx:175src/features/notifications/components/notifications-list-screen.tsx:206src/features/notifications/components/notifications-list-screen.tsx:233src/features/notifications/components/notifications-list-screen.tsx:235src/features/notifications/hooks/use-notification-inbox.ts:139src/features/notifications/components/notification-row.tsx:77src/features/notifications/utils/notification-sections.ts:27packages/backend/convex/notification/queries.ts:63src/features/notifications/components/notifications-list-screen.tsx:194src/features/notifications/utils/notification-sections.ts:52src/features/notifications/components/notification-row.tsx:289src/features/notifications/components/notifications-list-screen.tsx:78Notification deleted
Notification deleted
Needs data: Needs inbox rows on the QA account
NotificationDeleteUndoNotification deleted
Soft delete with 4 second undo toast
src/features/notifications/hooks/use-notification-inbox.tsEntry
- Swipe or trash tap on a row
Exits
- Tap toast → restore row
- Timeout → delete runs
States · 3
src/features/notifications/hooks/use-notification-inbox.ts:206src/features/notifications/hooks/use-notification-inbox.ts:190src/features/notifications/hooks/use-notification-inbox.ts:221Notification
Notification
Needs data: Needs an inbox row with detail content
(app)/notifications/detail/[id]Notification
Rich dashboard-authored notice with hero, HTML body and one CTA
src/app/(app)/notifications/detail/[id].tsxEntry
- Inbox row with detail content
- Deep link
Exits
- Back → inbox
- CTA → in-app path or external URL
States · 8
src/app/(app)/notifications/detail/[id].tsx:87src/app/(app)/notifications/detail/[id].tsx:108src/app/(app)/notifications/detail/[id].tsx:165src/app/(app)/notifications/detail/[id].tsx:182src/app/(app)/notifications/detail/[id].tsx:245src/app/(app)/notifications/detail/[id].tsx:127src/app/(app)/notifications/detail/[id].tsx:293src/app/(app)/notifications/detail/[id].tsx:160Notification Preferences
(modals)/notification-preferencesNotification Preferences
Toggle push and four notification categories. Categories come from the backend catalog; account messages have no switch.
src/app/(modals)/notification-preferences.tsxEntry
- Settings > Preferences
Exits
- Sign in → auth sheet
- Open Settings (OS blocked) → system settings
- Close modal
States · 11
src/app/(modals)/notification-preferences.tsx:182src/app/(modals)/notification-preferences.tsx:105src/app/(modals)/notification-preferences.tsx:123src/app/(modals)/notification-preferences.tsx:132src/app/(modals)/notification-preferences.tsx:306src/shared/utils/notification-preference-mapping.ts:15packages/backend/convex/notification/policies.tssrc/app/(modals)/notification-preferences.tsx:193src/app/(modals)/notification-preferences.tsx:221src/app/(modals)/notification-preferences.tsx:95src/app/(modals)/notification-preferences.tsx:115Push notification tap
Push notification tap
Not reachable on a device: Needs a real push delivery and an OS-level tap
PushTapPush notification tap
Maps a tapped OS notification to a screen
src/features/notifications/services/notification-navigation-handler.tsEntry
- System notification tap: foreground, background,
Exits
- Order or payment → order detail or Orders
- Loyalty, reward, campaign → Loyalty tab
- Voucher → My Discounts
- Promo → product or Home
- System, announcement → Home
- General, error → inbox
States · 4
src/features/notifications/services/notification-navigation-handler.ts:275src/features/notifications/services/notification-routes.tssrc/features/notifications/services/notification-service.ts:650src/features/notifications/services/notification-navigation-handler.ts:260

















































