Framework guides
Use Da8a with React Native and Expo
Mobile apps use the same supabase-js client. Store the session with AsyncStorage so users stay signed in between launches.
Before you start
- A Da8a project (the Overview page shows the project URL and anon key)
- A table to query; the quickstart creates a
todostable with Row Level Security
Install the client
$ npx expo install @supabase/supabase-js @react-native-async-storage/async-storageCreate the client
import AsyncStorage from '@react-native-async-storage/async-storage'
import { createClient } from '@supabase/supabase-js'
export const supabase = createClient(
process.env.EXPO_PUBLIC_SUPABASE_URL!,
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY!,
{ auth: { storage: AsyncStorage, persistSession: true, detectSessionInUrl: false } },
)The anon key is safe in client code as long as Row Level Security is on for your tables. Never ship the service key to the browser: it bypasses RLS.
Host it
Deploy the frontend on Chapong and link it to the project: the URL, anon key and auth redirect URLs are kept in sync for you, including on preview deploys.
Questions
Do OAuth sign-ins work on mobile?
Add your app’s deep-link URL to the redirect allow-list under Auth, then use signInWithOAuth with that redirect.
Related
- React (Vite) with a Supabase-compatible backend
- Next.js with a Supabase-compatible backend
- Vue and Nuxt with a Supabase-compatible backend
- SvelteKit with a Supabase-compatible backend
- Quickstart
- supabase-js client docs
Updated 2026-10-23.