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 -> operations

The current catalog has 18 entries:

CategoryEntries
FoundationTheming, Onboarding, Haptics
AuthenticationSupabase Auth, Biometric Lock, Account Security
Backend & DataTodos, Storage Upload
CommercePaywall, Redeem Code, Manage Subscription
GrowthDeep Links, Referrals, Push Notifications, App Rating
OperationsPermissions, 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

StatusMeaning
liveDemoOpens a working route and hides the badge because the chevron already signals action
configuredDriven by build or env configuration, such as the version gate
deviceOnlyNeeds physical device support, such as biometrics
requiresKeysNeeds 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

RouteDemonstrates
/showcase/themingTheme toggle, language switch, token preview, and sample controls
/showcase/hapticsImpact, notification, and selection haptic helpers
/showcase/authRead-only Supabase session inspector
/showcase/deep-linksAllowed in-app links, createAppLink(), URL resolution, and openDeepLink()
/showcase/ratingThe 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.

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 Showcase routes

Delete:

app/(tabs)/showcase.tsx
app/showcase/

Delete the catalog model

Delete:

lib/showcase/

Then run a grep to confirm no imports remain:

rg "showcase|lib/showcase" app components lib

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.tsx
  • app/upload-sample.tsx
  • app/permissions.tsx
  • app/refer.tsx
  • app/paywall.tsx
  • app/redeem-code.tsx
  • app/manage-subscription.tsx
  • app/notifications.tsx
  • app/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.

On this page