@react-native/gradle-plugin 0.78.0-rc.0 → 0.79.0-nightly-20250116-843582b8b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native/gradle-plugin",
3
- "version": "0.78.0-rc.0",
3
+ "version": "0.79.0-nightly-20250116-843582b8b",
4
4
  "description": "Gradle Plugin for React Native",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -27,7 +27,6 @@ import com.facebook.react.utils.JsonUtils
27
27
  import com.facebook.react.utils.NdkConfiguratorUtils.configureReactNativeNdk
28
28
  import com.facebook.react.utils.ProjectUtils.isNewArchEnabled
29
29
  import com.facebook.react.utils.ProjectUtils.needsCodegenFromPackageJson
30
- import com.facebook.react.utils.ProjectUtils.shouldWarnIfNewArchFlagIsSetInPrealpha
31
30
  import com.facebook.react.utils.findPackageJsonFile
32
31
  import java.io.File
33
32
  import kotlin.system.exitProcess
@@ -42,7 +41,6 @@ class ReactPlugin : Plugin<Project> {
42
41
  override fun apply(project: Project) {
43
42
  checkJvmVersion(project)
44
43
  val extension = project.extensions.create("react", ReactExtension::class.java, project)
45
- checkIfNewArchFlagIsSet(project, extension)
46
44
 
47
45
  // We register a private extension on the rootProject so that project wide configs
48
46
  // like codegen config can be propagated from app project to libraries.
@@ -112,23 +110,6 @@ class ReactPlugin : Plugin<Project> {
112
110
  }
113
111
  }
114
112
 
115
- private fun checkIfNewArchFlagIsSet(project: Project, extension: ReactExtension) {
116
- if (project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)) {
117
- project.logger.warn(
118
- """
119
-
120
- ********************************************************************************
121
-
122
- WARNING: This version of React Native is ignoring the `newArchEnabled` flag you set. Please set it to true or remove it to suppress this warning.
123
-
124
-
125
- ********************************************************************************
126
-
127
- """
128
- .trimIndent())
129
- }
130
- }
131
-
132
113
  /** This function sets up `react-native-codegen` in our Gradle plugin. */
133
114
  @Suppress("UnstableApiUsage")
134
115
  private fun configureCodegen(
@@ -17,7 +17,6 @@ import com.facebook.react.utils.PropertyUtils.REACT_NATIVE_ARCHITECTURES
17
17
  import com.facebook.react.utils.PropertyUtils.SCOPED_HERMES_ENABLED
18
18
  import com.facebook.react.utils.PropertyUtils.SCOPED_NEW_ARCH_ENABLED
19
19
  import com.facebook.react.utils.PropertyUtils.SCOPED_REACT_NATIVE_ARCHITECTURES
20
- import java.io.File
21
20
  import org.gradle.api.Project
22
21
  import org.gradle.api.file.DirectoryProperty
23
22
 
@@ -29,8 +28,7 @@ internal object ProjectUtils {
29
28
  return (project.hasProperty(NEW_ARCH_ENABLED) &&
30
29
  project.property(NEW_ARCH_ENABLED).toString().toBoolean()) ||
31
30
  (project.hasProperty(SCOPED_NEW_ARCH_ENABLED) &&
32
- project.property(SCOPED_NEW_ARCH_ENABLED).toString().toBoolean()) ||
33
- shouldEnableNewArchForReactNativeVersion(project.reactNativeDir(extension))
31
+ project.property(SCOPED_NEW_ARCH_ENABLED).toString().toBoolean())
34
32
  }
35
33
 
36
34
  internal val Project.isHermesEnabled: Boolean
@@ -83,50 +81,6 @@ internal object ProjectUtils {
83
81
  internal fun Project.reactNativeDir(extension: ReactExtension): String =
84
82
  extension.reactNativeDir.get().asFile.absolutePath
85
83
 
86
- internal fun shouldEnableNewArchForReactNativeVersion(reactNativeDir: String): Boolean {
87
- val packageJsonFile = File(reactNativeDir, "package.json")
88
- if (!packageJsonFile.exists()) {
89
- return false
90
- }
91
-
92
- val rnPackageJson = JsonUtils.fromPackageJson(packageJsonFile)
93
- if (rnPackageJson == null) {
94
- return false
95
- }
96
-
97
- // This regex describe the version syntax for React Native in the shape of
98
- // major.minor.patch[-<prerelease>[[-.]k]]
99
- // Where
100
- // major is a number
101
- // minor is a number
102
- // patch is a number
103
- // <prerelease>[-.]k is optional, but if present is preceeded by a `-`
104
- // the <prerelease> tag is a string.
105
- // it can be followed by `-` or `.` and k is a number.
106
- val regex = """^(\d+)\.(\d+)\.(\d+)(?:-(\w+(?:[-.]\d+)?))?$""".toRegex()
107
-
108
- val matchResult = regex.find(rnPackageJson.version)
109
-
110
- if (matchResult == null) {
111
- return false
112
- }
113
-
114
- val prerelease = matchResult.groupValues[4].toString()
115
- return prerelease.contains("prealpha")
116
- }
117
-
118
- internal fun Project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension: ReactExtension): Boolean {
119
-
120
- val propertySetToFalse =
121
- (this.hasPropertySetToFalse(NEW_ARCH_ENABLED)) ||
122
- (this.hasPropertySetToFalse(SCOPED_NEW_ARCH_ENABLED))
123
-
124
- val shouldEnableNewArch =
125
- shouldEnableNewArchForReactNativeVersion(this.reactNativeDir(extension))
126
-
127
- return shouldEnableNewArch && propertySetToFalse
128
- }
129
-
130
84
  internal fun Project.hasPropertySetToFalse(property: String): Boolean =
131
85
  this.hasProperty(property) && this.property(property).toString().toBoolean() == false
132
86
  }
@@ -15,7 +15,6 @@ import com.facebook.react.utils.ProjectUtils.getReactNativeArchitectures
15
15
  import com.facebook.react.utils.ProjectUtils.isHermesEnabled
16
16
  import com.facebook.react.utils.ProjectUtils.isNewArchEnabled
17
17
  import com.facebook.react.utils.ProjectUtils.needsCodegenFromPackageJson
18
- import com.facebook.react.utils.ProjectUtils.shouldWarnIfNewArchFlagIsSetInPrealpha
19
18
  import java.io.File
20
19
  import org.assertj.core.api.Assertions.assertThat
21
20
  import org.junit.Rule
@@ -75,78 +74,6 @@ class ProjectUtilsTest {
75
74
  assertThat(project.isNewArchEnabled(extension)).isFalse()
76
75
  }
77
76
 
78
- @Test
79
- fun isNewArchEnabled_withRNVersionPrealpha_returnTrue() {
80
- val project = createProject()
81
- val extension = TestReactExtension(project)
82
- File(tempFolder.root, "package.json").apply {
83
- writeText(
84
- // language=json
85
- """
86
- {
87
- "version": "0.0.0-prealpha-202310916"
88
- }
89
- """
90
- .trimIndent())
91
- }
92
- extension.reactNativeDir.set(tempFolder.root)
93
- assertThat(project.isNewArchEnabled(extension)).isTrue()
94
- }
95
-
96
- @Test
97
- fun isNewArchEnabled_withRNVersion1PrereleaseString_returnTrue() {
98
- val project = createProject()
99
- val extension = TestReactExtension(project)
100
- File(tempFolder.root, "package.json").apply {
101
- writeText(
102
- // language=json
103
- """
104
- {
105
- "version": "1.2.3-prealpha0"
106
- }
107
- """
108
- .trimIndent())
109
- }
110
- extension.reactNativeDir.set(tempFolder.root)
111
- assertThat(project.isNewArchEnabled(extension)).isTrue()
112
- }
113
-
114
- @Test
115
- fun isNewArchEnabled_withRNVersion1PrereleaseStringDotNumber_returnTrue() {
116
- val project = createProject()
117
- val extension = TestReactExtension(project)
118
- File(tempFolder.root, "package.json").apply {
119
- writeText(
120
- // language=json
121
- """
122
- {
123
- "version": "1.2.3-prealpha.0"
124
- }
125
- """
126
- .trimIndent())
127
- }
128
- extension.reactNativeDir.set(tempFolder.root)
129
- assertThat(project.isNewArchEnabled(extension)).isTrue()
130
- }
131
-
132
- @Test
133
- fun isNewArchEnabled_withRNVersion1PrereleaseStringDashNumber_returnTrue() {
134
- val project = createProject()
135
- val extension = TestReactExtension(project)
136
- File(tempFolder.root, "package.json").apply {
137
- writeText(
138
- // language=json
139
- """
140
- {
141
- "version": "1.2.3-prealpha-0"
142
- }
143
- """
144
- .trimIndent())
145
- }
146
- extension.reactNativeDir.set(tempFolder.root)
147
- assertThat(project.isNewArchEnabled(extension)).isTrue()
148
- }
149
-
150
77
  @Test
151
78
  fun isNewArchEnabled_withRNVersion1000_returnFalse() {
152
79
  val project = createProject()
@@ -320,214 +247,4 @@ class ProjectUtilsTest {
320
247
  assertThat(archs[2]).isEqualTo("x86")
321
248
  assertThat(archs[3]).isEqualTo("x86_64")
322
249
  }
323
-
324
- @Test
325
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenNewArchIsSetToFalseAndOnPrealpha_returnTrue() {
326
- val project = createProject()
327
- project.extensions.extraProperties.set("newArchEnabled", "false")
328
- val extension = TestReactExtension(project)
329
- File(tempFolder.root, "package.json").apply {
330
- writeText(
331
- // language=json
332
- """
333
- {
334
- "version": "0.0.0-prealpha-2023100915"
335
- }
336
- """
337
- .trimIndent())
338
- }
339
- extension.reactNativeDir.set(tempFolder.root)
340
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isTrue()
341
- }
342
-
343
- @Test
344
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenScopedNewArchIsSetToFalseAndOnPrealpha_returnTrue() {
345
- val project = createProject()
346
- project.extensions.extraProperties.set("react.newArchEnabled", "false")
347
- val extension = TestReactExtension(project)
348
- File(tempFolder.root, "package.json").apply {
349
- writeText(
350
- // language=json
351
- """
352
- {
353
- "version": "0.0.0-prealpha-2023100915"
354
- }
355
- """
356
- .trimIndent())
357
- }
358
- extension.reactNativeDir.set(tempFolder.root)
359
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isTrue()
360
- }
361
-
362
- @Test
363
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenBothAreSetToFalseAndOnPrealpha_returnTrue() {
364
- val project = createProject()
365
- project.extensions.extraProperties.set("newArchEnabled", "false")
366
- project.extensions.extraProperties.set("react.newArchEnabled", "false")
367
- val extension = TestReactExtension(project)
368
- File(tempFolder.root, "package.json").apply {
369
- writeText(
370
- // language=json
371
- """
372
- {
373
- "version": "0.0.0-prealpha-2023100915"
374
- }
375
- """
376
- .trimIndent())
377
- }
378
- extension.reactNativeDir.set(tempFolder.root)
379
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isTrue()
380
- }
381
-
382
- @Test
383
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenNewArchIsSetToTrueAndOnPrealpha_returnFalse() {
384
- val project = createProject()
385
- project.extensions.extraProperties.set("newArchEnabled", "true")
386
- val extension = TestReactExtension(project)
387
- File(tempFolder.root, "package.json").apply {
388
- writeText(
389
- // language=json
390
- """
391
- {
392
- "version": "0.0.0-prealpha-2023100915"
393
- }
394
- """
395
- .trimIndent())
396
- }
397
- extension.reactNativeDir.set(tempFolder.root)
398
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
399
- }
400
-
401
- @Test
402
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenScopedNewArchIsSetToTrueAndOnPrealpha_returnFalse() {
403
- val project = createProject()
404
- project.extensions.extraProperties.set("react.newArchEnabled", "true")
405
- val extension = TestReactExtension(project)
406
- File(tempFolder.root, "package.json").apply {
407
- writeText(
408
- // language=json
409
- """
410
- {
411
- "version": "0.0.0-prealpha-2023100915"
412
- }
413
- """
414
- .trimIndent())
415
- }
416
- extension.reactNativeDir.set(tempFolder.root)
417
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
418
- }
419
-
420
- @Test
421
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenBothAreSetToTrueAndOnPrealpha_returnFalse() {
422
- val project = createProject()
423
- project.extensions.extraProperties.set("newArchEnabled", "true")
424
- project.extensions.extraProperties.set("react.newArchEnabled", "true")
425
- val extension = TestReactExtension(project)
426
- File(tempFolder.root, "package.json").apply {
427
- writeText(
428
- // language=json
429
- """
430
- {
431
- "version": "0.0.0-prealpha-2023100915"
432
- }
433
- """
434
- .trimIndent())
435
- }
436
- extension.reactNativeDir.set(tempFolder.root)
437
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
438
- }
439
-
440
- @Test
441
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenNoneAreSetAndOnPrealpha_returnFalse() {
442
- val project = createProject()
443
- val extension = TestReactExtension(project)
444
- File(tempFolder.root, "package.json").apply {
445
- writeText(
446
- // language=json
447
- """
448
- {
449
- "version": "0.0.0-prealpha-2023100915"
450
- }
451
- """
452
- .trimIndent())
453
- }
454
- extension.reactNativeDir.set(tempFolder.root)
455
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
456
- }
457
-
458
- @Test
459
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenNewArchIsSetToTrueAndNotOnPrealpha_returnFalse() {
460
- val project = createProject()
461
- project.extensions.extraProperties.set("newxArchEnabled", "true")
462
- val extension = TestReactExtension(project)
463
- File(tempFolder.root, "package.json").apply {
464
- writeText(
465
- // language=json
466
- """
467
- {
468
- "version": "0.73.0"
469
- }
470
- """
471
- .trimIndent())
472
- }
473
- extension.reactNativeDir.set(tempFolder.root)
474
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
475
- }
476
-
477
- @Test
478
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenScopedNewArchIsSetToTrueAndNotOnPrealpha_returnFalse() {
479
- val project = createProject()
480
- project.extensions.extraProperties.set("react.newxArchEnabled", "true")
481
- val extension = TestReactExtension(project)
482
- File(tempFolder.root, "package.json").apply {
483
- writeText(
484
- // language=json
485
- """
486
- {
487
- "version": "0.73.0"
488
- }
489
- """
490
- .trimIndent())
491
- }
492
- extension.reactNativeDir.set(tempFolder.root)
493
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
494
- }
495
-
496
- @Test
497
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenBothAreSetToTrueAndNotOnPrealpha_returnFalse() {
498
- val project = createProject()
499
- project.extensions.extraProperties.set("newArchEnabled", "true")
500
- project.extensions.extraProperties.set("react.newxArchEnabled", "true")
501
- val extension = TestReactExtension(project)
502
- File(tempFolder.root, "package.json").apply {
503
- writeText(
504
- // language=json
505
- """
506
- {
507
- "version": "0.73.0"
508
- }
509
- """
510
- .trimIndent())
511
- }
512
- extension.reactNativeDir.set(tempFolder.root)
513
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
514
- }
515
-
516
- @Test
517
- fun shouldWarnIfNewArchFlagIsSetInPrealpha_whenNoneAreSetAndNotOnPrealpha_returnFalse() {
518
- val project = createProject()
519
- val extension = TestReactExtension(project)
520
- File(tempFolder.root, "package.json").apply {
521
- writeText(
522
- // language=json
523
- """
524
- {
525
- "version": "0.73.0"
526
- }
527
- """
528
- .trimIndent())
529
- }
530
- extension.reactNativeDir.set(tempFolder.root)
531
- assertThat(project.shouldWarnIfNewArchFlagIsSetInPrealpha(extension)).isFalse()
532
- }
533
250
  }