Customize
Feature flags
Turn product features on or off from a single config file.
All product switches live in src/config/features.ts. Types are in src/config/features.types.ts — keep them in sync if you add a flag.
export const FEATURES = {
googleSignIn: true,
appleSignIn: true,
revenueCat: true,
airbridge: true,
mixpanel: true,
oneSignal: true,
admob: false,
onboarding: true,
personalization: true,
emailVerification: false,
guestMode: true,
autoGuestMode: false,
themeMode: "auto", // "auto" | "light" | "dark"
languages: { en: { ... }, tr: { ... } },
};Gate new UI with these flags. Do not hardcode “is this service on?” elsewhere.
Auth-related
| Flag | Effect |
|---|---|
googleSignIn | Google button on login/signup |
appleSignIn | Apple button (iOS) |
guestMode | Anonymous Firebase sign-in |
autoGuestMode | Skip the auth stack; sign in anonymously after onboarding |
emailVerification | Send a verification email after signup |
Product SDKs
| Flag | Effect |
|---|---|
revenueCat | Purchases, paywalls, subscription context |
oneSignal | Push init and permission prompt |
mixpanel | Product analytics |
airbridge | Attribution and tracking links |
admob | Ads (src/lib/admob.ts) — off by default |
Each SDK also needs its env var in .env.local. A flag without a key logs an error and no-ops.
First-run UX
| Flag | Effect |
|---|---|
onboarding | Intro slides before auth |
personalization | Survey after onboarding |
Theme
auto— user can toggle light/darklight/dark— forced, no toggle
Languages
languages is the source of truth. The first key is the default.
To add a language:
- Add an entry in
FEATURES.languages - Add
src/i18n/locales/<code>.json(copyen.json) - Add
src/i18n/native/<code>.json - Register it in
src/i18n/config.tsand inapp.jsonlocales/CFBundleLocalizations
For new UI strings, add English in en.json first, then the other locale files.