From 9fdb072cf4212796745a66fa6ce9ff5cb8c545f4 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Wed, 15 Jul 2026 12:10:44 +0200 Subject: [PATCH 01/11] feat: switch to hermes v1 --- android/gradle.properties | 2 +- ios/Podfile | 3 --- ios/Podfile.lock | 16 ++++++++-------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index f6f385d6..2bbe2184 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -24,7 +24,7 @@ android.nonTransitiveRClass=true android.suppressUnsupportedCompileSdk=33 newArchEnabled=true hermesEnabled=true -hermesV1Enabled=false +hermesV1Enabled=true mendixnative.cookieEncryption=false VisionCamera_enableCodeScanner=true diff --git a/ios/Podfile b/ios/Podfile index a4e1f3fc..d9299de6 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -16,9 +16,6 @@ ENV['RCT_NEW_ARCH_ENABLED'] = '1' ENV['RCT_USE_PREBUILT_RNCORE'] = '1' ENV['RCT_USE_RN_DEP'] = '1' -# The JS bundle is compiled compiled using a different version than the prebuilt Hermes engine embedded in the native binary, causing a runtime crash. -ENV['RCT_HERMES_V1_ENABLED'] = '0' - # Use it to require both react-native's and this package's scripts: node_require('react-native/scripts/react_native_pods.rb') node_require('react-native-permissions/scripts/setup.rb') diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4a5aacc4..7bef7b91 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,8 +1,8 @@ PODS: - FBLazyVector (0.84.1) - - hermes-engine (0.15.1): - - hermes-engine/Pre-built (= 0.15.1) - - hermes-engine/Pre-built (0.15.1) + - hermes-engine (250829098.0.9): + - hermes-engine/Pre-built (= 250829098.0.9) + - hermes-engine/Pre-built (250829098.0.9) - IQKeyboardManager (6.5.19) - libavif/core (0.11.1) - libavif/libdav1d (0.11.1): @@ -2706,7 +2706,7 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/FBLazyVector" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v0.15.1 + :tag: hermes-v250829098.0.9 MendixNative: :path: "../node_modules/mendix-native" op-sqlite: @@ -2902,7 +2902,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da - hermes-engine: 67c41b335723f72b2a182dbaeeebd97a73fc2775 + hermes-engine: 054cdf1294d0852c33cd980e7fcd94b4274ed8b3 IQKeyboardManager: c8665b3396bd0b79402b4c573eac345a31c7d485 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f @@ -3002,8 +3002,8 @@ SPEC CHECKSUMS: RNReanimated: e47df7f4580997c3a46b1e736ce3f26010985bb7 RNScreens: 6cb648bdad8fe9bee9259fe144df95b6d1d5b707 RNSVG: c69f7709226108f5eb89b5aa8833c17a36345468 - RNWorklets: 7d24538032e023ed207e3b4d9b234695ddadd201 - SDWebImage: e9c98383c7572d713c1a0d7dd2783b10599b9838 + RNWorklets: 06ce05d69455cc14f5676c177050a39aa557d4d2 + SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c SDWebImageWebPCoder: 0e06e365080397465cc73a7a9b472d8a3bd0f377 @@ -3011,6 +3011,6 @@ SPEC CHECKSUMS: SwiftAudioEx: f6aa653770f3a0d3851edaf8d834a30aee4a7646 Yoga: c0b3f2c7e8d3e327e450223a2414ca3fa296b9a2 -PODFILE CHECKSUM: 7a33012cce520784bb5b691549f5ed2af273b7e3 +PODFILE CHECKSUM: 336902a926a1c6b0b4e426a1eeb85e04f7bbf783 COCOAPODS: 1.17.0 From 2d220dbc8cd65b2864af993d7e44e7e1bcb4bb86 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 20 Jul 2026 17:54:38 +0200 Subject: [PATCH 02/11] fix: update hermes v1 to latest ...0.16 --- android/app/build.gradle | 1 + android/build.gradle | 4 ++++ ios/Podfile | 18 ++++++++++++++++++ ios/Podfile.lock | 12 ++++++------ package-lock.json | 6 +++--- package.json | 4 +++- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index dd5e357b..1935f255 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,6 +144,7 @@ dependencies { configurations.all { resolutionStrategy { + force "com.facebook.hermes:hermes-android:${rootProject.ext.hermesVersion}" force "androidx.annotation:annotation:1.1.0" force( "com.google.android.gms:play-services-base:18.6.0", diff --git a/android/build.gradle b/android/build.gradle index e0813280..7e42fa28 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,9 @@ buildscript { ext { + hermesVersion = new groovy.json.JsonSlurper() + .parse(file("../package.json")) + .overrides["hermes-compiler"] + buildToolsVersion = "36.0.0" minSdkVersion = 29 compileSdkVersion = 36 diff --git a/ios/Podfile b/ios/Podfile index d9299de6..4e234da8 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,23 @@ source 'https://cdn.cocoapods.org/' +# Sync hermes v1 version from package.json into react-native's SDK version files +# so that iOS uses the same pinned version as the Android/npm resolution. +require 'json' +package_json = JSON.parse(File.read(File.join(__dir__, "../package.json"))) +hermes_v1_version = package_json.dig("overrides", "hermes-compiler") +if hermes_v1_version + rn_sdk_path = File.join(__dir__, "../node_modules/react-native/sdks") + # Update version.properties (used by hermes-engine.podspec) + version_props_path = File.join(rn_sdk_path, "hermes-engine", "version.properties") + if File.exist?(version_props_path) + content = File.read(version_props_path) + File.write(version_props_path, content.gsub(/HERMES_V1_VERSION_NAME=.*/, "HERMES_V1_VERSION_NAME=#{hermes_v1_version}")) + end + # Update .hermesv1version (used as the CocoaPods cache-busting tag) + hermesv1_tag_path = File.join(rn_sdk_path, ".hermesv1version") + File.write(hermesv1_tag_path, "hermes-v#{hermes_v1_version}") if File.exist?(hermesv1_tag_path) +end + def node_require(script) # Resolve script with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 7bef7b91..533761fd 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,8 +1,8 @@ PODS: - FBLazyVector (0.84.1) - - hermes-engine (250829098.0.9): - - hermes-engine/Pre-built (= 250829098.0.9) - - hermes-engine/Pre-built (250829098.0.9) + - hermes-engine (250829098.0.16): + - hermes-engine/Pre-built (= 250829098.0.16) + - hermes-engine/Pre-built (250829098.0.16) - IQKeyboardManager (6.5.19) - libavif/core (0.11.1) - libavif/libdav1d (0.11.1): @@ -2706,7 +2706,7 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/FBLazyVector" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v250829098.0.9 + :tag: hermes-v250829098.0.16 MendixNative: :path: "../node_modules/mendix-native" op-sqlite: @@ -2902,7 +2902,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da - hermes-engine: 054cdf1294d0852c33cd980e7fcd94b4274ed8b3 + hermes-engine: 69c996601e0d8f3e0568eaa317bfb9c13b5f5618 IQKeyboardManager: c8665b3396bd0b79402b4c573eac345a31c7d485 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f @@ -3011,6 +3011,6 @@ SPEC CHECKSUMS: SwiftAudioEx: f6aa653770f3a0d3851edaf8d834a30aee4a7646 Yoga: c0b3f2c7e8d3e327e450223a2414ca3fa296b9a2 -PODFILE CHECKSUM: 336902a926a1c6b0b4e426a1eeb85e04f7bbf783 +PODFILE CHECKSUM: 09cf4c9bdbcffba8ca592025f48d96797828da8b COCOAPODS: 1.17.0 diff --git a/package-lock.json b/package-lock.json index 47e37030..127bff73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5199,9 +5199,9 @@ } }, "node_modules/hermes-compiler": { - "version": "250829098.0.9", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.9.tgz", - "integrity": "sha512-hZ5O7PDz1vQ99TS7HD3FJ9zVynfU1y+VWId6U1Pldvd8hmAYrNec/XLPYJKD3dLOW6NXak6aAQAuMuSo3ji0tQ==", + "version": "250829098.0.16", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.16.tgz", + "integrity": "sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==", "license": "MIT" }, "node_modules/hermes-estree": { diff --git a/package.json b/package.json index 3eb55d82..c1e6c43d 100644 --- a/package.json +++ b/package.json @@ -60,12 +60,14 @@ "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.84.1", + "hermes-compiler": "250829098.0.16", "unset-value": "2.0.1", "semver": "7.7.4" }, "resolutions": { "react": "19.2.3", "react-dom": "19.2.3", - "react-native": "0.84.1" + "react-native": "0.84.1", + "hermes-compiler": "250829098.0.16" } } From 03dafa652bd5cd1dc140571610deaee3308aee7c Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 20 Jul 2026 18:50:08 +0200 Subject: [PATCH 03/11] fix: remove hard pinning of entire hermes v1 and kept only hermes compiler pinning in package.json --- ios/Podfile | 18 ------------------ ios/Podfile.lock | 16 ++++++++-------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index 4e234da8..d9299de6 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,23 +1,5 @@ source 'https://cdn.cocoapods.org/' -# Sync hermes v1 version from package.json into react-native's SDK version files -# so that iOS uses the same pinned version as the Android/npm resolution. -require 'json' -package_json = JSON.parse(File.read(File.join(__dir__, "../package.json"))) -hermes_v1_version = package_json.dig("overrides", "hermes-compiler") -if hermes_v1_version - rn_sdk_path = File.join(__dir__, "../node_modules/react-native/sdks") - # Update version.properties (used by hermes-engine.podspec) - version_props_path = File.join(rn_sdk_path, "hermes-engine", "version.properties") - if File.exist?(version_props_path) - content = File.read(version_props_path) - File.write(version_props_path, content.gsub(/HERMES_V1_VERSION_NAME=.*/, "HERMES_V1_VERSION_NAME=#{hermes_v1_version}")) - end - # Update .hermesv1version (used as the CocoaPods cache-busting tag) - hermesv1_tag_path = File.join(rn_sdk_path, ".hermesv1version") - File.write(hermesv1_tag_path, "hermes-v#{hermes_v1_version}") if File.exist?(hermesv1_tag_path) -end - def node_require(script) # Resolve script with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 533761fd..3424e204 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,8 +1,8 @@ PODS: - FBLazyVector (0.84.1) - - hermes-engine (250829098.0.16): - - hermes-engine/Pre-built (= 250829098.0.16) - - hermes-engine/Pre-built (250829098.0.16) + - hermes-engine (250829098.0.9): + - hermes-engine/Pre-built (= 250829098.0.9) + - hermes-engine/Pre-built (250829098.0.9) - IQKeyboardManager (6.5.19) - libavif/core (0.11.1) - libavif/libdav1d (0.11.1): @@ -69,7 +69,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - OpenSSL-Universal (3.3.3001) + - OpenSSL-Universal (3.6.2000) - RCTDeprecation (0.84.1) - RCTRequired (0.84.1) - RCTSwiftUI (0.84.1) @@ -2706,7 +2706,7 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/FBLazyVector" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v250829098.0.16 + :tag: hermes-v250829098.0.9 MendixNative: :path: "../node_modules/mendix-native" op-sqlite: @@ -2902,14 +2902,14 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: FBLazyVector: e97c19a5a442429d1988f182a1940fb08df514da - hermes-engine: 69c996601e0d8f3e0568eaa317bfb9c13b5f5618 + hermes-engine: 054cdf1294d0852c33cd980e7fcd94b4274ed8b3 IQKeyboardManager: c8665b3396bd0b79402b4c573eac345a31c7d485 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 MendixNative: b0ea153b893ce40b90016f397e9a5acfe4444c33 op-sqlite: e9ef65bcf95a97863874cee87841425bb71c8396 - OpenSSL-Universal: 6082b0bf950e5636fe0d78def171184e2b3899c2 + OpenSSL-Universal: ecee7b138fa75a74ecf00d7ffd248fb584739b9e RCTDeprecation: af44b104091a34482596cd9bd7e8d90c4e9b4bd7 RCTRequired: bb77b070f75f53398ce43c0aaaa58337cebe2bf6 RCTSwiftUI: afc0a0a635860da1040a0b894bfd529da06d7810 @@ -3011,6 +3011,6 @@ SPEC CHECKSUMS: SwiftAudioEx: f6aa653770f3a0d3851edaf8d834a30aee4a7646 Yoga: c0b3f2c7e8d3e327e450223a2414ca3fa296b9a2 -PODFILE CHECKSUM: 09cf4c9bdbcffba8ca592025f48d96797828da8b +PODFILE CHECKSUM: 336902a926a1c6b0b4e426a1eeb85e04f7bbf783 COCOAPODS: 1.17.0 From bb2a33644cf164bfbe57dbf8bc57fb1321de0c42 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Tue, 21 Jul 2026 13:05:45 +0200 Subject: [PATCH 04/11] fix: switch to using hermes ...0.14 --- package-lock.json | 12 ++++++------ package.json | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 127bff73..f4efb291 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5198,12 +5198,6 @@ "he": "bin/he" } }, - "node_modules/hermes-compiler": { - "version": "250829098.0.16", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.16.tgz", - "integrity": "sha512-xsgzk+mUyvt9t1nUbF8USBlYxajTUtPJhVZ86q85s/SEoMKCF+52YZcudb0ENSnV3T3lV9mgB3s6R7+pH90zgw==", - "license": "MIT" - }, "node_modules/hermes-estree": { "version": "0.32.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", @@ -8368,6 +8362,12 @@ "node": ">=18" } }, + "node_modules/react-native/node_modules/hermes-compiler": { + "version": "250829098.0.14", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.14.tgz", + "integrity": "sha512-5meXwsZxgiqFaJjNzwjzI9IyUkuGGBisu+z9BvQWmGVpjH6nz11hgqkyxe4dl8UAdyIV4lTbz91+Dlnjz0VxqA==", + "license": "MIT" + }, "node_modules/react-native/node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", diff --git a/package.json b/package.json index c1e6c43d..cafd4ae9 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.84.1", - "hermes-compiler": "250829098.0.16", + "hermes-compiler": "250829098.0.14", "unset-value": "2.0.1", "semver": "7.7.4" }, @@ -68,6 +68,6 @@ "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.84.1", - "hermes-compiler": "250829098.0.16" + "hermes-compiler": "250829098.0.14" } } From 7fc2605d0c7f1ef0b179a8054fa8e5b704935627 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Tue, 21 Jul 2026 13:33:07 +0200 Subject: [PATCH 05/11] fix: add custom hermesc location for android --- android/app/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/android/app/build.gradle b/android/app/build.gradle index 1935f255..7b0a7c57 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -47,6 +47,9 @@ apply plugin: 'org.jetbrains.kotlin.plugin.compose' // // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] + + hermesCommand = "../node_modules/react-native/node_modules/hermes-compiler/hermesc" + /* Autolinking */ autolinkLibrariesWithApp() } From 75cf9212d00db83671d0d2fd9cf6791b1d4054c8 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Tue, 21 Jul 2026 15:03:05 +0200 Subject: [PATCH 06/11] fix: hermesc path when building from different OS --- android/app/build.gradle | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 7b0a7c57..e80ab0d9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -3,6 +3,8 @@ apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" apply plugin: 'org.jetbrains.kotlin.plugin.compose' +import org.gradle.internal.os.OperatingSystem + /** * This is the configuration block to customize your React Native Android app. * By default you don't need to apply any configuration, just uncomment the lines you need. @@ -48,7 +50,18 @@ apply plugin: 'org.jetbrains.kotlin.plugin.compose' // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] - hermesCommand = "../node_modules/react-native/node_modules/hermes-compiler/hermesc" + def hermescDir = file("../node_modules/react-native/node_modules/hermes-compiler/hermesc") + def os = OperatingSystem.current() + + if (os.isMacOsX()) { + hermesCommand = "${hermescDir}/osx-bin/hermesc" + } else if (os.isLinux()) { + hermesCommand = "${hermescDir}/linux64-bin/hermesc" + } else if (os.isWindows()) { + hermesCommand = "${hermescDir}/win64-bin/hermesc.exe" + } else { + throw new GradleException("Unsupported OS for Hermes compiler: " + OperatingSystem.current()) + } /* Autolinking */ autolinkLibrariesWithApp() From 77fb400b51b2c4493e3a543559b8299c6f9c78ec Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Tue, 21 Jul 2026 15:16:04 +0200 Subject: [PATCH 07/11] fix: linux permission to run hermesc overriden variant --- .github/workflows/android-build-custom-dev-app.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/android-build-custom-dev-app.yml b/.github/workflows/android-build-custom-dev-app.yml index e14256fa..5c1c4d30 100644 --- a/.github/workflows/android-build-custom-dev-app.yml +++ b/.github/workflows/android-build-custom-dev-app.yml @@ -28,6 +28,9 @@ jobs: - name: npm install run: npm ci + + - name: Make Hermes compiler executable (Linux) + run: chmod +x node_modules/react-native/node_modules/hermes-compiler/hermesc/linux64-bin/hermesc - name: Add NDK 27.3.13750724 run: echo "y" | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;27.3.13750724" From 25e2c9bc0640a5e1fa379e0c4be7dfd962cb1437 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Tue, 21 Jul 2026 15:28:21 +0200 Subject: [PATCH 08/11] fix: hermes path for ci --- .github/workflows/android-build-custom-dev-app.yml | 2 +- android/app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android-build-custom-dev-app.yml b/.github/workflows/android-build-custom-dev-app.yml index 5c1c4d30..0c60dfa7 100644 --- a/.github/workflows/android-build-custom-dev-app.yml +++ b/.github/workflows/android-build-custom-dev-app.yml @@ -30,7 +30,7 @@ jobs: run: npm ci - name: Make Hermes compiler executable (Linux) - run: chmod +x node_modules/react-native/node_modules/hermes-compiler/hermesc/linux64-bin/hermesc + run: chmod +x ./node_modules/react-native/node_modules/hermes-compiler/hermesc/linux64-bin/hermesc - name: Add NDK 27.3.13750724 run: echo "y" | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;27.3.13750724" diff --git a/android/app/build.gradle b/android/app/build.gradle index e80ab0d9..01d5909a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -50,7 +50,7 @@ import org.gradle.internal.os.OperatingSystem // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] - def hermescDir = file("../node_modules/react-native/node_modules/hermes-compiler/hermesc") + def hermescDir = file("${rootDir}/../node_modules/react-native/node_modules/hermes-compiler/hermesc") def os = OperatingSystem.current() if (os.isMacOsX()) { From f055d48d5d01e7c67f020bf671910fd5929c1c30 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 27 Jul 2026 18:53:25 +0200 Subject: [PATCH 09/11] revert: use the default hermes compiler and runtime version --- android/app/build.gradle | 17 ----------------- android/build.gradle | 4 ---- package-lock.json | 6 +++--- package.json | 4 +--- 4 files changed, 4 insertions(+), 27 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 01d5909a..dd5e357b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -3,8 +3,6 @@ apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" apply plugin: 'org.jetbrains.kotlin.plugin.compose' -import org.gradle.internal.os.OperatingSystem - /** * This is the configuration block to customize your React Native Android app. * By default you don't need to apply any configuration, just uncomment the lines you need. @@ -49,20 +47,6 @@ import org.gradle.internal.os.OperatingSystem // // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] - - def hermescDir = file("${rootDir}/../node_modules/react-native/node_modules/hermes-compiler/hermesc") - def os = OperatingSystem.current() - - if (os.isMacOsX()) { - hermesCommand = "${hermescDir}/osx-bin/hermesc" - } else if (os.isLinux()) { - hermesCommand = "${hermescDir}/linux64-bin/hermesc" - } else if (os.isWindows()) { - hermesCommand = "${hermescDir}/win64-bin/hermesc.exe" - } else { - throw new GradleException("Unsupported OS for Hermes compiler: " + OperatingSystem.current()) - } - /* Autolinking */ autolinkLibrariesWithApp() } @@ -160,7 +144,6 @@ dependencies { configurations.all { resolutionStrategy { - force "com.facebook.hermes:hermes-android:${rootProject.ext.hermesVersion}" force "androidx.annotation:annotation:1.1.0" force( "com.google.android.gms:play-services-base:18.6.0", diff --git a/android/build.gradle b/android/build.gradle index 7e42fa28..e0813280 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,9 +1,5 @@ buildscript { ext { - hermesVersion = new groovy.json.JsonSlurper() - .parse(file("../package.json")) - .overrides["hermes-compiler"] - buildToolsVersion = "36.0.0" minSdkVersion = 29 compileSdkVersion = 36 diff --git a/package-lock.json b/package-lock.json index f4efb291..0f9a9cba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8363,9 +8363,9 @@ } }, "node_modules/react-native/node_modules/hermes-compiler": { - "version": "250829098.0.14", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.14.tgz", - "integrity": "sha512-5meXwsZxgiqFaJjNzwjzI9IyUkuGGBisu+z9BvQWmGVpjH6nz11hgqkyxe4dl8UAdyIV4lTbz91+Dlnjz0VxqA==", + "version": "250829098.0.9", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.9.tgz", + "integrity": "sha512-hZ5O7PDz1vQ99TS7HD3FJ9zVynfU1y+VWId6U1Pldvd8hmAYrNec/XLPYJKD3dLOW6NXak6aAQAuMuSo3ji0tQ==", "license": "MIT" }, "node_modules/react-native/node_modules/ws": { diff --git a/package.json b/package.json index cafd4ae9..3eb55d82 100644 --- a/package.json +++ b/package.json @@ -60,14 +60,12 @@ "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.84.1", - "hermes-compiler": "250829098.0.14", "unset-value": "2.0.1", "semver": "7.7.4" }, "resolutions": { "react": "19.2.3", "react-dom": "19.2.3", - "react-native": "0.84.1", - "hermes-compiler": "250829098.0.14" + "react-native": "0.84.1" } } From fcc94e78bef41d7f37a76013db79eec9c8be2955 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 27 Jul 2026 18:56:44 +0200 Subject: [PATCH 10/11] ci: remove js bundling from android/ios build step --- .github/workflows/android-build-custom-dev-app.yml | 5 +---- .github/workflows/ios-build-custom-dev-app.yml | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/android-build-custom-dev-app.yml b/.github/workflows/android-build-custom-dev-app.yml index 0c60dfa7..3b8b7a4c 100644 --- a/.github/workflows/android-build-custom-dev-app.yml +++ b/.github/workflows/android-build-custom-dev-app.yml @@ -28,12 +28,9 @@ jobs: - name: npm install run: npm ci - - - name: Make Hermes compiler executable (Linux) - run: chmod +x ./node_modules/react-native/node_modules/hermes-compiler/hermesc/linux64-bin/hermesc - name: Add NDK 27.3.13750724 run: echo "y" | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;27.3.13750724" - name: Build with Gradle - run: ./gradlew assembleDevDebug + run: ./gradlew assembleDevDebug -x createBundleDevDebugJsAndAssets -x createBundleDevDebugOptimizedJsAndAssets working-directory: ./android diff --git a/.github/workflows/ios-build-custom-dev-app.yml b/.github/workflows/ios-build-custom-dev-app.yml index 54a56460..95107764 100644 --- a/.github/workflows/ios-build-custom-dev-app.yml +++ b/.github/workflows/ios-build-custom-dev-app.yml @@ -55,6 +55,8 @@ jobs: - name: iOS Build Action uses: yukiarrr/ios-build-action@v1.12.0 + env: + SKIP_BUNDLING: '1' with: project-path: ./ios/nativetemplate.xcodeproj p12-base64: ${{ secrets.IOS_DUMMY_P12 }} From 15cdaf6c9d31c1a7864955082243410206c913a6 Mon Sep 17 00:00:00 2001 From: MxKevinBeqo Date: Mon, 27 Jul 2026 19:19:53 +0200 Subject: [PATCH 11/11] ci: add variable debuggableVariants for ci-only --- .github/workflows/android-build-custom-dev-app.yml | 2 +- android/app/build.gradle | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android-build-custom-dev-app.yml b/.github/workflows/android-build-custom-dev-app.yml index 3b8b7a4c..0f93e514 100644 --- a/.github/workflows/android-build-custom-dev-app.yml +++ b/.github/workflows/android-build-custom-dev-app.yml @@ -32,5 +32,5 @@ jobs: - name: Add NDK 27.3.13750724 run: echo "y" | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;27.3.13750724" - name: Build with Gradle - run: ./gradlew assembleDevDebug -x createBundleDevDebugJsAndAssets -x createBundleDevDebugOptimizedJsAndAssets + run: ./gradlew assembleDevDebug -PrnDebuggableVariants=devDebug,devDebugOptimized working-directory: ./android diff --git a/android/app/build.gradle b/android/app/build.gradle index dd5e357b..a64aabec 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -3,6 +3,12 @@ apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" apply plugin: 'org.jetbrains.kotlin.plugin.compose' +def ciDebuggableVariants = (project.findProperty("rnDebuggableVariants") ?: "") + .toString() + .split(",") + .collect { it.trim() } + .findAll { !it.isEmpty() } + /** * This is the configuration block to customize your React Native Android app. * By default you don't need to apply any configuration, just uncomment the lines you need. @@ -21,7 +27,7 @@ apply plugin: 'org.jetbrains.kotlin.plugin.compose' // The list of variants to that are debuggable. For those we're going to // skip the bundling of the JS bundle and the assets. By default is just 'debug'. // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. - debuggableVariants = ["appstoreDebug", "appstoreRelease"] + debuggableVariants = (["appstoreDebug", "appstoreRelease"] + ciDebuggableVariants).unique() /* Bundling */ // A list containing the node command and its flags. Default is just 'node'. // nodeExecutableAndArgs = ["node"]