Getting started

Overview

What the Starter Kit is, the stack it ships with, and how the project is laid out.

The Starter Kit is a complete Expo app, not a UI gallery. Auth, paywalls, push, analytics, and onboarding are already wired. You rename it, plug in your keys, and ship.

Stack

LayerWhat we use
AppExpo ~55, React Native 0.83, TypeScript, Expo Router
UIHeroUI Native, Uniwind (Tailwind v4), Reanimated 4
Auth & dataFirebase Auth, Firestore, Cloud Functions
PaymentsRevenueCat (react-native-purchases + paywalls)
PushOneSignal
AnalyticsMixpanel, Firebase Analytics, Crashlytics
AttributionAirbridge
AdsGoogle AdMob (off by default)

Native config lives in app.json. This is an Expo project — prefer app.json / plugins over editing ios/ and android/ by hand.

Project layout

src/
├── app/              # Expo Router screens
│   ├── (auth)/       # login, signup, forgot password
│   ├── (tabs)/       # home, ask-ai, profile
│   ├── index.tsx     # onboarding → personalization → auth gate
│   └── _layout.tsx   # providers
├── components/
├── config/           # features.ts, firebase.ts, personalization.ts
├── contexts/         # auth, theme, language, subscription, onboarding
├── i18n/
│   ├── locales/      # in-app UI strings
│   └── native/       # iOS/Android display name and permission text
├── lib/              # RevenueCat, OneSignal, Mixpanel, Airbridge, AdMob
└── hooks/

First-launch flow

  1. Onboarding slides (optional, FEATURES.onboarding)
  2. Personalization survey (optional, FEATURES.personalization)
  3. Auth (email, Google, Apple, guest) — or skip it with autoGuestMode
  4. Main tabs

Every product surface is gated from src/config/features.ts. Turn a flag off and the related UI and SDK init are skipped.

On this page