diff --git a/.changeset/expo-android-savedstate-compose.md b/.changeset/expo-android-savedstate-compose.md new file mode 100644 index 00000000000..c84c4b89be0 --- /dev/null +++ b/.changeset/expo-android-savedstate-compose.md @@ -0,0 +1,5 @@ +--- +'@clerk/expo-native-components': patch +--- + +Fix Android builds on Expo SDK 58. Compiling `@clerk/expo-native-components` no longer fails with `Unresolved reference 'LocalSavedStateRegistryOwner'`. diff --git a/.changeset/expo-biometrics-sdk-58-ios.md b/.changeset/expo-biometrics-sdk-58-ios.md new file mode 100644 index 00000000000..d97afa94463 --- /dev/null +++ b/.changeset/expo-biometrics-sdk-58-ios.md @@ -0,0 +1,5 @@ +--- +'@clerk/expo-biometrics': patch +--- + +Fix iOS builds on Expo SDK 58. `@clerk/expo-biometrics` no longer fails to compile with `cannot override with a stored property 'message'`. diff --git a/.changeset/expo-sdk-58-support.md b/.changeset/expo-sdk-58-support.md new file mode 100644 index 00000000000..870b53162cc --- /dev/null +++ b/.changeset/expo-sdk-58-support.md @@ -0,0 +1,9 @@ +--- +'@clerk/expo': minor +'@clerk/expo-passkeys': minor +'@clerk/expo-google-signin': minor +'@clerk/expo-native-components': minor +'@clerk/expo-biometrics': minor +--- + +Add Expo SDK 58 support. diff --git a/.github/workflows/expo-native-build.yml b/.github/workflows/expo-native-build.yml index 561e5cde57f..6ae4115e83d 100644 --- a/.github/workflows/expo-native-build.yml +++ b/.github/workflows/expo-native-build.yml @@ -45,23 +45,17 @@ jobs: fail-fast: false matrix: include: - - expo-sdk: 54 - platform: android - runner: blacksmith-8vcpu-ubuntu-2204 - - expo-sdk: 54 - platform: ios - runner: blacksmith-6vcpu-macos-26 - expo-sdk: 55 platform: android runner: blacksmith-8vcpu-ubuntu-2204 - expo-sdk: 55 platform: ios runner: blacksmith-6vcpu-macos-26 - - expo-sdk: 57 + - expo-sdk: 58 platform: android runner: blacksmith-8vcpu-ubuntu-2204 run-e2e: true - - expo-sdk: 57 + - expo-sdk: 58 platform: ios runner: blacksmith-6vcpu-macos-26 run-e2e: true diff --git a/integration/templates/expo-native/package.sdk-54.json b/integration/templates/expo-native/package.sdk-54.json deleted file mode 100644 index 445437dd99e..00000000000 --- a/integration/templates/expo-native/package.sdk-54.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "clerk-expo-native-build-fixture", - "version": "1.0.0", - "private": true, - "main": "index.js", - "scripts": { - "build:android": "cd android && ./gradlew assembleRelease", - "build:ios": "xcodebuild -workspace ios/ClerkExpoNativeBuildFixture.xcworkspace -scheme ClerkExpoNativeBuildFixture -configuration Release -sdk iphonesimulator -derivedDataPath ios/build CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY=''", - "prebuild:android": "expo prebuild --clean --platform android", - "prebuild:ios": "expo prebuild --clean --platform ios" - }, - "dependencies": { - "expo": "~54.0.34", - "react": "19.1.0", - "react-native": "0.81.5" - }, - "devDependencies": { - "@babel/core": "^7.29.0", - "@types/react": "~19.1.17", - "typescript": "~5.9.3" - }, - "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" -} diff --git a/integration/templates/expo-native/package.sdk-57.json b/integration/templates/expo-native/package.sdk-58.json similarity index 83% rename from integration/templates/expo-native/package.sdk-57.json rename to integration/templates/expo-native/package.sdk-58.json index 9523431c830..4d27337f3dd 100644 --- a/integration/templates/expo-native/package.sdk-57.json +++ b/integration/templates/expo-native/package.sdk-58.json @@ -10,15 +10,15 @@ "prebuild:ios": "expo prebuild --clean --platform ios" }, "dependencies": { - "expo": "~57.0.1", - "react": "19.2.8", - "react-dom": "19.2.8", - "react-native": "0.86.0" + "expo": "~58.0.12", + "react": "19.3.0", + "react-dom": "19.3.0", + "react-native": "0.88.0" }, "devDependencies": { "@babel/core": "^7.29.0", - "@types/react": "~19.1.17", - "typescript": "~5.9.3" + "@types/react": "~19.3.0", + "typescript": "~6.0.3" }, "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" } diff --git a/packages/expo-biometrics/ios/ClerkExpoBiometricsModule.swift b/packages/expo-biometrics/ios/ClerkExpoBiometricsModule.swift index 72de2d4e7d3..f1303c41b58 100644 --- a/packages/expo-biometrics/ios/ClerkExpoBiometricsModule.swift +++ b/packages/expo-biometrics/ios/ClerkExpoBiometricsModule.swift @@ -3,16 +3,16 @@ import Foundation final class ClerkBiometricsException: Exception { private let errorCode: String - private let message: String + private let errorMessage: String init(_ error: BiometricsError) { errorCode = error.code.rawValue - message = error.message + errorMessage = error.message super.init() } override var code: String { errorCode } - override var reason: String { message } + override var reason: String { errorMessage } } struct BiometricAvailabilityResult: Record { diff --git a/packages/expo-native-components/android/build.gradle b/packages/expo-native-components/android/build.gradle index 0946d688515..128b5b88c83 100644 --- a/packages/expo-native-components/android/build.gradle +++ b/packages/expo-native-components/android/build.gradle @@ -28,6 +28,7 @@ ext { composeVersion = "1.7.0" activityComposeVersion = "1.9.0" lifecycleVersion = "2.8.0" + savedStateVersion = "1.4.0" } def safeExtGet(prop, fallback) { @@ -147,6 +148,7 @@ dependencies { implementation "androidx.activity:activity-compose:$activityComposeVersion" implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycleVersion" implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycleVersion" + implementation "androidx.savedstate:savedstate-compose:$savedStateVersion" testImplementation "junit:junit:4.13.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5a134c3445..032116ad7a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ catalogs: version: 3.0.4 peer-expo: expo: - specifier: '>=54 <58' + specifier: '>=54 <59' version: 54.0.36 react: '@types/react': @@ -9040,6 +9040,7 @@ packages: eslint@9.31.0: resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true peerDependencies: jiti: '*' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fd061700949..d92f9eaf43e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,7 +4,7 @@ packages: catalogs: peer-expo: - expo: '>=54 <58' + expo: '>=54 <59' peer-react: react: ^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0 react-dom: ^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0