Product
Mobile app: every screen, state and flow in Product.
6 screens and overlays, 51 states, 4 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
Add to bag
Branches and edge cases
Variant picker
Add failure toast
Same toast as PDP; stepper has no per-variant stock cap
Not reachable on a device: Needs a network fault, crash, race or code change to show
Product detail
Failed to add to bag
Add fails or server rate limits; toast with message or Please try again
Not reachable on a device: Needs a network fault, crash, race or code change to show
My Bag
Guest merge failed 3 times
Toast N cart items couldn't sync; Reopen your cart to retry
Not reachable on a device: Needs a network fault, crash, race or code change to show
My Bag
Guest merge dropped lines
Lines without product id dropped; toast N bag items couldn't sync
Needs data: Capture audit 2026-10-30. ios: Requires deliberately malformed guest cart cache with a missing product id; ordinary UI cannot create that line. android: Requires deliberately malformed guest cart cache with a missing product id; ordinary UI cannot create that line.
Flow diagram
Reviews
Branches and edge cases
Ratings & Reviews
Submit failed
Toast: Failed to submit review. Please try again.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Flow diagram
Buy now from product
Shopify checkout
Completed with order id
De-duplicated, session client_completed, bag replaces to confirmation
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.
Branches and edge cases
Product detail
Buy now failure
Toast Checkout failed with message; guest sees Authentication required, no sign-in sheet
Not reachable on a device: Needs a network fault, crash, race or code change to show
Product detail
Add or buy spinner
Spinner replaces button face and both buttons disable
Not reachable on a device: Needs a network fault, crash, race or code change to show
Flow diagram
Writing a review
Branches and edge cases
Flow diagram
Screens and states
Product detail
(app)/product/[id]Product detail
Product page with gallery, variants, reviews, description, recommendations and buy bar
src/app/(app)/product/[id].tsxEntry
- Any product card or list
- Bag item image or row
- Wishlist zoom link
- Deep link with several id shapes
Exits
- Back → previous screen
- Bag icon or View Bag → My Bag
- Share → native share sheet
- Heart → wishlist toggle or sign-in
- Image tap → fullscreen viewer
- Options row or buttons → variant sheet
States · 20
src/features/product/components/detail/states/product-detail-skeleton.tsx:26src/features/product/components/detail/product-detail-page.tsx:318src/features/product/components/detail/states/product-detail-states.tsx:44src/features/product/components/detail/product-detail-page.tsx:340src/features/product/components/detail/product-detail-page.tsx:123src/features/product/hooks/use-product-detail.ts:135src/features/product/components/detail/static-bottom-bar.tsx:94src/features/product/components/detail/info/low-stock-note.tsx:18src/features/product/components/detail/info/variant-summary-row.tsx:26src/features/product/components/detail/static-bottom-bar.tsx:58src/features/product/components/detail/product-detail-page.tsx:213src/features/cart/hooks/use-server-cart.ts:506src/features/product/components/detail/static-bottom-bar.tsx:116src/features/product/components/detail/product-detail-page.tsx:140src/features/product/components/detail/product-detail-page.tsx:252src/features/product/components/detail/reviews/ratings-reviews-section.tsx:89src/features/product/components/detail/panes/description-pane.tsx:31src/features/product/components/detail/panes/recommendations-pane.tsx:56src/features/product/components/detail/images/image-carousel.tsx:78src/features/product/hooks/use-product-detail.ts:4Variant picker
VariantSelectionSheetVariant picker
Pick variant and quantity, then add to bag or buy now
src/features/product/components/detail/variants/variant-selection-sheet.tsxEntry
- N options available row
- Add or buy on multi variant product
Exits
- Add icon → adds and closes
- Buy now → closes, opens Shopify checkout
- Swipe → close
States · 4
src/features/product/components/detail/variants/variant-card.tsx:31src/features/product/components/detail/variants/variant-card.tsx:31src/features/product/components/detail/variants/variant-selection-sheet.tsx:73src/features/product/components/detail/variants/variant-selection-sheet.tsx:87Image viewer
ProductImageViewerImage viewer
Fullscreen image viewer with swipe, pinch and double tap zoom
src/shared/components/ui/media/product-image-viewer.tsxEntry
- Tap hero image
Exits
- Close button → PDP
- Single tap → PDP
- Android back → PDP
States · 1
src/shared/components/ui/media/product-image-viewer.tsx:27Ratings & Reviews
(app)/product-reviews/[id]Ratings & Reviews
Ratings list, review form and success view in one route
src/app/(app)/product-reviews/[id].tsxEntry
- PDP reviews button
- Deep link with Convex product id
Exits
- Back → PDP, or list view from form
- Done → PDP
- Guest footer → sign-in sheet
- Flag icon → report sheet
States · 19
src/app/(app)/product-reviews/[id].tsx:90src/features/product/components/detail/reviews/reviews-list-view.tsx:150src/features/product/components/detail/reviews/reviews-list-view.tsx:160src/app/(app)/product-reviews/[id].tsx:61src/app/(app)/product-reviews/[id].tsx:250src/features/product/components/detail/reviews/review-form-view.tsx:142src/app/(app)/product-reviews/[id].tsx:66src/app/(app)/product-reviews/[id].tsx:98src/app/(app)/product-reviews/[id].tsx:109src/app/(app)/product-reviews/[id].tsx:196src/app/(app)/product-reviews/[id].tsx:128src/features/product/components/detail/reviews/review-card.tsx:90src/app/(app)/product-reviews/[id].tsx:250src/app/(app)/product-reviews/[id].tsx:250src/app/(app)/product-reviews/[id].tsx:237src/app/(app)/product-reviews/[id].tsx:196src/app/(app)/product-reviews/[id].tsx:90src/app/(app)/product-reviews/[id].tsx:146src/app/(app)/product-reviews/[id].tsx:271Report Review
ReportReviewSheetReport Review
Report a review by reason with optional details, or block its author
src/features/product/components/reviews/report-review-sheet.tsxEntry
- Flag icon on another user's review
Exits
- Submit Report → auto closes after 2 s
- Block → native confirm alert
States · 5
src/features/product/components/reviews/report-review-sheet.tsx:153src/features/product/components/reviews/report-review-sheet.tsx:87src/features/product/components/reviews/report-review-sheet.tsx:76src/features/product/components/reviews/report-review-sheet.tsx:96src/features/product/components/detail/reviews/review-card.tsx:99Block User
BlockUserAlertBlock User
Confirm blocking a review author so their reviews are hidden
src/features/product/components/reviews/report-review-sheet.tsxEntry
- Block in report sheet
Exits
- Block → dismisses report sheet
- Cancel → stay on sheet
States · 2
src/features/product/components/reviews/report-review-sheet.tsx:108src/features/product/components/reviews/report-review-sheet.tsx:108




















































