Shop & search
Mobile app: every screen, state and flow in Shop & search.
8 screens and overlays, 49 states, 1 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
Browse to product
Branches and edge cases
Flow diagram
Screens and states
Search
(public)/searchSearch
Global product search with recent searches, results, sort pills and recommendations
src/app/(public)/search.tsxEntry
- Home search pill
- Deep link
Exits
- Cancel → Home
- Result card → product page
- Recent or trending chip → fills field
- Recently viewed card → product page
States · 20
src/app/(public)/search.tsx:77src/features/search/components/history/recent-searches.tsx:107src/features/search/components/history/recent-searches.tsx:15src/app/(public)/search.tsx:226src/features/search/components/history/recently-viewed.tsx:117src/features/search/components/history/recently-viewed.tsx:40src/features/search/components/history/recently-viewed.tsx:128src/app/(public)/search.tsx:269src/features/search/components/states/no-results.tsx:55src/app/(public)/search.tsx:339src/app/(public)/search.tsx:283src/app/(public)/search.tsx:83src/shared/hooks/use-wishlist-set.ts:124unverifiedsrc/app/(public)/search.tsx:253src/app/(public)/search.tsx:260src/app/(public)/search.tsx:265src/app/(public)/search.tsx:224src/app/(public)/search.tsx:56src/app/(public)/search.tsx:77Shop
(app)/(tabs)/shopShop
All products grid with category chips, filter chips and a local search field
src/app/(app)/(tabs)/shop/index.tsxEntry
- Tab bar
- Home category card
- Wishlist empty CTA Start shopping
- Deep link
Exits
- Product card → product page
- Heart → wishlist toggle
- Category chip → refilter in place
- Filter chips → filter sheets
States · 14
src/features/product-list/hooks/use-product-list-state.ts:154src/features/product-list/components/ui/filtering-overlay.tsx:17src/features/product-list/components/ui/no-results-state.tsx:29src/features/product-list/components/ui/product-loading-footer.tsx:17src/features/product-list/components/product-list-layout.tsx:87src/features/product-list/components/composed/category-carousel.tsx:125src/features/product-list/components/composed/category-carousel.tsx:143src/shared/components/product/product-card/hero-image.tsx:102src/app/(app)/(tabs)/shop/index.tsx:109src/shared/components/error/product-list-error-boundary.tsx:32src/shared/components/error/tab-error-boundary.tsx:59src/features/product-list/hooks/use-product-list-state.ts:68src/shared/hooks/use-wishlist-set.ts:124unverifiedProduct list
(app)/(tabs)/shop/product-list/[id]Product list
Category or banner filtered product list that keeps the tab bar
src/app/(app)/(tabs)/shop/product-list/[id].tsxEntry
- Home banner of type product list
- Empty bag Start shopping
- Deep link
Exits
- Cancel → Shop tab
- Product card → product page
- Filter chips → filter sheets
States · 4
src/app/(app)/(tabs)/shop/product-list/[id].tsx:97src/app/(app)/(tabs)/shop/product-list/[id].tsx:151src/app/(app)/(tabs)/shop/product-list/[id].tsx:46src/features/product-list/hooks/use-product-list-state.ts:127Something went wrong
Something went wrong
Not reachable on a device: Needs a render error in Shop
ProductListErrorBoundarySomething went wrong
Fallback for product list render errors with retry and navigation
src/shared/components/error/product-list-error-boundary.tsxEntry
- Shop tab render error
- Product list render error
Exits
- Try Again → retry, up to 3 times
- Go Back → Shop tab
- Go to Home → Home
States · 2
src/shared/components/error/product-list-error-boundary.tsx:32src/shared/components/error/product-list-error-boundary.tsx:203Filter
MainFilterSheetFilter
Filter hub with On Sale switch and rows for sort, category and price
src/features/product-list/components/filter-sheets/main-filter-sheet.tsxEntry
- Main filter button in chips row
Exits
- Row tap → sub sheet, hub reopens after
- Clear all → reset and close
- Done → apply and close
States · 3
src/features/product-list/components/filter-sheets/main-filter-sheet.tsx:73src/features/product-list/components/filter-sheets/main-filter-sheet.tsx:83src/features/product-list/components/filter-sheets/filter-bottom-sheet.tsx:33Sort by
SortFilterSheetSort by
Radio list of five sort options with reset to default
src/features/product-list/components/filter-sheets/sort-filter-sheet.tsxEntry
- Sort chip
- Filter hub Sort by row
Exits
- Done → apply sort
- Swipe → discard
States · 1
src/features/product-list/components/filter-sheets/sort-filter-sheet.tsx:30Category
EnhancedCategoryFilterSheetCategory
Radio list of All Categories plus every collection
src/features/product-list/components/filter-sheets/enhanced-category-filter-sheet.tsxEntry
- Category chip
- Filter hub Category row
Exits
- Done → apply category
- Swipe → discard
States · 2
src/features/product-list/components/filter-sheets/enhanced-category-filter-sheet.tsx:72src/features/product-list/components/filter-sheets/enhanced-category-filter-sheet.tsx:78Price Range
PriceFilterSheetPrice Range
Dual thumb slider between backend price bounds with RM readout
src/features/product-list/components/filter-sheets/price-filter-sheet.tsxEntry
- Price chip
- Filter hub Price row
Exits
- Done → apply range
- Swipe → discard
States · 3
src/features/product-list/hooks/use-product-list-state.ts:247src/features/product-list/hooks/use-product-list-state.ts:228src/features/product-list/components/filter-sheets/price-filter-sheet.tsx:223






























