diff --git a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt index c6c85ba26e5..0d582772ac6 100644 --- a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt +++ b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt @@ -114,6 +114,14 @@ abstract class ReactExtension @Inject constructor(project: Project) { val devDisabledInVariants: ListProperty = objects.listProperty(String::class.java).convention(emptyList()) + /** + * Functional interface to disable dev mode only on specific [BaseVariant] Default: will check + * [devDisabledInVariants] or return True for Release variants and False for Debug variants. + */ + var disableDevForVariant: (BaseVariant) -> Boolean = { variant -> + variant.name in devDisabledInVariants.get() || variant.isRelease + } + /** * Variant Name to Boolean map that allows to toggle the bundle command for a specific variant. * Default: {} diff --git a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt index b14b138cc72..12700ec5724 100644 --- a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt +++ b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt @@ -64,7 +64,7 @@ internal fun Project.configureReactTasks(variant: BaseVariant, config: ReactExte } it.execCommand = execCommand it.bundleCommand = config.bundleCommand.get() - it.devEnabled = !(variant.name in config.devDisabledInVariants.get() || isRelease) + it.devEnabled = !config.disableDevForVariant(variant) it.entryFile = detectedEntryFile(config) val extraArgs = mutableListOf() diff --git a/react.gradle b/react.gradle index 528b7a0c36b..d903659f7f0 100644 --- a/react.gradle +++ b/react.gradle @@ -99,6 +99,12 @@ def hermesFlagsForVariant = config.hermesFlagsForVariant ?: { return hermesFlags } +// Set disableDevForVariant to a function to configure per variant, +// defaults to `devDisabledIn${targetName}` or True for Release variants and False for debug variants +def disableDevForVariant = config.disableDevForVariant ?: { + def variant -> config."devDisabledIn${variant.name.capitalize()}" || variant.name.toLowerCase().contains("release") +} + // Set deleteDebugFilesForVariant to a function to configure per variant, // defaults to True for Release variants and False for debug variants def deleteDebugFilesForVariant = config.deleteDebugFilesForVariant ?: { @@ -172,8 +178,7 @@ afterEvaluate { workingDir(reactRoot) // Set up dev mode - def devEnabled = !(config."devDisabledIn${targetName}" - || targetName.toLowerCase().contains("release")) + def devEnabled = !disableDevForVariant(variant) def extraArgs = []