The official companion repo for Clerk's Expo Quickstart
Clerk + Expo Quickstarts
This repository contains three quickstart apps demonstrating different ways to integrate Clerk authentication with Expo.
| Quickstart | Auth UI | OAuth | Expo Go | Dev Build | |---|---|---|---|---| | JS Only | Custom (React Native) | No | Yes | Yes | | JS + Native Sign-In | Custom (React Native) | Apple, Google | No | Yes | | Native Components | Native (Clerk SDK) | Apple, Google | No | Yes |
Getting Started
Each quickstart is a standalone Expo project in its own directory. To run one:
cd JSOnlyQuickstart # or JSWithNativeSignInQuickstart, NativeComponentQuickstart
cp .env.example .env
Edit .env and add your Clerk publishable key
pnpm install
You can find your publishable key in the Clerk Dashboard.
JS Only
Directory: JSOnlyQuickstart/
The simplest integration. Uses @clerk/expo hooks (useSignIn, useSignUp) with custom React Native sign-in and sign-up screens. Email/password authentication only.
Works with Expo Go -- no native build required.
cd JSOnlyQuickstart
npx expo start
JS + Native Sign-In
Directory: JSWithNativeSignInQuickstart/
Extends the JS-only approach with native OAuth buttons for Apple Sign-In (iOS) and Google Sign-In (iOS + Android). Still uses custom React Native screens for the email/password flow.
Requires a development build (native OAuth modules don't work in Expo Go).
cd JSWithNativeSignInQuickstart
npx expo run:ios # or run:android
Additional environment variables are needed for OAuth -- see JSWithNativeSignInQuickstart/.env.example.
Native Components
Directory: NativeComponentQuickstart/
Uses Clerk's native UI components (AuthView, UserProfileView, UserButton) from @clerk/expo/native. AuthView and UserProfileView render inline in your React Native hierarchy, so the app owns whether they appear in a route, sheet, or Modal. UserButton renders the native avatar button and opens the native user profile when tapped.
Requires a development build.
cd NativeComponentQuickstart
npx expo run:ios # or run:android
Additional environment variables are needed -- see NativeComponentQuickstart/.env.example.
Learn More
Support
Contact or email support@clerk.com us for support.