From ed2ff5ac86227021aa6b978d74ef67292a3ed714 Mon Sep 17 00:00:00 2001 From: Thibault Malbranche Date: Mon, 16 Feb 2026 18:48:50 +0100 Subject: [PATCH] fix(react-native): resolve included-build gradle.properties from parent build in monorepos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit React Native’s included build was reading only ../../android/gradle.properties, which breaks in monorepos where Android apps live under packages/*/android. This updates settings.gradle.kts to resolve gradle.properties from the parent Gradle start parameters (projectDir/currentDir) first, with the old relative path kept as a backward-compatible fallback. This ensures hermesV1Enabled and react.hermesV1Enabled are propagated reliably across composite builds. --- packages/react-native/settings.gradle.kts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-native/settings.gradle.kts b/packages/react-native/settings.gradle.kts index 3a7ab35f3af4..ba659426db94 100644 --- a/packages/react-native/settings.gradle.kts +++ b/packages/react-native/settings.gradle.kts @@ -46,9 +46,20 @@ project(":packages:react-native").projectDir = file("/tmp") buildscript { val properties = java.util.Properties() val propertiesToInherit = listOf("hermesV1Enabled", "react.hermesV1Enabled") + val parentGradle = gradle.parent + val parentProjectDir = parentGradle?.startParameter?.projectDir + val parentCurrentDir = parentGradle?.startParameter?.currentDir + val gradlePropertiesCandidates = + listOfNotNull( + parentProjectDir?.resolve("gradle.properties"), + parentCurrentDir?.resolve("gradle.properties"), + // Backward-compatible fallback for classic RN app layouts. + file("../../android/gradle.properties"), + ) try { - file("../../android/gradle.properties").inputStream().use { properties.load(it) } + val propertiesFile = gradlePropertiesCandidates.firstOrNull { it.exists() } + propertiesFile?.inputStream()?.use { properties.load(it) } gradle.rootProject { propertiesToInherit.forEach { property ->