Installation

PreviousNext

Pick the stack you are building on and follow the guide for it — plain Expo, or Expo with a Convex, Supabase or Firebase backend, with or without authentication.

Choose the setup that matches what you are building.

Which one should I pick?

You want to…Start with
Build a UI and ship it, no serverExpo
Store data and sync it live across devices, no accountsConvex, Supabase or Firebase
Have users sign in on day oneConvex + Auth, Supabase + Auth or Firebase + Auth

Convex, Supabase or Firebase?

All three are real-time backends and all three starters give you the same app. They differ in where your logic lives and how authorization works.

ConvexSupabaseFirebase
Data modelDocuments, schema in TypeScriptPostgres, schema in SQL migrationsDocuments, no schema
QueriesTypeScript functions on the serverDirect from the client, plus edge functionsDirect from the client
AuthorizationChecked inside each functionRow level security, enforced by PostgresSecurity rules, evaluated against the query
RealtimeEvery query is a live subscriptionOpt in per tableEvery listener is live
SearchBuilt-in full-text indexilike, or a tsvector columnWhole-word tokens, or an extension
Offline cacheIn-memoryIn-memoryIn-memory (no IndexedDB on RN)
Local devCloud dev deploymentCloud, or the whole stack in DockerEmulator suite (needs a JDK)
Reach for it whenYou want end-to-end TypeScript and no SQLYou want Postgres, SQL and a relational schemaYou are already in the Google ecosystem

The Firebase auth starter also has no email OTP and no GitHub provider, and its Google and Apple buttons need a development build. The details are here.

Nothing in the component library depends on either, so you can start on the plain Expo path and add a backend later.

Existing project

Already have an Expo app? Don't run init over it. The manual guide adds the theme system and hooks to a project you already have, then leaves you to pull in components one at a time with bna-ui add.