Email (Password) Auth

Disable email confirmations in Supabase:
  1. Auth → Settings → Disable “Enable email confirmations”
  2. Save
Ready-made flows: sign up, sign in, reset password, auto login on restart.

Google Sign-In

  1. Google Cloud Console → Enable Google Sign-In API
  2. Create OAuth Clients:
    • Web: set redirect https://your-project.supabase.co/auth/v1/callback
    • iOS: use your bundle id com.yourcompany.yourapp
  3. Supabase → Auth → Providers → Google → add Web Client ID + Secret
  4. App config:
// app.config.js
export default {
  expo: {
    plugins: [
      [
        "@react-native-google-signin/google-signin",
        { iosUrlScheme: "com.googleusercontent.apps.YOUR_IOS_CLIENT_ID" }
      ]
    ]
  }
}
EXPO_PUBLIC_GOOGLE_CLIENT_ID=YOUR_IOS_CLIENT_ID.apps.googleusercontent.com

Apple Sign-In (iOS)

Prereqs: Apple Developer account + App registered.
  1. Apple Developer → Identifiers → Enable “Sign In with Apple”
  2. Supabase → Auth → Providers → Apple
    • Services ID = your bundle id (e.g. com.yourcompany.yourapp)
    • Generate Client Secret JWT via Apple Keygen
    • Save in Supabase and also in supabase/functions/.env as:
SUPABASE_AUTH_EXTERNAL_APPLE_SECRET=your_jwt_token
  1. App config:
export default {
  expo: {
    ios: { bundleIdentifier: "com.yourcompany.yourapp" },
    plugins: ["expo-apple-authentication"]
  }
}
Apple JWT tokens expire every ~6 months. Set a reminder to rotate.