From 3ab5180dc202e5a94ddbca409837d3e9603ea03f Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Mon, 9 Nov 2026 14:20:03 +0000 Subject: [PATCH 1/4] Bump Kotlin to 2.4.21 --- packages/gradle-plugin/gradle/libs.versions.toml | 2 +- packages/react-native/gradle/libs.versions.toml | 2 +- private/helloworld/android/build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/gradle-plugin/gradle/libs.versions.toml b/packages/gradle-plugin/gradle/libs.versions.toml index c5621244b1f8..d1c7721fa70f 100644 --- a/packages/gradle-plugin/gradle/libs.versions.toml +++ b/packages/gradle-plugin/gradle/libs.versions.toml @@ -4,7 +4,7 @@ gson = "2.8.9" guava = "31.0.1-jre" javapoet = "1.13.0" junit = "4.13.2" -kotlin = "2.3.21" +kotlin = "2.4.21" assertj = "3.25.1" [libraries] diff --git a/packages/react-native/gradle/libs.versions.toml b/packages/react-native/gradle/libs.versions.toml index 35407c86b177..d3bf8e02259d 100644 --- a/packages/react-native/gradle/libs.versions.toml +++ b/packages/react-native/gradle/libs.versions.toml @@ -31,7 +31,7 @@ javax-inject = "1" jsc-android = "2026004.0.1" jsr305 = "3.0.2" junit = "4.13.2" -kotlin = "2.3.21" +kotlin = "2.4.21" mockito = "3.12.4" mockito-kotlin = "3.2.0" nexus-publish = "2.0.0" diff --git a/private/helloworld/android/build.gradle b/private/helloworld/android/build.gradle index 419eda091165..934993a031a9 100644 --- a/private/helloworld/android/build.gradle +++ b/private/helloworld/android/build.gradle @@ -12,7 +12,7 @@ buildscript { compileSdkVersion = 37 targetSdkVersion = 35 ndkVersion = "28.2.13676358" - kotlinVersion = "2.3.21" + kotlinVersion = "2.4.21" } repositories { google() From 9014907494bcefa1de395b7376b54386df98f0fb Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Mon, 9 Nov 2026 17:38:42 +0000 Subject: [PATCH 2/4] Suppress deprecated Kotlin API version warning until RN 0.90 --- .../gradle-plugin/react-native-gradle-plugin/build.gradle.kts | 2 ++ packages/gradle-plugin/settings-plugin/build.gradle.kts | 2 ++ packages/gradle-plugin/shared-testutil/build.gradle.kts | 2 ++ packages/gradle-plugin/shared/build.gradle.kts | 2 ++ 4 files changed, 8 insertions(+) diff --git a/packages/gradle-plugin/react-native-gradle-plugin/build.gradle.kts b/packages/gradle-plugin/react-native-gradle-plugin/build.gradle.kts index 78a8e7508f33..c4e52f9367a6 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/build.gradle.kts +++ b/packages/gradle-plugin/react-native-gradle-plugin/build.gradle.kts @@ -64,6 +64,8 @@ kotlin { jvmToolchain(17) } tasks.withType().configureEach { compilerOptions { apiVersion.set(KotlinVersion.KOTLIN_2_1) + // Remove this suppression in RN 0.90 when the Kotlin API version can be raised. + freeCompilerArgs.add("-Xwarning-level=DEPRECATED_LANGUAGE_VERSION:disabled") // See comment above on JDK 11 support jvmTarget.set(JvmTarget.JVM_11) allWarningsAsErrors.set( diff --git a/packages/gradle-plugin/settings-plugin/build.gradle.kts b/packages/gradle-plugin/settings-plugin/build.gradle.kts index c1c86c34f05d..3bf6beb7cc10 100644 --- a/packages/gradle-plugin/settings-plugin/build.gradle.kts +++ b/packages/gradle-plugin/settings-plugin/build.gradle.kts @@ -54,6 +54,8 @@ kotlin { jvmToolchain(17) } tasks.withType().configureEach { compilerOptions { apiVersion.set(KotlinVersion.KOTLIN_2_1) + // Remove this suppression in RN 0.90 when the Kotlin API version can be raised. + freeCompilerArgs.add("-Xwarning-level=DEPRECATED_LANGUAGE_VERSION:disabled") // See comment above on JDK 11 support jvmTarget.set(JvmTarget.JVM_11) allWarningsAsErrors.set( diff --git a/packages/gradle-plugin/shared-testutil/build.gradle.kts b/packages/gradle-plugin/shared-testutil/build.gradle.kts index 8f1b90907823..71b4885a67d8 100644 --- a/packages/gradle-plugin/shared-testutil/build.gradle.kts +++ b/packages/gradle-plugin/shared-testutil/build.gradle.kts @@ -25,6 +25,8 @@ kotlin { jvmToolchain(17) } tasks.withType().configureEach { compilerOptions { apiVersion.set(KotlinVersion.KOTLIN_2_1) + // Remove this suppression in RN 0.90 when the Kotlin API version can be raised. + freeCompilerArgs.add("-Xwarning-level=DEPRECATED_LANGUAGE_VERSION:disabled") // See comment above on JDK 11 support jvmTarget.set(JvmTarget.JVM_11) allWarningsAsErrors.set( diff --git a/packages/gradle-plugin/shared/build.gradle.kts b/packages/gradle-plugin/shared/build.gradle.kts index 7b4d96ff6677..790bf0e11fc0 100644 --- a/packages/gradle-plugin/shared/build.gradle.kts +++ b/packages/gradle-plugin/shared/build.gradle.kts @@ -31,6 +31,8 @@ kotlin { jvmToolchain(17) } tasks.withType().configureEach { compilerOptions { apiVersion.set(KotlinVersion.KOTLIN_2_1) + // Remove this suppression in RN 0.90 when the Kotlin API version can be raised. + freeCompilerArgs.add("-Xwarning-level=DEPRECATED_LANGUAGE_VERSION:disabled") // See comment above on JDK 11 support jvmTarget.set(JvmTarget.JVM_11) allWarningsAsErrors.set( From 5825c3401ba60e159b483ff73d5816269cd5ecaa Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 13 Nov 2026 12:07:06 +0000 Subject: [PATCH 3/4] Remove redundant Robolectric text layout annotations --- .../com/facebook/react/views/text/TextDecorationStyleTest.kt | 2 -- .../react/views/text/TextLayoutManagerPixelWidthTest.kt | 2 -- 2 files changed, 4 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextDecorationStyleTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextDecorationStyleTest.kt index ebf45d24eb62..9e28610a0159 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextDecorationStyleTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextDecorationStyleTest.kt @@ -28,13 +28,11 @@ import org.mockito.kotlin.verify import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config import org.robolectric.annotation.GraphicsMode -import org.robolectric.annotation.TextLayoutMode @RequiresApi(Build.VERSION_CODES.Q) @RunWith(RobolectricTestRunner::class) @Config(sdk = [Build.VERSION_CODES.UPSIDE_DOWN_CAKE, Build.VERSION_CODES.VANILLA_ICE_CREAM]) @GraphicsMode(GraphicsMode.Mode.NATIVE) -@TextLayoutMode(TextLayoutMode.Mode.REALISTIC) class TextDecorationStyleTest { @Test fun fromStringSolid() { diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerPixelWidthTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerPixelWidthTest.kt index a42a4ee2e401..dbcdacaaa74d 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerPixelWidthTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerPixelWidthTest.kt @@ -20,11 +20,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.GraphicsMode -import org.robolectric.annotation.TextLayoutMode @RunWith(RobolectricTestRunner::class) @GraphicsMode(GraphicsMode.Mode.NATIVE) -@TextLayoutMode(TextLayoutMode.Mode.REALISTIC) class TextLayoutManagerPixelWidthTest { private val text = SpannableString("Add payment method") private val paint = TextPaint(TextPaint.ANTI_ALIAS_FLAG).apply { textSize = 16f } From 3879a12b34fa2ecff781b424cc8e353a3fae2713 Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 13 Nov 2026 12:32:02 +0000 Subject: [PATCH 4/4] Remove redundant Robolectric layout mode in new text test --- .../views/text/TextLayoutManagerFontSizeToFitPixelHeightTest.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerFontSizeToFitPixelHeightTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerFontSizeToFitPixelHeightTest.kt index ce2669d8b388..f7fc2ab1d646 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerFontSizeToFitPixelHeightTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerFontSizeToFitPixelHeightTest.kt @@ -26,11 +26,9 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.GraphicsMode -import org.robolectric.annotation.TextLayoutMode @RunWith(RobolectricTestRunner::class) @GraphicsMode(GraphicsMode.Mode.NATIVE) -@TextLayoutMode(TextLayoutMode.Mode.REALISTIC) @SuppressLint("InlinedApi") class TextLayoutManagerFontSizeToFitPixelHeightTest {