Showcase
Understand and remove the showcase demo catalog.
Showcase is a removable catalog of what the starter can do. It is useful while you evaluate the template or onboard your team, but it is intentionally isolated so your product can delete it without pulling out auth, storage, purchases, or other core services.
What it provides
app/(tabs)/showcase.tsx renders a grouped catalog from
CAPABILITY_CATALOG. Rows with an href open a real route. Informational rows
have no chevron.
Catalog model
The model has six categories:
foundation -> authentication -> backendData -> commerce -> growth -> operationsThe current catalog has 18 entries:
| Category | Entries |
|---|---|
| Foundation | Theming, Onboarding, Haptics |
| Authentication | Supabase Auth, Biometric Lock, Account Security |
| Backend & Data | Todos, Storage Upload |
| Commerce | Paywall, Redeem Code, Manage Subscription |
| Growth | Deep Links, Referrals, Push Notifications, App Rating |
| Operations | Permissions, Update Gate, Observability |
The Component gallery is not a Showcase row. It is its own tab backed by
lib/component/component-catalog.ts.
Status labels
| Status | Meaning |
|---|---|
liveDemo | Opens a working route and hides the badge because the chevron already signals action |
configured | Driven by build or env configuration, such as the version gate |
deviceOnly | Needs physical device support, such as biometrics |
requiresKeys | Needs provider keys, such as RevenueCat, PostHog, or Sentry |
These labels are display metadata only. Feature gates still live in the owning providers and screens.
Demo routes
| Route | Demonstrates |
|---|---|
/showcase/theming | Theme toggle, language switch, token preview, and sample controls |
/showcase/haptics | Impact, notification, and selection haptic helpers |
/showcase/auth | Read-only Supabase session inspector |
/showcase/deep-links | Allowed in-app links, createAppLink(), URL resolution, and openDeepLink() |
/showcase/rating | The in-app review trigger and rating guardrails |
Other catalog rows launch the real app screens, such as /todos,
/upload-sample, /paywall, /redeem-code, /manage-subscription,
/notifications, /permissions, and /account-security.
Dependency rule
Core app code should not import from lib/showcase. In the current template,
the only importers are the Showcase tab itself. Home deliberately keeps a local
copy of the six category chips, then routes users to /showcase; it does not
consume the catalog data model.
That one-way dependency makes removal predictable.
Remove Showcase
Remove the tab
Delete the showcase <Tabs.Screen> from app/(tabs)/_layout.tsx, and remove
the showcase item from the side drawer's Discover section.
Remove Home links
In app/(tabs)/index.tsx, remove the "What's inside" category section or change
each tile to open your own product routes. Remove openShowcase() if nothing
else uses it.
Delete the catalog model
Delete:
lib/showcase/Then run a grep to confirm no imports remain:
rg "showcase|lib/showcase" app components libClean deep links and strings
Remove /showcase and /showcase/* allow-list entries from
lib/deep-links.ts if you do not want old links to resolve. Remove unused
tabs.showcase, capabilityCategory, capabilityStatus, and showcase.*
strings from both lib/i18n/en.json and lib/i18n/zh.json.
Keep the real features
Removing Showcase does not require deleting:
app/todos.tsxapp/upload-sample.tsxapp/permissions.tsxapp/refer.tsxapp/paywall.tsxapp/redeem-code.tsxapp/manage-subscription.tsxapp/notifications.tsxapp/account-security.tsx- the Component tab
Those are app surfaces or examples outside the Showcase folder. Delete them only when your product no longer needs the feature.
