Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
clerk avatar

Clerk Expo

  • 7.2k installs
  • 66 repo stars
  • Updated July 30, 2026
  • clerk/skills

clerk-expo implements Clerk auth in Expo React Native via prebuilt AuthView or custom hook flows using installed @clerk/expo source.

About

The clerk-expo skill implements Clerk authentication in Expo and React Native by inspecting installed @clerk/expo source and mirroring current hook and component behavior. Activate for Expo or React Native projects with app.json, metro.config.js, or @clerk/expo dependency; route away for native iOS Swift, native Android Kotlin, or web-only frameworks. Choose prebuilt AuthView and UserButton or custom hook-driven flows via references/prebuilt.md or references/custom.md without blending unless requested. Gates require confirmed flow type and real publishable key before edits, direct ClerkProvider publishableKey wiring, npx expo install @clerk/expo with config plugin registration, and for custom flows a /v1/environment?_is_native=true call to build an enabled-factor checklist. Prohibits useOAuth in favor of useSSO, requires tokenCache from @clerk/expo/token-cache, and notes native components need development builds not Expo Go. Source-driven templates read node_modules exports and dist types rather than hardcoded examples.

  • Routes to prebuilt or custom flow references; do not blend without explicit approval.
  • Mandatory gates: flow choice, publishable key, config plugin, and environment API for custom flows.
  • Source-driven: inspect node_modules @clerk/expo dist for hooks, components, and exports.
  • Prohibits useOAuth; always use useSSO for OAuth and Enterprise SSO.
  • Native auth requires expo run:ios or run:android; Expo Go unsupported for native components.

Clerk Expo by the numbers

  • 7,168 all-time installs (skills.sh)
  • +524 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #22 of 1,039 Mobile Development skills by installs in the Skillselion catalog
  • Security screen: HIGH risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

clerk-expo capabilities & compatibility

Capabilities
prebuilt authview and userbutton setup · custom hook flow with environment factor checkli · source inspection of @clerk/expo exports and typ · tokencache and config plugin registration · platform gating for native versus web targets
Use cases
frontend · api development
npx skills add https://github.com/clerk/skills --skill clerk-expo

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7.2k
repo stars66
Security audit2 / 3 scanners passed
Last updatedJuly 30, 2026
Repositoryclerk/skills

How do I add Clerk authentication to an Expo React Native app with correct hooks, token cache, and native build requirements?

Implement Clerk auth in Expo React Native with prebuilt AuthView or custom hook flows using source-driven @clerk/expo patterns.

Who is it for?

Mobile developers adding Clerk to Expo apps with source-accurate @clerk/expo patterns.

Skip if: Skip for native iOS Swift, native Android Kotlin, or web-only Next.js without Expo React Native.

When should I use this skill?

User asks for Clerk in Expo, React Native, ClerkProvider, AuthView, or @clerk/expo setup.

What you get

ClerkProvider wired with tokenCache, chosen auth flow implemented, and enabled factors verified against environment API.

  • ClerkProvider root setup
  • Prebuilt or custom auth flow implementation
  • Enabled-factor verification checklist

By the numbers

  • 2 flow types: prebuilt and custom
  • useSSO replaces deprecated useOAuth
  • Custom flow requires environment API call

Files

SKILL.mdMarkdownGitHub ↗

Clerk Expo (React Native)

This skill implements Clerk in Expo / React Native projects by inspecting the installed @clerk/expo package source and mirroring current hook and component behavior.

Activation Rules

Activate this skill when either condition is true:

  • The user explicitly asks for Expo, React Native, @clerk/expo, ClerkProvider, or related Clerk component/hook implementation.
  • The project appears to be Expo/React Native (for example app.json, app.config.js, metro.config.js, expo in package.json, @clerk/expo dependency).

Do not activate this skill when any condition is true:

  • The project is native iOS/Swift (.xcodeproj, .xcworkspace, Package.swift, Swift targets).
  • The project is native Android/Kotlin (build.gradle(.kts) with Android plugins, AndroidManifest.xml, no React Native).
  • The project is a web-only framework (Next.js, Remix, etc.) without Expo/React Native.

If native iOS/Android or web-framework signals are present, route to the matching skill instead of this one.

Relationship to clerk-expo-patterns

This skill covers flow selection and end-to-end auth setup (prebuilt vs custom). The clerk-expo-patterns skill at skills/frameworks/clerk-expo-patterns/ covers Expo-specific recipes (SecureStore token cache, OAuth deep-link configuration, Expo Router protected routes, push notifications with user context). When both could apply, use this skill for the flow decision and overall setup, and load patterns from clerk-expo-patterns for the specific recipe.

What Do You Need?

TaskReference
Prebuilt AuthView / UserButton (fastest)references/prebuilt.md
Custom hook-driven auth flows (full control)references/custom.md

Quick Start

StepAction
1Confirm project type is Expo/React Native (not native iOS/Android or a web-only framework)
2Determine flow type (prebuilt or custom) and load the matching reference file
3Ensure a real Clerk publishable key exists (or ask developer) and wire it directly to <ClerkProvider publishableKey={...}>
4Ensure @clerk/expo is installed; if missing, install latest with npx expo install @clerk/expo
5Inspect installed @clerk/expo source (node_modules/@clerk/expo/dist/ or src/) to understand component/hook behavior for the selected flow
6For custom flows: derive Frontend API URL from publishable key, then call <frontendApiUrl>/v1/environment?_is_native=true and build an internal enabled-factor checklist
7Follow the Expo quickstart (https://clerk.com/docs/getting-started/quickstart, Expo SDK tab) for required setup (config plugin, token cache, native build)
8Implement flow by following only the selected reference checklist

Decision Tree

User asks for Clerk in Expo/React Native
    |
    +-- Native iOS/Android or web-framework project detected?
    |     |
    |     +-- YES -> Do not use this skill; route to matching skill
    |     |
    |     +-- NO -> Continue
    |
    +-- Existing auth UI detected?
    |     |
    |     +-- Prebuilt AuthView/UserButton detected -> Load references/prebuilt.md
    |     |
    |     +-- Custom hook-based flow detected -> Load references/custom.md
    |     |
    |     +-- New implementation -> Ask developer prebuilt/custom, then load matching reference
    |
    +-- Ensure publishable key and direct ClerkProvider wiring
    |
    +-- Ensure @clerk/expo is installed and Expo config plugin is registered
    |
    +-- Inspect installed @clerk/expo source for selected flow
    |
    +-- For custom flows: call /v1/environment?_is_native=true and build enabled-factor checklist
    |
    +-- Verify Expo quickstart prerequisites (token cache, dev build, peer deps)
    |
    +-- Implement using selected flow reference

Flow References

After flow type is known, load exactly one:

  • Prebuilt flow: references/prebuilt.md
  • Custom flow: references/custom.md

Do not blend the two references in a single implementation unless the developer explicitly asks for a hybrid approach.

Interaction Contract

Before any implementation edits, the agent must have both:

  • flow choice: prebuilt or custom
  • a real Clerk publishable key (when setup/configuration is part of the task)

If either value is missing from the user request/context:

  • ask the user for the missing value(s)
  • pause and wait for the answer
  • do not edit files or install dependencies yet

Only skip asking when the user has already explicitly provided the value in this conversation.

Source-Driven Templates

Do not hardcode implementation examples in this skill. Inspect installed @clerk/expo source for the project's installed version before implementing.

Use CaseSource of Truth in Installed Package
Package exports and sub-paths (@clerk/expo/google, /apple, /native, /token-cache, /local-credentials, /resource-cache, /web)node_modules/@clerk/expo/package.json exports field plus compiled output in dist/
Hook signatures and return typesnode_modules/@clerk/expo/dist/*.d.ts plus re-exported types from node_modules/@clerk/react/dist/*.d.ts
Native component props and eventsnode_modules/@clerk/expo/dist/native/* (search AuthView, InlineAuthView, UserButton, UserProfileView)
Sign-in / sign-up status transitionsnode_modules/@clerk/react/dist/ hook source (search useSignIn, useSignUp, status)
SSO and OAuth behaviornode_modules/@clerk/expo/dist/ (search useSSO, startSSOFlow, session_exists, transferable)
Native Google / Apple sign-in pathnode_modules/@clerk/expo/google and /apple modules
Token persistencenode_modules/@clerk/expo/token-cache (backed by expo-secure-store)
Session sync between native SDK and JSnode_modules/@clerk/expo/dist/native/ (search NativeSessionSync, useNativeAuthEvents)
Expo config plugin behaviornode_modules/@clerk/expo/app.plugin.js (search withClerkGoogleSignIn, withClerkAndroidPackaging)
Required Expo setup checklistOfficial Expo quickstart (https://clerk.com/docs/getting-started/quickstart, Expo SDK tab)

Execution Gates (Do Not Skip)

1. No implementation edits before prerequisites

  • Do not edit project files until flow type is confirmed and (when setup is involved) a valid publishable key is available.

2. Missing flow or key must trigger a question

  • If flow choice is missing, explicitly ask: prebuilt views or custom flow.
  • If publishable key is missing/placeholder/invalid for a setup task, explicitly ask for a real key.
  • Do not continue until required answers are provided.

3. Publishable key wiring mode is mandatory

  • Pass the developer-provided publishable key directly to <ClerkProvider publishableKey={key}>.
  • Do not introduce env-var indirection (process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY) unless the developer explicitly asks for it or the project follows the quickstart pattern.

4. Package install policy is mandatory

  • If @clerk/expo is missing, install with npx expo install @clerk/expo.
  • Install matching peer deps for the selected strategies (see prebuilt.md / custom.md for the per-flow list).
  • Register the Expo config plugin in app.json / app.config.js: { "plugins": ["@clerk/expo"] }.

5. Custom-flow environment call is mandatory

  • For custom flows: derive Frontend API URL from publishable key, fetch /v1/environment?_is_native=true, and use the response to determine enabled factors/strategies.
  • Build an internal enabled-factor checklist; cover all enabled factors unless the developer explicitly narrows scope.
  • Do not skip the environment call. Do not assume strategy coverage from convention.

6. Reference-file discipline is mandatory

  • Once flow is selected, follow only that flow reference file for implementation and verification.

7. Hook-source-first discipline for custom flows

  • Inspect installed @clerk/expo and @clerk/react hook source for response/error handling before deciding flow transitions.
  • Mirror status-driven transitions from hook source rather than from UI heuristics or assumptions.

8. Combined sign-in-or-up default

  • Implement one combined sign-in-or-up flow by default; do not split into separate sign-in / sign-up flows unless the developer explicitly requests separation.

9. Deprecated hook prohibition

  • Never use useOAuth(). Always use useSSO() for OAuth and Enterprise SSO.

10. Platform / build gating

  • Native components and native hooks (useSignInWithGoogle, useSignInWithApple, useNativeSession, useUserProfileModal, useLocalCredentials) require an iOS/Android development build, not Expo Go and not web.
  • For web targets, use @clerk/expo/web exports.
  • Always note platform availability before recommending native-only features.

11. Token cache discipline

  • Use tokenCache from @clerk/expo/token-cache for persistent sessions; do not use expo-secure-store directly for token storage.

Workflow

1. Detect Expo/React Native vs native iOS/Android vs web framework. 2. If flow type is not explicitly provided, ask user for prebuilt or custom. 3. If publishable key is not explicitly provided for a setup task, ask user for it. 4. Wait for required answers before changing files. 5. Load the matching flow reference file. 6. Ensure <ClerkProvider> is at the app root with the publishable key wired directly and tokenCache from @clerk/expo/token-cache. 7. Ensure @clerk/expo is installed and the Expo config plugin is registered. Install peer deps for selected strategies. 8. Inspect installed @clerk/expo source for components/hooks relevant to the selected flow. 9. For custom flows: derive Frontend API URL from publishable key, call /v1/environment?_is_native=true, and build an internal enabled-factor checklist. 10. Verify Expo quickstart prerequisites (config plugin, token cache, native development build) and apply any missing required setup. 11. Implement using selected reference checklist. 12. For custom flows: verify implemented strategy coverage against the environment-derived checklist; close any missing enabled factor unless explicitly scoped out. 13. Verify using selected reference checklist plus shared gates.

Common Pitfalls

LevelIssuePrevention
CRITICALNot asking for missing flow choice before implementationAsk for prebuilt vs custom and wait before edits
CRITICALNot asking for missing publishable key on setup tasksAsk for key and wait before edits
CRITICALWiring publishable key via env-var indirection by defaultPass key directly to <ClerkProvider> unless developer requests otherwise
CRITICALSkipping /v1/environment?_is_native=true for custom flowsCall environment endpoint and build enabled-factor checklist before implementing
CRITICALSplitting sign-in / sign-up by defaultImplement one combined sign-in-or-up flow unless developer explicitly requests separation
CRITICALUsing useOAuth() (deprecated)Always use useSSO()
CRITICALMixing native components with custom hook flows for the same auth stepPick one flow per step; only blend with explicit developer approval
CRITICALSkipping native development build for native components/hooksRequire expo run:ios / expo run:android; do not target Expo Go for native features
HIGHUsing expo-secure-store directly for token cachingUse tokenCache from @clerk/expo/token-cache
HIGHCalling WebBrowser.maybeCompleteAuthSession() manuallyClerkProvider handles it; do not duplicate
HIGHCalling setActive() after native component authNative components sync session automatically
HIGHHardcoding OAuth provider listsBuild provider lists from environment-enabled providers
HIGHRecommending native-only hooks without web/Expo Go fallbackNote platform availability and provide useSSO() fallback where needed
HIGHUsing this skill for native iOS/Android or web-only framework projectsDetect and route away to clerk-swift / clerk-android / web-framework skills
HIGHUsing yalc or pnpm link for local @clerk/expo developmentUse Verdaccio or pkg.pr.new

See Also

  • clerk skill for top-level Clerk routing
  • clerk-expo-patterns skill (skills/frameworks/clerk-expo-patterns/) for Expo-specific recipes (SecureStore token cache, OAuth deep links, Expo Router protected routes, push notifications)
  • clerk-swift skill for native iOS implementation
  • clerk-android skill for native Android implementation
  • installed @clerk/expo package source (node_modules/@clerk/expo/)
  • https://github.com/clerk/javascript/tree/main/packages/expo
  • https://github.com/clerk/clerk-expo-quickstart
  • https://clerk.com/docs/getting-started/quickstart (Expo SDK tab)
  • https://clerk.com/docs/reference/expo/overview

Related skills

How it compares

clerk-expo covers Expo React Native Clerk auth, not native Swift Kotlin or web-only Clerk skills.

FAQ

Who is clerk-expo for?

Expo React Native developers implementing Clerk auth with prebuilt or custom flows.

When should I use clerk-expo?

When wiring ClerkProvider, token cache, OAuth via useSSO, or native Google Apple sign-in in Expo.

Is clerk-expo safe to install?

Review the Security Audits panel; publishable keys must be wired directly without committing secrets.

Mobile Developmentfrontendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.