clerk-expo

Implement Clerk authentication in Expo and React Native apps using @clerk/expo.

Updated Apr 19, 2026
One-click install
npx skills add https://github.com/divinaarmuela/Content --skill clerk-expo-divinaarmuela
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: clerk-expo
Source: https://github.com/divinaarmuela/Content/tree/main/.claude/skills/clerk-expo
Command: npx skills add https://github.com/divinaarmuela/Content --skill clerk-expo-divinaarmuela

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @clerk/expo, expo-secure-store, and includes references (resource) components.

What problem does it solve? Adding authentication to Expo and React Native apps involves many failure-prone details: token persistence, dashboard configuration, deprecated APIs, and build-type constraints. This Skill guides the implementation of Clerk auth with verified, current patterns for @clerk/expo v3.4+. ## Core Features & Use Cases - Prebuilt native components: Set up AuthView, UserButton, and UserProfileView from @clerk/expo/native for development builds, with theming via the config plugin. - Custom auth flows: Build email/password, SMS/phone OTP, MFA/TOTP, forgot-password, and combined sign-in-or-up flows using the current method-based useSignIn/useSignUp API. - Social and native sign-in: Implement browser SSO with useSSO or fully native Google/Apple sign-in hooks, plus protected routes with Expo Router guards, biometrics, passkeys, and push notifications. - Use Case: A developer asks to add phone SMS auth to an Expo app; the Skill verifies the factor is enabled in the Clerk Dashboard, then generates sign-up and sign-in screens using signUp.verifications.sendPhoneCode and signIn.phoneCode.sendCode with finalize() on completion. ## Quick Start Add Clerk authentication to my Expo app with a sign-in screen and persistent sessions across restarts.

Frequently Asked Questions about clerk-expo

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add Clerk authentication to an Expo app?

Install @clerk/expo and expo-secure-store with npx expo install, set EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY in .env, and wrap your root layout in ClerkProvider with tokenCache. Then use prebuilt AuthView components on a dev build or custom flows with useSignIn/useSignUp.

How do I add phone SMS authentication with Clerk in React Native?

Enable phone number and SMS verification in the Clerk Dashboard first. For sign-up use signUp.create({ phoneNumber }) then signUp.verifications.sendPhoneCode() and verifyPhoneCode({ code }); for sign-in use signIn.phoneCode.sendCode() and verifyCode({ code }), then call finalize() when status is complete.

Does Clerk Expo work with Expo Go?

Custom flows with useSignIn/useSignUp and browser SSO via useSSO work in Expo Go. Native components (AuthView, UserButton), native Google/Apple sign-in hooks, biometrics, and passkeys require a development build created with npx expo run:ios or run:android.

Why does my Clerk session not persist after restarting my Expo app?

Sessions are lost without a token cache. Pass tokenCache from @clerk/expo/token-cache to ClerkProvider, which stores tokens in the device keychain via expo-secure-store. Never use AsyncStorage or call expo-secure-store directly for session tokens.

Should I use useSSO or useOAuth for Google sign-in in Expo?

Use useSSO; useOAuth is deprecated. Call startSSOFlow({ strategy: 'oauth_google' }) and set the session with setActive({ session: createdSessionId }). For a fully native sheet on dev builds, use useSignInWithGoogle from @clerk/expo/google instead.

How do I protect Expo Router routes for signed-in users only?

Add a layout guard in the group's _layout.tsx using useAuth from @clerk/expo. Check isLoaded first and return null while loading, then return a Redirect to the sign-in screen when isSignedIn is false. Use the Redirect component rather than router.push inside effects.