Skip to content

feat(expo-biometrics): migrate to Expo Modules API 2.0 - #10301

Draft
wobsoriano wants to merge 2 commits into
mainfrom
rob/expo-modules-2
Draft

wobsoriano wants to merge 2 commits into
mainfrom
rob/expo-modules-2

Conversation

@wobsoriano

Copy link
Copy Markdown
Member

Description

Exploration only. I want to see what Expo Modules API 2.0 (beta in SDK 58) looks like in our code, and what it is still missing.

This PR migrates @clerk/expo-biometrics on iOS and Android. Every member moved, with no 1.0 DSL left. The function names, arguments, record fields and error codes JS sees are unchanged. Error messages lose the 1.0 "Calling the 'x' function has failed" prefix, and Promise<void> on Android resolves to undefined instead of null.

What is missing or blocking:

  • Views: SDK 58 has no @ExpoView/@ViewProps, so the expo-native-components views (AuthView, UserProfileView, UserButton) stay on 1.0.
  • Android mixed mode: the 2.0 Module is a different base class, so an Android module moves all at once. iOS allows mixing.
  • SDK floor: 2.0 code only compiles on SDK 58, so this is a major and the SDK 55 build job will fail for this package.
  • Docs: there are none yet. The references are the early look post and Expo's own migrated modules.

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Moves ClerkExpoBiometrics to @ExpoModule/@JS/@record on iOS and
io.github.expo.modules.v2 on Android. Blocking Keychain, Secure Enclave,
Keystore and file work stays off the JS thread (.concurrent on iOS,
Dispatchers.IO on Android), and store operations stay on the main actor
on iOS. Android builds with expo-module-gradle-plugin and v2 enabled, so
the module leaves android.modules in expo-module.config.json.

The native contract test now reads @js functions as well as the DSL.
@vercel

vercel Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
clerk-js-sandbox Ready Ready Preview Oct 19, 2026 10:40pm UTC
swingset Ready Ready Preview Oct 19, 2026 10:40pm UTC

Request Review

@changeset-bot

changeset-bot Bot commented Oct 19, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b1e06e5

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@clerk/expo-biometrics Major
@clerk/expo Patch

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

@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Oct 19, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@10301

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@10301

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@10301

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@10301

@clerk/electron

npm i https://pkg.pr.new/@clerk/electron@10301

@clerk/electron-passkeys

npm i https://pkg.pr.new/@clerk/electron-passkeys@10301

@clerk/eslint-plugin

npm i https://pkg.pr.new/@clerk/eslint-plugin@10301

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@10301

@clerk/expo-biometrics

npm i https://pkg.pr.new/@clerk/expo-biometrics@10301

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@10301

@clerk/expo-native-components

npm i https://pkg.pr.new/@clerk/expo-native-components@10301

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@10301

@clerk/express

npm i https://pkg.pr.new/@clerk/express@10301

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@10301

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@10301

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@10301

@clerk/mosaic

npm i https://pkg.pr.new/@clerk/mosaic@10301

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@10301

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@10301

@clerk/react

npm i https://pkg.pr.new/@clerk/react@10301

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@10301

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@10301

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@10301

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@10301

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@10301

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@10301

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@10301

commit: b1e06e5

This branch was successfully deployed

2 active deployments
Preview – swingset — b1e06e54 Deployed Oct 19, 2026 by vercel[bot]
Preview – clerk-js-sandbox — b1e06e54 Deployed Oct 19, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant