No faceted filters for price range, attributes, color, size, brand, or any product property. The RefinementList component only contains sorting.
Search
No search functionality. No search bar, no search page, no search API integration. @types/react-instantsearch-dom in devDependencies is a dead remnant.
None. No Apple Pay, Google Pay, or Payment Request Button.
Image Gallery
Vertical stack only. All images stacked with gap-y-4. No carousel, lightbox, zoom, or thumbnail navigation. 42 lines.
Customer Accounts
Feature
Status
Login
Yes
Register
Yes
Order history
Yes
Saved addresses
Yes (add/edit/delete)
Profile editing
Yes
Password reset
No
Order transfer
Yes
SEO
Feature
Status
Page-level title/description
Yes
Open Graph tags
Partial (PDP only)
JSON-LD structured data
No
Sitemap
Partial (next-sitemap config exists)
Canonical URLs
Category pages only
generateStaticParams
Yes
Theming / Branding
Tailwind CSS 3 + @medusajs/ui-preset
@medusajs/ui component library
Custom grey scale and typography in globals.css
Reskin difficulty: Moderate. Need to understand and override @medusajs/ui-preset tokens. Internal @medusajs/ui component styles are harder to customize.
API Integration
SDK: @medusajs/js-sdk connecting to backend at MEDUSA_BACKEND_URL
API calls: Server Actions in src/lib/data/ (cart.ts, customer.ts, products.ts, etc.)
Auth: JWT in httpOnly cookie (_medusa_jwt), 7-day expiry
Caching: force-cache with tag-based revalidation, per-user cache scoping
Backend Extensibility (Medusa v2)
All custom logic runs in-process with the Medusa server:
Mechanism
Purpose
Location
Modules
New domains/data models/services
src/modules/
Workflows
Complex multi-step business logic
src/workflows/
Subscribers
React to events (side effects)
src/subscribers/
API Routes
Custom REST endpoints
src/api/
Workflow Hooks
Hook into existing workflows
src/workflows/hooks/
Loaders
Run logic on startup
src/loaders/
Links
Relationships between modules
src/links/
No separate services required for custom integrations.