Production-ready Expo + React Native + Firebase starter for shipping real apps — not demos.
Auth (email, Google, Apple, SMS OTP, Android PNV), Firestore with offline persistence, Storage, Cloud Functions, App Check, push notifications, EAS Build & Update, React Compiler, and agent-friendly skills/docs.
Requires a development build. React Native Firebase does not run in Expo Go.
npx create-expo-app@latest my-app --template https://github.com/adhhamdev/expo-firebase-template
cd my-app && bun install
bun run skills:install # Expo + Firebase + Vercel RN + Callstack agent skillsAlso: bun create expo, pnpm / yarn create expo-app, Use this template, or gh repo create … --template adhhamdev/expo-firebase-template.
bun install
bun run skills:install
cp .env.example .env
# 1) Set identity in app.config.ts (APP_NAME, PACKAGE_NAME, …)
# 2) Same PACKAGE_NAME in scripts/sync-firebase-native-configs.mjs
firebase use <your-project-id>
bun run firebase:sync # writes ./google-services.json + ./GoogleService-Info.plist
bun run signing:fingerprints # add SHA-1 / SHA-256 in Firebase Console, then sync again
eas init # paste project ID into app.config.ts
bun run android # or: ios · build:dev:androidFull checklist: docs/SETUP.md · Agent skills: docs/AGENTS_SKILLS.md
| One app identity | Single package / bundle ID for every build profile |
| Auth that ships | Email · Google One Tap · Apple · SMS · Phone Number Verification |
| Firebase done right | Native RNFB, offline Firestore, App Check, locked-down rules |
| Delivery | EAS Build, Update channels, secure Google Services via EAS file env |
| Low manual setup | Scripts for native config sync and Android SHA fingerprints |
| Agent-ready | Official Expo, Firebase, Vercel RN, Callstack skills via skills:install |
| Secure defaults | Strong .gitignore / .easignore, no secrets in git |
| Area | Choice |
|---|---|
| App | Expo SDK 57 · React Native · React 19 · TypeScript |
| Navigation | Expo Router (typed routes) |
| Backend | @react-native-firebase/* + Cloud Functions |
| Data | TanStack Query · Zod · offline Firestore |
| Auth | Nitro Google Sign-In · Apple · Phone SMS/PNV |
| Security | App Check (debug / Play Integrity / App Attest) |
| Push | expo-notifications (channels, categories, token) |
| Delivery | EAS Build + Update |
| Tooling | Bun-first · ESLint · Jest · React Compiler |
| Guide | |
|---|---|
| Setup from scratch | Clone → Firebase → EAS → first run |
| Signing & SHA fingerprints | Debug, EAS, Play App Signing |
| Google Services | Root google-services.json + plist |
| Auth / OAuth / PNV | Providers and lifecycle helpers |
| App Check & Play ADI | Debug vs production providers |
| Notifications | Channels, categories, tokens |
| Security | Secrets, rules, baseline |
| Agent skills & MCP | Expo · Firebase · Vercel · Callstack |
| Agents | Rules for coding agents |
| Contributing | PRs and guidelines |
| Command | Purpose |
|---|---|
bun start / start:dev-client |
Metro |
bun run android / ios |
Local native run |
bun run build:dev:* / preview:* / prod:* |
EAS builds |
bun run update:dev / update:preview |
EAS Update |
bun run firebase:sync / firebase:sync:eas |
Native Google Services (project root) |
bun run firebase:deploy |
Rules, indexes, storage, functions |
bun run signing:fingerprints |
Print Android SHA-1 / SHA-256 |
bun run skills:install |
Install/refresh agent skills |
bun run lint / typecheck / test |
Quality |
src/app/ # Expo Router screens
src/features/ # Domain modules (auth lifecycle, …)
src/lib/firebase/ # Auth, App Check, Firestore, Storage, callables
src/lib/notifications/
src/components/ui/
src/providers/
functions/
google-services.json # Android (gitignored; from firebase:sync)
GoogleService-Info.plist # iOS (gitignored; from firebase:sync)
docs/
docs/assets/ # README brand marks (Expo, Firebase)
scripts/
.agents/skills/ # After: bun run skills:install
Path alias: @/* → ./src/*.
Expo® and Firebase™ logos are trademarks of their respective owners and are used here only to identify the technologies this template integrates with.
- Issues: GitHub Issues
- Author: adhham.dev
If this template saves you time, star the repo — it helps others find it.