From c1227bc8c5a4c1d4c2de43584b06aa47d57ca6f7 Mon Sep 17 00:00:00 2001 From: Eliot Gevers Date: Tue, 29 Sep 2026 15:14:50 +0200 Subject: [PATCH 1/2] test(expo): enable R8 in Android release tests --- .changeset/quiet-expo-release-check.md | 2 ++ .github/workflows/expo-native-build.yml | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/quiet-expo-release-check.md diff --git a/.changeset/quiet-expo-release-check.md b/.changeset/quiet-expo-release-check.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/quiet-expo-release-check.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.github/workflows/expo-native-build.yml b/.github/workflows/expo-native-build.yml index c4f1573535b..86f844aeb19 100644 --- a/.github/workflows/expo-native-build.yml +++ b/.github/workflows/expo-native-build.yml @@ -106,7 +106,7 @@ jobs: with: path: ${{ steps.native-build-key.outputs.artifact }} # Bump the version when native build commands change. - key: expo-native-build-v1-${{ runner.os }}-${{ matrix.expo-sdk }}-${{ matrix.platform }}-${{ matrix.run-e2e == true && 'e2e' || 'build' }}-${{ env.E2E_INSTANCE_NAME }}-${{ steps.native-build-key.outputs.hash }} + key: expo-native-build-minified-v2-${{ runner.os }}-${{ matrix.expo-sdk }}-${{ matrix.platform }}-${{ matrix.run-e2e == true && 'e2e' || 'build' }}-${{ env.E2E_INSTANCE_NAME }}-${{ steps.native-build-key.outputs.hash }} - if: steps.native-build-cache.outputs.cache-hit != 'true' uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 @@ -211,7 +211,9 @@ jobs: - name: Build Android fixture if: matrix.platform == 'android' && steps.native-build-cache.outputs.cache-hit != 'true' working-directory: ${{ env.FIXTURE_DIR }} - run: pnpm build:android + run: | + pnpm build:android -Pandroid.enableMinifyInReleaseBuilds=true -Pandroid.enableShrinkResourcesInReleaseBuilds=true + test -s android/app/build/outputs/mapping/release/mapping.txt # The module's Robolectric tests need an Expo host project for expo-modules-core, so they run in the fixture. # The packed module leaves out its tests, so they are copied in from the repo. From 9bd6c1d3f9193d1c30c078d4e5b33d367e5065dc Mon Sep 17 00:00:00 2001 From: Eliot Gevers Date: Tue, 29 Sep 2026 15:51:34 +0200 Subject: [PATCH 2/2] fix(expo): supply narrow R8 rule for release fixtures --- .changeset/quiet-expo-release-check.md | 3 +++ packages/expo/android/build.gradle | 1 + packages/expo/android/proguard-rules.pro | 1 + 3 files changed, 5 insertions(+) create mode 100644 packages/expo/android/proguard-rules.pro diff --git a/.changeset/quiet-expo-release-check.md b/.changeset/quiet-expo-release-check.md index a845151cc84..04d678e7310 100644 --- a/.changeset/quiet-expo-release-check.md +++ b/.changeset/quiet-expo-release-check.md @@ -1,2 +1,5 @@ --- +'@clerk/expo': patch --- + +Prevent Android release builds with R8 from failing on the missing Kotlin `MustUseReturnValues` annotation. diff --git a/packages/expo/android/build.gradle b/packages/expo/android/build.gradle index 0d9564cfb85..91013fc3bbd 100644 --- a/packages/expo/android/build.gradle +++ b/packages/expo/android/build.gradle @@ -44,6 +44,7 @@ android { versionCode 1 versionName "1.0.0" buildConfigField "String", "CLERK_EXPO_VERSION", "\"${clerkExpoVersion}\"" + consumerProguardFiles "proguard-rules.pro" } buildTypes { diff --git a/packages/expo/android/proguard-rules.pro b/packages/expo/android/proguard-rules.pro new file mode 100644 index 00000000000..c86ea894ce2 --- /dev/null +++ b/packages/expo/android/proguard-rules.pro @@ -0,0 +1 @@ +-dontwarn kotlin.MustUseReturnValues