feat(expo): Implement Google Sign-In support for Android and iOS
Description
This PR implements native Google Sign-In support for Expo iOS and Android apps using the @react-native-google-signin/google-signin library. This provides a seamless native authentication experience for users signing in with their Google accounts.
What's New
- New Hook:
useSignInWithGoogle()- Provides native Google Sign-In functionality for iOS and Android- Platform-specific implementations for iOS (
useSignInWithGoogle.ios.ts) and Android (useSignInWithGoogle.android.ts) - Automatic handling of sign-in/sign-up transfer flow
- Graceful error handling including user cancellation detection
- Support for custom
unsafeMetadataduring authentication
- Platform-specific implementations for iOS (
Key Features
- Native UI: Uses platform-native Google Sign-In UI instead of web-based OAuth flow
- Automatic Flow Detection: Seamlessly handles both new user sign-up and existing user sign-in
- Error Handling: Comprehensive error handling for:
- Missing credentials
- User cancellation (codes
SIGN_IN_CANCELLEDand-5) - Play Services availability (Android)
- Environment Variable Support: Reads credentials from both Expo config and environment variables
- Full Test Coverage: Complete unit tests with 100% coverage for the new hook
Files Changed
packages/expo/src/hooks/useSignInWithGoogle.ts- Cross-platform stub with helpful error messagepackages/expo/src/hooks/useSignInWithGoogle.ios.ts- iOS-specific implementationpackages/expo/src/hooks/useSignInWithGoogle.android.ts- Android-specific implementationpackages/expo/src/hooks/__tests__/useSignInWithGoogle.test.ts- Comprehensive unit testspackages/expo/src/hooks/index.ts- Export new hookpackages/expo/package.json- Add optional peer dependencypackages/expo/vitest.setup.mts- Add test mocks for expo-modules-core
Implementation Details
iOS Implementation:
- Uses
expo-apple-authenticationfor native Sign-In - Supports
oauth_token_applestrategy - Handles identity token exchange
Android Implementation:
- Uses
@react-native-google-signin/google-signinlibrary - Configures with Web Client ID and Android Client ID
- Checks Google Play Services availability
- Handles
google_one_tapstrategy with ID token
Both implementations:
- Automatically handle transfer flow when user doesn't exist
- Return consistent API:
{ createdSessionId, setActive, signIn, signUp } - Support optional
unsafeMetadataparameter
Breaking Changes
None - this is a new feature.
Test Plan
- Unit tests pass (
pnpm test --filter @clerk/clerk-expo) - Build succeeds (
pnpm build) - All 9 test cases pass including:
- Successful sign-in for existing users
- Transfer flow for new users
- User cancellation handling (both error codes)
- Play Services availability check (Android)
- Missing ID token validation
- Missing credentials validation
- Clerk not loaded handling
Documentation
Related documentation PR: [Link to clerk-docs PR]
Checklist
- [x]
pnpm testruns as expected. - [x]
pnpm buildruns as expected. - [x] JSDoc comments have been added for the new hook and all exported functions
- [x] Documentation has been created (see related PR in clerk-docs)
Type of change
- [x] 🌟 New feature
Summary by CodeRabbit
-
New Features
- Native Google Sign-In (One Tap) support for iOS and Android: configure, sign-in, create account, explicit sign-in, sign-out; iOS plugin can auto-configure URL scheme.
- Cross-platform useSignInWithGoogle hook with shared flow and platform-specific adapters.
- Public JS types, helpers and Expo module metadata for One Tap integration.
-
Tests
- Unit tests covering Android sign-in hook flows.
-
Chores
- Package metadata, build config and packaging updates; CocoaPods spec and Android build config added; gitignore updated.
✏️ Tip: You can customize this high-level summary in your review settings.
🦋 Changeset detected
Latest commit: b192d3134d8f7ffd005063eecedcaaa1b546e8b5
The changes in this PR will be included in the next version bump.
This PR includes changesets to release 1 package
| Name | Type |
|---|---|
| @clerk/expo | Minor |
Not sure what this means? Click here to learn what changesets are.
Click here if you're a maintainer who wants to add another changeset to this PR
The latest updates on your projects. Learn more about Vercel for GitHub.
| Project | Deployment | Review | Updated (UTC) |
|---|---|---|---|
| clerk-js-sandbox | Preview, Comment | Dec 18, 2025 6:36pm |
📝 Walkthrough
Walkthrough
Adds native Google Sign-In support for Expo across Android and iOS. Android: new Gradle build script, minimal AndroidManifest, and a Kotlin Expo module using Credential Manager. iOS: Swift Expo module and a CocoaPods podspec. Adds a TypeScript bridge (ClerkGoogleOneTapSignIn), shared and platform-specific useSignInWithGoogle hooks, types, and unit tests. Introduces an Expo config plugin to inject an iOS URL scheme, updates package.json exports/files/peer‑dev deps, and adds expo-module.config.json and related packaging files.
Pre-merge checks
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | ⚠️ Warning | Docstring coverage is 52.38% which is insufficient. The required threshold is 80.00%. | You can run @coderabbitai generate docstrings to improve docstring coverage. |
✅ Passed checks (2 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | The title accurately describes the main objective: implementing native Google Sign-In support for both Android and iOS platforms in the Expo package. It is specific, concise, and directly reflects the primary changes in the changeset. |
📜 Recent review details
Configuration used: Repository YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📥 Commits
Reviewing files that changed from the base of the PR and between 3514955402938f638855add5d8327d3be7642ac1 and b192d3134d8f7ffd005063eecedcaaa1b546e8b5.
📒 Files selected for processing (1)
packages/expo/package.json(4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/expo/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
- GitHub Check: Static analysis
- GitHub Check: Publish with pkg-pr-new
- GitHub Check: Unit Tests (**)
- GitHub Check: Integration Tests (tanstack-react-start, chrome)
- GitHub Check: Integration Tests (nextjs, chrome, 15)
- GitHub Check: Integration Tests (custom, chrome)
- GitHub Check: Integration Tests (nextjs, chrome, 16)
- GitHub Check: Integration Tests (machine, chrome, RQ)
- GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
- GitHub Check: Integration Tests (quickstart, chrome, 15)
- GitHub Check: Integration Tests (billing, chrome)
- GitHub Check: Integration Tests (quickstart, chrome, 16)
- GitHub Check: Integration Tests (react-router, chrome)
- GitHub Check: Integration Tests (billing, chrome, RQ)
- GitHub Check: Integration Tests (machine, chrome)
- GitHub Check: Integration Tests (vue, chrome)
- GitHub Check: Integration Tests (sessions, chrome)
- GitHub Check: Integration Tests (astro, chrome)
- GitHub Check: Integration Tests (localhost, chrome)
- GitHub Check: Integration Tests (handshake, chrome)
- GitHub Check: Integration Tests (nuxt, chrome)
- GitHub Check: Integration Tests (generic, chrome)
- GitHub Check: Integration Tests (handshake:staging, chrome)
- GitHub Check: Integration Tests (express, chrome)
- GitHub Check: Integration Tests (sessions:staging, chrome)
- GitHub Check: Integration Tests (ap-flows, chrome)
- GitHub Check: semgrep-cloud-platform/scan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
@clerk/agent-toolkit
npm i https://pkg.pr.new/@clerk/agent-toolkit@7208
@clerk/astro
npm i https://pkg.pr.new/@clerk/astro@7208
@clerk/backend
npm i https://pkg.pr.new/@clerk/backend@7208
@clerk/chrome-extension
npm i https://pkg.pr.new/@clerk/chrome-extension@7208
@clerk/clerk-js
npm i https://pkg.pr.new/@clerk/clerk-js@7208
@clerk/dev-cli
npm i https://pkg.pr.new/@clerk/dev-cli@7208
@clerk/expo
npm i https://pkg.pr.new/@clerk/expo@7208
@clerk/expo-passkeys
npm i https://pkg.pr.new/@clerk/expo-passkeys@7208
@clerk/express
npm i https://pkg.pr.new/@clerk/express@7208
@clerk/fastify
npm i https://pkg.pr.new/@clerk/fastify@7208
@clerk/localizations
npm i https://pkg.pr.new/@clerk/localizations@7208
@clerk/nextjs
npm i https://pkg.pr.new/@clerk/nextjs@7208
@clerk/nuxt
npm i https://pkg.pr.new/@clerk/nuxt@7208
@clerk/react
npm i https://pkg.pr.new/@clerk/react@7208
@clerk/react-router
npm i https://pkg.pr.new/@clerk/react-router@7208
@clerk/shared
npm i https://pkg.pr.new/@clerk/shared@7208
@clerk/tanstack-react-start
npm i https://pkg.pr.new/@clerk/tanstack-react-start@7208
@clerk/testing
npm i https://pkg.pr.new/@clerk/testing@7208
@clerk/ui
npm i https://pkg.pr.new/@clerk/ui@7208
@clerk/upgrade
npm i https://pkg.pr.new/@clerk/upgrade@7208
@clerk/vue
npm i https://pkg.pr.new/@clerk/vue@7208
commit: b192d31
!snapshot
!snapshot
Hey @chriscanin - the snapshot version command generated the following package versions:
| Package | Version |
|---|---|
| @clerk/agent-toolkit | 0.2.6-snapshot.v20251205170211 |
| @clerk/astro | 2.16.4-snapshot.v20251205170211 |
| @clerk/backend | 2.25.0-snapshot.v20251205170211 |
| @clerk/chrome-extension | 2.8.7-snapshot.v20251205170211 |
| @clerk/clerk-js | 5.112.0-snapshot.v20251205170211 |
| @clerk/elements | 0.23.87-snapshot.v20251205170211 |
| @clerk/clerk-expo | 2.20.0-snapshot.v20251205170211 |
| @clerk/expo-passkeys | 0.4.23-snapshot.v20251205170211 |
| @clerk/express | 1.7.54-snapshot.v20251205170211 |
| @clerk/fastify | 2.6.6-snapshot.v20251205170211 |
| @clerk/localizations | 3.29.0-snapshot.v20251205170211 |
| @clerk/nextjs | 6.35.6-snapshot.v20251205170211 |
| @clerk/nuxt | 1.13.4-snapshot.v20251205170211 |
| @clerk/clerk-react | 5.57.1-snapshot.v20251205170211 |
| @clerk/react-router | 2.3.1-snapshot.v20251205170211 |
| @clerk/remix | 4.13.21-snapshot.v20251205170211 |
| @clerk/shared | 3.37.0-snapshot.v20251205170211 |
| @clerk/tanstack-react-start | 0.27.6-snapshot.v20251205170211 |
| @clerk/testing | 1.13.20-snapshot.v20251205170211 |
| @clerk/themes | 2.4.41-snapshot.v20251205170211 |
| @clerk/types | 4.101.4-snapshot.v20251205170211 |
| @clerk/vue | 1.17.1-snapshot.v20251205170211 |
Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/agent-toolkit
npm i @clerk/[email protected] --save-exact
@clerk/astro
npm i @clerk/[email protected] --save-exact
@clerk/backend
npm i @clerk/[email protected] --save-exact
@clerk/chrome-extension
npm i @clerk/[email protected] --save-exact
@clerk/clerk-js
npm i @clerk/[email protected] --save-exact
@clerk/elements
npm i @clerk/[email protected] --save-exact
@clerk/clerk-expo
npm i @clerk/[email protected] --save-exact
@clerk/expo-passkeys
npm i @clerk/[email protected] --save-exact
@clerk/express
npm i @clerk/[email protected] --save-exact
@clerk/fastify
npm i @clerk/[email protected] --save-exact
@clerk/localizations
npm i @clerk/[email protected] --save-exact
@clerk/nextjs
npm i @clerk/[email protected] --save-exact
@clerk/nuxt
npm i @clerk/[email protected] --save-exact
@clerk/clerk-react
npm i @clerk/[email protected] --save-exact
@clerk/react-router
npm i @clerk/[email protected] --save-exact
@clerk/remix
npm i @clerk/[email protected] --save-exact
@clerk/shared
npm i @clerk/[email protected] --save-exact
@clerk/tanstack-react-start
npm i @clerk/[email protected] --save-exact
@clerk/testing
npm i @clerk/[email protected] --save-exact
@clerk/themes
npm i @clerk/[email protected] --save-exact
@clerk/types
npm i @clerk/[email protected] --save-exact
@clerk/vue
npm i @clerk/[email protected] --save-exact
!snapshot
!snapshot
Hey @chriscanin - the snapshot version command generated the following package versions:
| Package | Version |
|---|---|
| @clerk/agent-toolkit | 0.2.9-snapshot.v20251216175437 |
| @clerk/astro | 3.0.0-snapshot.v20251216175437 |
| @clerk/backend | 3.0.0-snapshot.v20251216175437 |
| @clerk/chrome-extension | 3.0.0-snapshot.v20251216175437 |
| @clerk/clerk-js | 3.0.0-snapshot.v20251216175437 |
| @clerk/dev-cli | 1.0.0-snapshot.v20251216175437 |
| @clerk/expo | 3.0.0-snapshot.v20251216175437 |
| @clerk/expo-passkeys | 1.0.0-snapshot.v20251216175437 |
| @clerk/express | 2.0.0-snapshot.v20251216175437 |
| @clerk/fastify | 2.6.9-snapshot.v20251216175437 |
| @clerk/localizations | 4.0.0-snapshot.v20251216175437 |
| @clerk/nextjs | 7.0.0-snapshot.v20251216175437 |
| @clerk/nuxt | 2.0.0-snapshot.v20251216175437 |
| @clerk/react | 6.0.0-snapshot.v20251216175437 |
| @clerk/react-router | 3.0.0-snapshot.v20251216175437 |
| @clerk/shared | 4.0.0-snapshot.v20251216175437 |
| @clerk/tanstack-react-start | 1.0.0-snapshot.v20251216175437 |
| @clerk/testing | 2.0.0-snapshot.v20251216175437 |
| @clerk/ui | 1.0.0-snapshot.v20251216175437 |
| @clerk/upgrade | 2.0.0-snapshot.v20251216175437 |
| @clerk/vue | 2.0.0-snapshot.v20251216175437 |
Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/agent-toolkit
npm i @clerk/[email protected] --save-exact
@clerk/astro
npm i @clerk/[email protected] --save-exact
@clerk/backend
npm i @clerk/[email protected] --save-exact
@clerk/chrome-extension
npm i @clerk/[email protected] --save-exact
@clerk/clerk-js
npm i @clerk/[email protected] --save-exact
@clerk/dev-cli
npm i @clerk/[email protected] --save-exact
@clerk/expo
npm i @clerk/[email protected] --save-exact
@clerk/expo-passkeys
npm i @clerk/[email protected] --save-exact
@clerk/express
npm i @clerk/[email protected] --save-exact
@clerk/fastify
npm i @clerk/[email protected] --save-exact
@clerk/localizations
npm i @clerk/[email protected] --save-exact
@clerk/nextjs
npm i @clerk/[email protected] --save-exact
@clerk/nuxt
npm i @clerk/[email protected] --save-exact
@clerk/react
npm i @clerk/[email protected] --save-exact
@clerk/react-router
npm i @clerk/[email protected] --save-exact
@clerk/shared
npm i @clerk/[email protected] --save-exact
@clerk/tanstack-react-start
npm i @clerk/[email protected] --save-exact
@clerk/testing
npm i @clerk/[email protected] --save-exact
@clerk/ui
npm i @clerk/[email protected] --save-exact
@clerk/upgrade
npm i @clerk/[email protected] --save-exact
@clerk/vue
npm i @clerk/[email protected] --save-exact
!snapshot
Hey @chriscanin - the snapshot version command generated the following package versions:
| Package | Version |
|---|---|
| @clerk/agent-toolkit | 0.2.9-snapshot.v20251217165918 |
| @clerk/astro | 3.0.0-snapshot.v20251217165918 |
| @clerk/backend | 3.0.0-snapshot.v20251217165918 |
| @clerk/chrome-extension | 3.0.0-snapshot.v20251217165918 |
| @clerk/clerk-js | 6.0.0-snapshot.v20251217165918 |
| @clerk/dev-cli | 1.0.0-snapshot.v20251217165918 |
| @clerk/expo | 3.0.0-snapshot.v20251217165918 |
| @clerk/expo-passkeys | 1.0.0-snapshot.v20251217165918 |
| @clerk/express | 2.0.0-snapshot.v20251217165918 |
| @clerk/fastify | 2.6.9-snapshot.v20251217165918 |
| @clerk/localizations | 4.0.0-snapshot.v20251217165918 |
| @clerk/nextjs | 7.0.0-snapshot.v20251217165918 |
| @clerk/nuxt | 2.0.0-snapshot.v20251217165918 |
| @clerk/react | 6.0.0-snapshot.v20251217165918 |
| @clerk/react-router | 3.0.0-snapshot.v20251217165918 |
| @clerk/shared | 4.0.0-snapshot.v20251217165918 |
| @clerk/tanstack-react-start | 1.0.0-snapshot.v20251217165918 |
| @clerk/testing | 2.0.0-snapshot.v20251217165918 |
| @clerk/ui | 1.0.0-snapshot.v20251217165918 |
| @clerk/upgrade | 2.0.0-snapshot.v20251217165918 |
| @clerk/vue | 2.0.0-snapshot.v20251217165918 |
Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/agent-toolkit
npm i @clerk/[email protected] --save-exact
@clerk/astro
npm i @clerk/[email protected] --save-exact
@clerk/backend
npm i @clerk/[email protected] --save-exact
@clerk/chrome-extension
npm i @clerk/[email protected] --save-exact
@clerk/clerk-js
npm i @clerk/[email protected] --save-exact
@clerk/dev-cli
npm i @clerk/[email protected] --save-exact
@clerk/expo
npm i @clerk/[email protected] --save-exact
@clerk/expo-passkeys
npm i @clerk/[email protected] --save-exact
@clerk/express
npm i @clerk/[email protected] --save-exact
@clerk/fastify
npm i @clerk/[email protected] --save-exact
@clerk/localizations
npm i @clerk/[email protected] --save-exact
@clerk/nextjs
npm i @clerk/[email protected] --save-exact
@clerk/nuxt
npm i @clerk/[email protected] --save-exact
@clerk/react
npm i @clerk/[email protected] --save-exact
@clerk/react-router
npm i @clerk/[email protected] --save-exact
@clerk/shared
npm i @clerk/[email protected] --save-exact
@clerk/tanstack-react-start
npm i @clerk/[email protected] --save-exact
@clerk/testing
npm i @clerk/[email protected] --save-exact
@clerk/ui
npm i @clerk/[email protected] --save-exact
@clerk/upgrade
npm i @clerk/[email protected] --save-exact
@clerk/vue
npm i @clerk/[email protected] --save-exact
!snapshot
Hey @chriscanin - the snapshot version command generated the following package versions:
| Package | Version |
|---|---|
| @clerk/agent-toolkit | 0.2.9-snapshot.v20251217194100 |
| @clerk/astro | 3.0.0-snapshot.v20251217194100 |
| @clerk/backend | 3.0.0-snapshot.v20251217194100 |
| @clerk/chrome-extension | 3.0.0-snapshot.v20251217194100 |
| @clerk/clerk-js | 6.0.0-snapshot.v20251217194100 |
| @clerk/dev-cli | 1.0.0-snapshot.v20251217194100 |
| @clerk/expo | 3.0.0-snapshot.v20251217194100 |
| @clerk/expo-passkeys | 1.0.0-snapshot.v20251217194100 |
| @clerk/express | 2.0.0-snapshot.v20251217194100 |
| @clerk/fastify | 2.6.9-snapshot.v20251217194100 |
| @clerk/localizations | 4.0.0-snapshot.v20251217194100 |
| @clerk/nextjs | 7.0.0-snapshot.v20251217194100 |
| @clerk/nuxt | 2.0.0-snapshot.v20251217194100 |
| @clerk/react | 6.0.0-snapshot.v20251217194100 |
| @clerk/react-router | 3.0.0-snapshot.v20251217194100 |
| @clerk/shared | 4.0.0-snapshot.v20251217194100 |
| @clerk/tanstack-react-start | 1.0.0-snapshot.v20251217194100 |
| @clerk/testing | 2.0.0-snapshot.v20251217194100 |
| @clerk/ui | 1.0.0-snapshot.v20251217194100 |
| @clerk/upgrade | 2.0.0-snapshot.v20251217194100 |
| @clerk/vue | 2.0.0-snapshot.v20251217194100 |
Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/agent-toolkit
npm i @clerk/[email protected] --save-exact
@clerk/astro
npm i @clerk/[email protected] --save-exact
@clerk/backend
npm i @clerk/[email protected] --save-exact
@clerk/chrome-extension
npm i @clerk/[email protected] --save-exact
@clerk/clerk-js
npm i @clerk/[email protected] --save-exact
@clerk/dev-cli
npm i @clerk/[email protected] --save-exact
@clerk/expo
npm i @clerk/[email protected] --save-exact
@clerk/expo-passkeys
npm i @clerk/[email protected] --save-exact
@clerk/express
npm i @clerk/[email protected] --save-exact
@clerk/fastify
npm i @clerk/[email protected] --save-exact
@clerk/localizations
npm i @clerk/[email protected] --save-exact
@clerk/nextjs
npm i @clerk/[email protected] --save-exact
@clerk/nuxt
npm i @clerk/[email protected] --save-exact
@clerk/react
npm i @clerk/[email protected] --save-exact
@clerk/react-router
npm i @clerk/[email protected] --save-exact
@clerk/shared
npm i @clerk/[email protected] --save-exact
@clerk/tanstack-react-start
npm i @clerk/[email protected] --save-exact
@clerk/testing
npm i @clerk/[email protected] --save-exact
@clerk/ui
npm i @clerk/[email protected] --save-exact
@clerk/upgrade
npm i @clerk/[email protected] --save-exact
@clerk/vue
npm i @clerk/[email protected] --save-exact
!snapshot
Hey @chriscanin - the snapshot version command generated the following package versions:
| Package | Version |
|---|---|
| @clerk/agent-toolkit | 0.2.9-snapshot.v20251218165926 |
| @clerk/astro | 3.0.0-snapshot.v20251218165926 |
| @clerk/backend | 3.0.0-snapshot.v20251218165926 |
| @clerk/chrome-extension | 3.0.0-snapshot.v20251218165926 |
| @clerk/clerk-js | 6.0.0-snapshot.v20251218165926 |
| @clerk/dev-cli | 1.0.0-snapshot.v20251218165926 |
| @clerk/expo | 3.0.0-snapshot.v20251218165926 |
| @clerk/expo-passkeys | 1.0.0-snapshot.v20251218165926 |
| @clerk/express | 2.0.0-snapshot.v20251218165926 |
| @clerk/fastify | 2.6.9-snapshot.v20251218165926 |
| @clerk/localizations | 4.0.0-snapshot.v20251218165926 |
| @clerk/nextjs | 7.0.0-snapshot.v20251218165926 |
| @clerk/nuxt | 2.0.0-snapshot.v20251218165926 |
| @clerk/react | 6.0.0-snapshot.v20251218165926 |
| @clerk/react-router | 3.0.0-snapshot.v20251218165926 |
| @clerk/shared | 4.0.0-snapshot.v20251218165926 |
| @clerk/tanstack-react-start | 1.0.0-snapshot.v20251218165926 |
| @clerk/testing | 2.0.0-snapshot.v20251218165926 |
| @clerk/ui | 1.0.0-snapshot.v20251218165926 |
| @clerk/upgrade | 2.0.0-snapshot.v20251218165926 |
| @clerk/vue | 2.0.0-snapshot.v20251218165926 |
Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/agent-toolkit
npm i @clerk/[email protected] --save-exact
@clerk/astro
npm i @clerk/[email protected] --save-exact
@clerk/backend
npm i @clerk/[email protected] --save-exact
@clerk/chrome-extension
npm i @clerk/[email protected] --save-exact
@clerk/clerk-js
npm i @clerk/[email protected] --save-exact
@clerk/dev-cli
npm i @clerk/[email protected] --save-exact
@clerk/expo
npm i @clerk/[email protected] --save-exact
@clerk/expo-passkeys
npm i @clerk/[email protected] --save-exact
@clerk/express
npm i @clerk/[email protected] --save-exact
@clerk/fastify
npm i @clerk/[email protected] --save-exact
@clerk/localizations
npm i @clerk/[email protected] --save-exact
@clerk/nextjs
npm i @clerk/[email protected] --save-exact
@clerk/nuxt
npm i @clerk/[email protected] --save-exact
@clerk/react
npm i @clerk/[email protected] --save-exact
@clerk/react-router
npm i @clerk/[email protected] --save-exact
@clerk/shared
npm i @clerk/[email protected] --save-exact
@clerk/tanstack-react-start
npm i @clerk/[email protected] --save-exact
@clerk/testing
npm i @clerk/[email protected] --save-exact
@clerk/ui
npm i @clerk/[email protected] --save-exact
@clerk/upgrade
npm i @clerk/[email protected] --save-exact
@clerk/vue
npm i @clerk/[email protected] --save-exact
!snapshot
Hey @chriscanin - the snapshot version command generated the following package versions:
| Package | Version |
|---|---|
| @clerk/agent-toolkit | 0.2.9-snapshot.v20251218183643 |
| @clerk/astro | 3.0.0-snapshot.v20251218183643 |
| @clerk/backend | 3.0.0-snapshot.v20251218183643 |
| @clerk/chrome-extension | 3.0.0-snapshot.v20251218183643 |
| @clerk/clerk-js | 6.0.0-snapshot.v20251218183643 |
| @clerk/dev-cli | 1.0.0-snapshot.v20251218183643 |
| @clerk/expo | 3.0.0-snapshot.v20251218183643 |
| @clerk/expo-passkeys | 1.0.0-snapshot.v20251218183643 |
| @clerk/express | 2.0.0-snapshot.v20251218183643 |
| @clerk/fastify | 2.6.9-snapshot.v20251218183643 |
| @clerk/localizations | 4.0.0-snapshot.v20251218183643 |
| @clerk/nextjs | 7.0.0-snapshot.v20251218183643 |
| @clerk/nuxt | 2.0.0-snapshot.v20251218183643 |
| @clerk/react | 6.0.0-snapshot.v20251218183643 |
| @clerk/react-router | 3.0.0-snapshot.v20251218183643 |
| @clerk/shared | 4.0.0-snapshot.v20251218183643 |
| @clerk/tanstack-react-start | 1.0.0-snapshot.v20251218183643 |
| @clerk/testing | 2.0.0-snapshot.v20251218183643 |
| @clerk/ui | 1.0.0-snapshot.v20251218183643 |
| @clerk/upgrade | 2.0.0-snapshot.v20251218183643 |
| @clerk/vue | 2.0.0-snapshot.v20251218183643 |
Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/agent-toolkit
npm i @clerk/[email protected] --save-exact
@clerk/astro
npm i @clerk/[email protected] --save-exact
@clerk/backend
npm i @clerk/[email protected] --save-exact
@clerk/chrome-extension
npm i @clerk/[email protected] --save-exact
@clerk/clerk-js
npm i @clerk/[email protected] --save-exact
@clerk/dev-cli
npm i @clerk/[email protected] --save-exact
@clerk/expo
npm i @clerk/[email protected] --save-exact
@clerk/expo-passkeys
npm i @clerk/[email protected] --save-exact
@clerk/express
npm i @clerk/[email protected] --save-exact
@clerk/fastify
npm i @clerk/[email protected] --save-exact
@clerk/localizations
npm i @clerk/[email protected] --save-exact
@clerk/nextjs
npm i @clerk/[email protected] --save-exact
@clerk/nuxt
npm i @clerk/[email protected] --save-exact
@clerk/react
npm i @clerk/[email protected] --save-exact
@clerk/react-router
npm i @clerk/[email protected] --save-exact
@clerk/shared
npm i @clerk/[email protected] --save-exact
@clerk/tanstack-react-start
npm i @clerk/[email protected] --save-exact
@clerk/testing
npm i @clerk/[email protected] --save-exact
@clerk/ui
npm i @clerk/[email protected] --save-exact
@clerk/upgrade
npm i @clerk/[email protected] --save-exact
@clerk/vue
npm i @clerk/[email protected] --save-exact