From 02802bb956faeaf921bd23c161c89216ca9e060b Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Wed, 19 Aug 2026 14:05:09 +0500 Subject: [PATCH 1/4] feat: enable AGP v9 in BGP --- gradle-plugins/react/brownfield/gradle/libs.versions.toml | 4 ++-- .../react/brownfield/gradle/wrapper/gradle-wrapper.properties | 2 +- .../com/callstack/react/brownfield/shared/MergeClassesTask.kt | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/gradle-plugins/react/brownfield/gradle/libs.versions.toml b/gradle-plugins/react/brownfield/gradle/libs.versions.toml index 74ecb054..6ce14827 100644 --- a/gradle-plugins/react/brownfield/gradle/libs.versions.toml +++ b/gradle-plugins/react/brownfield/gradle/libs.versions.toml @@ -2,8 +2,8 @@ kotlinJvm = "2.2.21" ktlint = "12.1.1" detekt = "1.23.7" -agp = "8.5.2" -common = "31.2.2" # do not bump it for now, as it throws an error for incompatible AGP used +agp = "9.2.1" +common = "32.2.0" asm-commons = "9.7" versioncompare = "1.5.0" junit = "5.11.4" diff --git a/gradle-plugins/react/brownfield/gradle/wrapper/gradle-wrapper.properties b/gradle-plugins/react/brownfield/gradle/wrapper/gradle-wrapper.properties index b82aa23a..c61a118f 100644 --- a/gradle-plugins/react/brownfield/gradle/wrapper/gradle-wrapper.properties +++ b/gradle-plugins/react/brownfield/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt index a15831df..1022f843 100644 --- a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt +++ b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt @@ -7,6 +7,7 @@ import org.gradle.api.DefaultTask import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Property +import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Classpath import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputDirectory @@ -16,6 +17,7 @@ import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths +@CacheableTask abstract class MergeClassesTask : DefaultTask() { @get:Classpath abstract val inputClassesJars: ConfigurableFileCollection From 53ee634ec1b35d18518d174064f2a26e45c3bbd8 Mon Sep 17 00:00:00 2001 From: hurali97 Date: Mon, 28 Sep 2026 04:42:51 -0700 Subject: [PATCH 2/4] chore: bump BGP --- apps/RNApp/android/build.gradle | 2 +- apps/scripts/prepare-android-build-gradle-for-ci.ts | 2 +- gradle-plugins/react/brownfield/gradle.properties | 2 +- .../expo-config-plugin/android/__tests__/gradleHelpers.test.ts | 2 +- .../src/expo-config-plugin/android/utils/constants.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/RNApp/android/build.gradle b/apps/RNApp/android/build.gradle index cd1bbe0e..c9e5efcc 100644 --- a/apps/RNApp/android/build.gradle +++ b/apps/RNApp/android/build.gradle @@ -16,7 +16,7 @@ buildscript { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") - classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha09-SNAPSHOT") + classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha10-SNAPSHOT") } } diff --git a/apps/scripts/prepare-android-build-gradle-for-ci.ts b/apps/scripts/prepare-android-build-gradle-for-ci.ts index 02cfd600..d3f983d8 100644 --- a/apps/scripts/prepare-android-build-gradle-for-ci.ts +++ b/apps/scripts/prepare-android-build-gradle-for-ci.ts @@ -9,7 +9,7 @@ if (!projectDirName) { const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const SNAPSHOT_VERSION = '2.0.0-alpha09-SNAPSHOT'; +const SNAPSHOT_VERSION = '2.0.0-alpha10-SNAPSHOT'; const targetPath = path.resolve( __dirname, '..', diff --git a/gradle-plugins/react/brownfield/gradle.properties b/gradle-plugins/react/brownfield/gradle.properties index 769b32a1..5b0eab2f 100644 --- a/gradle-plugins/react/brownfield/gradle.properties +++ b/gradle-plugins/react/brownfield/gradle.properties @@ -1,6 +1,6 @@ PROJECT_ID=com.callstack.react.brownfield ARTIFACT_ID=brownfield-gradle-plugin -VERSION=2.0.0-alpha09 +VERSION=2.0.0-alpha10 GROUP=com.callstack.react IMPLEMENTATION_CLASS=com.callstack.react.brownfield.plugin.RNBrownfieldPlugin diff --git a/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts b/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts index 5fde6d54..9100d096 100644 --- a/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts +++ b/packages/react-native-brownfield/src/expo-config-plugin/android/__tests__/gradleHelpers.test.ts @@ -16,7 +16,7 @@ describe('gradleHelpers', () => { }`; expect(modifyRootBuildGradle(contents)).toContain( - 'classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha09")' + 'classpath("com.callstack.react:brownfield-gradle-plugin:2.0.0-alpha10")' ); }); diff --git a/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts b/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts index 51d012df..c4637a05 100644 --- a/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts +++ b/packages/react-native-brownfield/src/expo-config-plugin/android/utils/constants.ts @@ -1,2 +1,2 @@ -export const BROWNFIELD_PLUGIN_VERSION = '2.0.0-alpha09'; +export const BROWNFIELD_PLUGIN_VERSION = '2.0.0-alpha10'; export const brownfieldGradlePluginDependency = `classpath("com.callstack.react:brownfield-gradle-plugin:${BROWNFIELD_PLUGIN_VERSION}")`; From 4598e12ca2cb83c885f0d970cf9fe7d9e60a8236 Mon Sep 17 00:00:00 2001 From: hurali97 Date: Mon, 28 Sep 2026 04:49:35 -0700 Subject: [PATCH 3/4] fix: mark MergeClasses as uncachable --- apps/ExpoApp58/package.json | 1 + .../com/callstack/react/brownfield/shared/MergeClassesTask.kt | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/ExpoApp58/package.json b/apps/ExpoApp58/package.json index dbd2ad94..7323fcbf 100644 --- a/apps/ExpoApp58/package.json +++ b/apps/ExpoApp58/package.json @@ -21,6 +21,7 @@ "android": { "expo": { "minifyEnabled": false, + "useLocalMaven": true, "extraProguardRules": [ "-keep class com.callstack.rnbrownfield.demo.expoapp58.BrownfieldStore { *; }", "-keep class com.callstack.rnbrownfield.demo.expoapp58.BrownfieldStore$Companion { *; }", diff --git a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt index 1022f843..ac76c8ce 100644 --- a/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt +++ b/gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/MergeClassesTask.kt @@ -7,17 +7,17 @@ import org.gradle.api.DefaultTask import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Property -import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Classpath import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.UntrackedTask import java.io.File import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths -@CacheableTask +@UntrackedTask(because = "Copies classes into Java and Kotlin compilation directories owned by other tasks") abstract class MergeClassesTask : DefaultTask() { @get:Classpath abstract val inputClassesJars: ConfigurableFileCollection From 8dc5fa178d72aa6359d1d3ba97f1749b07258c09 Mon Sep 17 00:00:00 2001 From: hurali97 Date: Mon, 28 Sep 2026 04:54:12 -0700 Subject: [PATCH 4/4] chore: run changeset --- .changeset/forty-papers-lead.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/forty-papers-lead.md diff --git a/.changeset/forty-papers-lead.md b/.changeset/forty-papers-lead.md new file mode 100644 index 00000000..b2577830 --- /dev/null +++ b/.changeset/forty-papers-lead.md @@ -0,0 +1,5 @@ +--- +'@callstack/react-native-brownfield': minor +--- + +agp v9 compliance