feat(expo): Chris/mobile 405 react native components release#7843
feat(expo): Chris/mobile 405 react native components release#7843chriscanin wants to merge 49 commits intomainfrom
Conversation
- Implemented UserButton component to open UserProfileView on press. - Created UserProfile component for comprehensive profile management. - Integrated native ClerkExpo module for iOS functionality. - Updated ClerkProvider to configure Clerk iOS SDK. - Added exports for new components in the native index file. - Adjusted TypeScript configuration to include additional files. - Modified build process to temporarily skip declaration generation. - Updated dependencies in pnpm-lock.yaml for compatibility.
…d ClerkViewFactory
…ge-ios-to-a-native-module-that-is-available-in-the-expo
…profile management
…ge-android-to-a-native-module-that-is-available-in-the
…ling and UI presentation - Consolidated Clerk SDK initialization and session management in ClerkExpoModule. - Removed ClerkProfileActivity and replaced it with ClerkUserProfileActivity for better clarity and functionality. - Introduced ClerkViewFactory to manage creation of intents for authentication and user profile activities. - Enhanced error handling and promise management for asynchronous operations. - Updated SignIn and UserProfile components to synchronize native and JS session states effectively. - Improved user experience by ensuring the auth modal is always presented, allowing native UI to manage signed-in state. - Added backward-compatible wrappers for SignedIn and SignedOut components.
…and improved session handling
- Updated `clerk-android` versions in `build.gradle` to `0.1.30` for API and `0.1.4` for UI. - Added Kotlin metadata version check skip to address compatibility issues. - Introduced packaging exclusions for duplicate META-INF files in Android. - Enhanced `ClerkAuthActivity` to improve session handling and logging. - Updated `ClerkExpoModule` to include detailed logging for session retrieval. - Improved `ClerkUserProfileActivity` to handle sign-out detection and logging. - Refined `SignIn` and `UserProfile` components to prevent duplicate auth callbacks and improve user state management. - Added packaging exclusions in the Expo config plugin for Android to resolve dependency conflicts.
- Introduced AuthView component to handle sign-in and sign-up using native UI. - Added AuthView types for better type safety. - Removed deprecated SignIn component and its types. - Updated UserButton and UserProfileView components with enhanced documentation. - Refactored ClerkProvider to sync native sessions with JS SDK. - Adjusted TypeScript configurations for improved declaration generation.
…lement crash in React Native
… state management
- packages/expo/package.json: merge new exports (./types) and file entries (google, apple) - packages/expo/src/hooks/index.ts: use main's standard re-exports for useSignIn/useSignUp/useWaitlist - packages/expo/src/provider/singleton/createClerkInstance.ts: use @clerk/clerk-js import (not headless subpath) - packages/react/src/isomorphicClerk.ts: use main's ClerkUI loading pattern via options.ui
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: 44bee1d The changes in this PR will be included in the next version bump. This PR includes changesets to release 20 packages
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 |
|
!snapshot |
|
Hey @chriscanin - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/agent-toolkit@0.3.0-snapshot.v20260226164504 --save-exact
npm i @clerk/astro@3.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/backend@3.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/chrome-extension@3.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/clerk-js@6.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/dev-cli@1.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/expo@3.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/expo-passkeys@1.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/express@2.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/fastify@2.7.0-snapshot.v20260226164504 --save-exact
npm i @clerk/localizations@4.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/msw@0.0.1-snapshot.v20260226164504 --save-exact
npm i @clerk/nextjs@7.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/nuxt@2.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/react@6.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/react-router@3.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/shared@4.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/tanstack-react-start@1.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/testing@2.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/ui@1.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/upgrade@2.0.0-snapshot.v20260226164504 --save-exact
npm i @clerk/vue@2.0.0-snapshot.v20260226164504 --save-exact |
|
!snapshot |
|
Hey @chriscanin - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/agent-toolkit@0.3.0-snapshot.v20260226165729 --save-exact
npm i @clerk/astro@3.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/backend@3.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/chrome-extension@3.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/clerk-js@6.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/dev-cli@1.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/expo@3.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/expo-passkeys@0.4.26-snapshot.v20260226165729 --save-exact
npm i @clerk/express@2.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/fastify@2.7.0-snapshot.v20260226165729 --save-exact
npm i @clerk/localizations@4.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/msw@0.0.1-snapshot.v20260226165729 --save-exact
npm i @clerk/nextjs@7.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/nuxt@2.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/react@6.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/react-router@3.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/shared@4.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/tanstack-react-start@1.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/testing@2.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/ui@1.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/upgrade@2.0.0-snapshot.v20260226165729 --save-exact
npm i @clerk/vue@2.0.0-snapshot.v20260226165729 --save-exact |
…dencies Convert top-level imports to dynamic imports so users who don't use SSO/OAuth don't need these packages installed. Follows the same pattern as useSignInWithApple.ios.ts.
|
!snapshot |
|
Hey @chriscanin - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/agent-toolkit@0.3.0-snapshot.v20260226200407 --save-exact
npm i @clerk/astro@3.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/backend@3.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/chrome-extension@3.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/clerk-js@6.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/dev-cli@1.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/expo@3.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/expo-passkeys@0.4.26-snapshot.v20260226200407 --save-exact
npm i @clerk/express@2.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/fastify@2.7.0-snapshot.v20260226200407 --save-exact
npm i @clerk/localizations@4.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/msw@0.0.1-snapshot.v20260226200407 --save-exact
npm i @clerk/nextjs@7.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/nuxt@2.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/react@6.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/react-router@3.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/shared@4.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/tanstack-react-start@1.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/testing@2.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/ui@1.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/upgrade@2.0.0-snapshot.v20260226200407 --save-exact
npm i @clerk/vue@2.0.0-snapshot.v20260226200407 --save-exact |
…erkExpo getEnforcing throws at module load time when the native module isn't registered, crashing JS-only quickstart apps. Using get returns null instead, which all consumers already handle gracefully.
|
!snapshot |
|
Hey @chriscanin - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/agent-toolkit@0.3.0-snapshot.v20260227155800 --save-exact
npm i @clerk/astro@3.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/backend@3.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/chrome-extension@3.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/clerk-js@6.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/dev-cli@1.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/expo@3.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/expo-passkeys@0.4.26-snapshot.v20260227155800 --save-exact
npm i @clerk/express@2.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/fastify@2.7.0-snapshot.v20260227155800 --save-exact
npm i @clerk/localizations@4.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/msw@0.0.1-snapshot.v20260227155800 --save-exact
npm i @clerk/nextjs@7.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/nuxt@2.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/react@6.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/react-router@3.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/shared@4.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/tanstack-react-start@1.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/testing@2.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/ui@1.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/upgrade@2.0.0-snapshot.v20260227155800 --save-exact
npm i @clerk/vue@2.0.0-snapshot.v20260227155800 --save-exact |
|
@coderrabbitai please do one more final pass review, I have resolved ALL of the issues you have mentioned, although a few of them were false positives according the the all powerful claude. |
In React Native, document is undefined so the captcha challenge using DOM APIs (MutationObserver, document.querySelector, etc.) would hang forever. Return a no-op result when document is undefined to prevent signIn.password() and other API calls from hanging on mobile.
|
!snapshot |
|
Hey @chriscanin - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/agent-toolkit@0.3.0-snapshot.v20260227191721 --save-exact
npm i @clerk/astro@3.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/backend@3.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/chrome-extension@3.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/clerk-js@6.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/dev-cli@1.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/expo@3.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/expo-passkeys@0.4.26-snapshot.v20260227191721 --save-exact
npm i @clerk/express@2.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/fastify@2.7.0-snapshot.v20260227191721 --save-exact
npm i @clerk/localizations@4.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/msw@0.0.1-snapshot.v20260227191721 --save-exact
npm i @clerk/nextjs@7.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/nuxt@2.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/react@6.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/react-router@3.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/shared@4.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/tanstack-react-start@1.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/testing@2.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/ui@1.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/upgrade@2.0.0-snapshot.v20260227191721 --save-exact
npm i @clerk/vue@2.0.0-snapshot.v20260227191721 --save-exact |
React Native codegen does not support TSObjectKeyword (bare `object` type). Replace with UnsafeObject from react-native's CodegenTypes to fix iOS/Android build failures.
|
!snapshot |
|
Hey @chriscanin - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/agent-toolkit@0.3.0-snapshot.v20260227195620 --save-exact
npm i @clerk/astro@3.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/backend@3.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/chrome-extension@3.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/clerk-js@6.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/dev-cli@1.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/expo@3.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/expo-passkeys@0.4.26-snapshot.v20260227195620 --save-exact
npm i @clerk/express@2.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/fastify@2.7.0-snapshot.v20260227195620 --save-exact
npm i @clerk/localizations@4.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/msw@0.0.1-snapshot.v20260227195620 --save-exact
npm i @clerk/nextjs@7.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/nuxt@2.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/react@6.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/react-router@3.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/shared@4.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/tanstack-react-start@1.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/testing@2.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/ui@1.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/upgrade@2.0.0-snapshot.v20260227195620 --save-exact
npm i @clerk/vue@2.0.0-snapshot.v20260227195620 --save-exact |
Description
These changes can be tested by using the snapshot that will be commented in this PR discussion, and installing that into the expo quickstart repo on the branch:
chris/mobile-343-bridge-android-to-a-native-module-that-is-available-in-the(same branch name as here).
https://linear.app/clerk/issue/MOBILE-342/bridge-ios-to-a-native-module-that-is-available-in-the-expo-sdk
MOBILE-289
https://linear.app/clerk/issue/MOBILE-289/expo-google-universal-sign-in
Checklist
pnpm testruns as expected.pnpm buildruns as expected.Type of change
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Chores