diff --git a/packages/react-native/ReactAndroid/hermes-engine/build.gradle b/packages/react-native/ReactAndroid/hermes-engine/build.gradle index 4cb7ad9e9f979b..1ce6cdee2798c2 100644 --- a/packages/react-native/ReactAndroid/hermes-engine/build.gradle +++ b/packages/react-native/ReactAndroid/hermes-engine/build.gradle @@ -228,7 +228,8 @@ android { cmake { arguments "-DCMAKE_BUILD_TYPE=MinSizeRel" // For release builds, we don't want to enable the Hermes Debugger. - arguments "-DHERMES_ENABLE_DEBUGGER=False" + // For Expo Go, we have to enable debugging even on release builds. + arguments "-DHERMES_ENABLE_DEBUGGER=True" } } } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt index 0a7f253f63ce56..60a5a09449394c 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt @@ -15,7 +15,7 @@ add_library(hermes_executor target_compile_options( hermes_executor PRIVATE - $<$:-DHERMES_ENABLE_DEBUGGER=1> + -DHERMES_ENABLE_DEBUGGER=1 -std=c++20 -fexceptions ) diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt index 1848f355fb6fa9..50f027dd8a45a3 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt @@ -15,7 +15,7 @@ add_library(hermesinstancejni target_compile_options( hermesinstancejni PRIVATE - $<$:-DHERMES_ENABLE_DEBUGGER=1> + -DHERMES_ENABLE_DEBUGGER=1 -std=c++20 -fexceptions ) diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt index ab59671367e982..40daedfd48836a 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt @@ -15,7 +15,7 @@ add_library(rninstance target_compile_options( rninstance PRIVATE - $<$:-DHERMES_ENABLE_DEBUGGER=1> + -DHERMES_ENABLE_DEBUGGER=1 -std=c++20 -fexceptions ) diff --git a/packages/react-native/ReactCommon/hermes/executor/CMakeLists.txt b/packages/react-native/ReactCommon/hermes/executor/CMakeLists.txt index 6c72e5d1b90ac2..6ed337abb5f598 100644 --- a/packages/react-native/ReactCommon/hermes/executor/CMakeLists.txt +++ b/packages/react-native/ReactCommon/hermes/executor/CMakeLists.txt @@ -33,5 +33,6 @@ else() hermes_executor_common PRIVATE -DNDEBUG + -DHERMES_ENABLE_DEBUGGER=1 ) endif() diff --git a/packages/react-native/ReactCommon/hermes/inspector-modern/CMakeLists.txt b/packages/react-native/ReactCommon/hermes/inspector-modern/CMakeLists.txt index bd051c84563f82..3b1cf40fa4582b 100644 --- a/packages/react-native/ReactCommon/hermes/inspector-modern/CMakeLists.txt +++ b/packages/react-native/ReactCommon/hermes/inspector-modern/CMakeLists.txt @@ -26,6 +26,14 @@ if(${CMAKE_BUILD_TYPE} MATCHES Debug) PRIVATE -DHERMES_ENABLE_DEBUGGER=1 ) +else() + # Expo Go requires debugging on release builds + target_compile_options( + hermes_inspector_modern + PRIVATE + # Expo Go requires debugging on release builds + -DHERMES_ENABLE_DEBUGGER=1 + ) endif() target_include_directories(hermes_inspector_modern PUBLIC ${REACT_COMMON_DIR}) diff --git a/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt b/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt index ace51b62265ca7..272b27f038ad11 100644 --- a/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt @@ -15,7 +15,7 @@ add_library(bridgeless target_compile_options( bridgeless PRIVATE - $<$:-DHERMES_ENABLE_DEBUGGER=1> + -DHERMES_ENABLE_DEBUGGER=1 -std=c++20 -fexceptions ) diff --git a/packages/react-native/sdks/hermes-engine/hermes-engine.podspec b/packages/react-native/sdks/hermes-engine/hermes-engine.podspec index ab678e142c6511..6fd85aad8282c1 100644 --- a/packages/react-native/sdks/hermes-engine/hermes-engine.podspec +++ b/packages/react-native/sdks/hermes-engine/hermes-engine.podspec @@ -12,6 +12,9 @@ react_native_path = File.join(__dir__, "..", "..") package = JSON.parse(File.read(File.join(react_native_path, "package.json"))) version = package['version'] +# Force building Hermes from source because Expo Go requires customized Hermes build +ENV['BUILD_FROM_SOURCE'] = 'true' + source_type = hermes_source_type(version, react_native_path) source = podspec_source(source_type, version, react_native_path) diff --git a/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh b/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh index e530a99c0c9b85..e6b33d415b345a 100755 --- a/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh +++ b/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh @@ -57,7 +57,8 @@ function configure_apple_framework { if [[ $BUILD_TYPE == "Debug" ]]; then enable_debugger="true" else - enable_debugger="false" + # Expo Go requires debugging on release build + enable_debugger="true" fi if [[ $BUILD_TYPE == "Debug" ]]; then # JS developers aren't VM developers. diff --git a/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh b/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh index 0e3066ee18a4ad..ffe10c4c72779f 100755 --- a/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh +++ b/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh @@ -10,7 +10,8 @@ release_version="$1"; shift hermesc_path="$1"; shift jsi_path="$1"; shift -enable_debugger="false" +# Expo Go requires debugging on release build +enable_debugger="true" if [[ "$CONFIGURATION" == "Debug" ]]; then enable_debugger="true" fi