react-native 0.82.0-nightly-20250809-e0ea78190 → 0.82.0-nightly-20250810-d3bbbd893

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.
Files changed (53) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTVersion.m +1 -1
  3. package/ReactAndroid/gradle.properties +1 -1
  4. package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt +4 -1
  5. package/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.kt +5 -0
  6. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java +2 -1
  7. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.kt +5 -0
  8. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.kt +2 -0
  9. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +2 -0
  10. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +16 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +3 -2
  12. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeArgumentsParseException.kt +3 -0
  13. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt +5 -0
  14. package/ReactAndroid/src/main/java/com/facebook/react/bridge/OnBatchCompleteListener.kt +3 -0
  15. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.kt +3 -0
  16. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.kt +5 -0
  17. package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManagerProvider.kt +3 -0
  18. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.kt +3 -0
  19. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.kt +5 -0
  20. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  21. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +10 -7
  22. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +1 -1
  23. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +2 -0
  24. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +2 -0
  25. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +2 -0
  26. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/SimpleViewManager.kt +1 -0
  27. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupManager.kt +1 -0
  28. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt +10 -6
  29. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarShadowNode.kt +6 -2
  30. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ReactProgressBarViewManager.kt +1 -0
  31. package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaViewManager.kt +6 -3
  32. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +1 -0
  33. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +6 -2
  34. package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayoutTextViewManager.kt +2 -0
  35. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.kt +4 -0
  36. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.kt +5 -0
  37. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextShadowNode.kt +5 -0
  38. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.kt +2 -2
  39. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.kt +3 -0
  40. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -0
  41. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextShadowNode.kt +5 -0
  42. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextViewManager.kt +4 -0
  43. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.kt +3 -0
  44. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +1 -0
  45. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/ReactTextInlineImageShadowNode.kt +2 -0
  46. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +2 -0
  47. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputShadowNode.kt +3 -0
  48. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  49. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +53 -18
  50. package/package.json +8 -8
  51. package/sdks/hermesc/osx-bin/hermes +0 -0
  52. package/sdks/hermesc/osx-bin/hermesc +0 -0
  53. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 82;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'nightly-20250809-e0ea78190';
32
+ static prerelease: string | null = 'nightly-20250810-d3bbbd893';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(82),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20250809-e0ea78190",
27
+ RCTVersionPrerelease: @"nightly-20250810-d3bbbd893",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.82.0-nightly-20250809-e0ea78190
1
+ VERSION_NAME=0.82.0-nightly-20250810-d3bbbd893
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
 
4
4
  android.useAndroidX=true
@@ -37,6 +37,7 @@ import com.facebook.systrace.Systrace
37
37
  /**
38
38
  * This is the basic module to support React Native. The debug modules are now in DebugCorePackage.
39
39
  */
40
+ @Suppress("DEPRECATION")
40
41
  @ReactModuleList(
41
42
  // WARNING: If you modify this list, ensure that the list below in method
42
43
  // getReactModuleInfoByInitialization is also updated
@@ -54,7 +55,9 @@ import com.facebook.systrace.Systrace
54
55
  TimingModule::class,
55
56
  com.facebook.react.uimanager.UIManagerModule::class])
56
57
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
57
- @Suppress("DEPRECATION")
58
+ @Deprecated(
59
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
60
+ level = DeprecationLevel.WARNING)
58
61
  internal class CoreModulesPackage(
59
62
  private val reactInstanceManager: ReactInstanceManager,
60
63
  private val hardwareBackBtnHandler: DefaultHardwareBackBtnHandler,
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react
9
11
 
10
12
  import com.facebook.react.bridge.ModuleHolder
@@ -16,6 +18,9 @@ import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger
16
18
 
17
19
  /** Helper class to build NativeModuleRegistry. */
18
20
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
21
+ @Deprecated(
22
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
23
+ level = DeprecationLevel.WARNING)
19
24
  public class NativeModuleRegistryBuilder(
20
25
  private val reactApplicationContext: ReactApplicationContext,
21
26
  ) {
@@ -40,7 +40,8 @@ import java.util.Objects;
40
40
  */
41
41
  @VisibleForTesting
42
42
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
43
- @Deprecated
43
+ @Deprecated(
44
+ since = "This class is part of Legacy Architecture and will be removed in a future release")
44
45
  @Nullsafe(Nullsafe.Mode.LOCAL)
45
46
  public class BridgeReactContext extends ReactApplicationContext {
46
47
  static {
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.bridge
9
11
 
10
12
  import com.facebook.react.common.annotations.internal.LegacyArchitecture
@@ -13,6 +15,9 @@ import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger
13
15
 
14
16
  /** Implementation of javascript callback function that uses Bridge to schedule method execution. */
15
17
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
18
+ @Deprecated(
19
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
20
+ level = DeprecationLevel.WARNING)
16
21
  internal class CallbackImpl(private val jsInstance: JSInstance, private val callbackId: Int) :
17
22
  Callback {
18
23
  private var invoked = false
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.bridge
9
11
 
10
12
  import com.facebook.proguard.annotations.DoNotStrip
@@ -48,6 +48,8 @@ import java.util.concurrent.atomic.AtomicInteger;
48
48
  */
49
49
  @DoNotStrip
50
50
  @LegacyArchitecture
51
+ @Deprecated(
52
+ since = "This class is part of Legacy Architecture and will be removed in a future release")
51
53
  public class CatalystInstanceImpl implements CatalystInstance {
52
54
  static {
53
55
  ReactNativeJNISoLoader.staticInit();
@@ -17,6 +17,9 @@ import com.facebook.systrace.SystraceMessage
17
17
  import java.lang.reflect.InvocationTargetException
18
18
  import java.lang.reflect.Method
19
19
 
20
+ @Deprecated(
21
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
22
+ level = DeprecationLevel.WARNING)
20
23
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
21
24
  internal class JavaMethodWrapper(
22
25
  private val moduleWrapper: JavaModuleWrapper,
@@ -26,6 +29,7 @@ internal class JavaMethodWrapper(
26
29
  private abstract class ArgumentExtractor<T> {
27
30
  open fun getJSArgumentsNeeded(): Int = 1
28
31
 
32
+ @Suppress("DEPRECATION")
29
33
  abstract fun extractArgument(
30
34
  jsInstance: JSInstance,
31
35
  jsArguments: ReadableArray,
@@ -157,6 +161,7 @@ internal class JavaMethodWrapper(
157
161
  "$startIndex"
158
162
  }
159
163
 
164
+ @Suppress("DEPRECATION")
160
165
  override fun invoke(jsInstance: JSInstance, parameters: ReadableArray) {
161
166
  val traceName = moduleWrapper.name + "." + method.name
162
167
  SystraceMessage.beginSection(TRACE_TAG_REACT, "callJavaModuleMethod")
@@ -240,6 +245,7 @@ internal class JavaMethodWrapper(
240
245
 
241
246
  private val ARGUMENT_EXTRACTOR_BOOLEAN: ArgumentExtractor<Boolean> =
242
247
  object : ArgumentExtractor<Boolean>() {
248
+ @Suppress("DEPRECATION")
243
249
  override fun extractArgument(
244
250
  jsInstance: JSInstance,
245
251
  jsArguments: ReadableArray,
@@ -249,6 +255,7 @@ internal class JavaMethodWrapper(
249
255
 
250
256
  private val ARGUMENT_EXTRACTOR_DOUBLE: ArgumentExtractor<Double> =
251
257
  object : ArgumentExtractor<Double>() {
258
+ @Suppress("DEPRECATION")
252
259
  override fun extractArgument(
253
260
  jsInstance: JSInstance,
254
261
  jsArguments: ReadableArray,
@@ -258,6 +265,7 @@ internal class JavaMethodWrapper(
258
265
 
259
266
  private val ARGUMENT_EXTRACTOR_FLOAT: ArgumentExtractor<Float> =
260
267
  object : ArgumentExtractor<Float>() {
268
+ @Suppress("DEPRECATION")
261
269
  override fun extractArgument(
262
270
  jsInstance: JSInstance,
263
271
  jsArguments: ReadableArray,
@@ -267,6 +275,7 @@ internal class JavaMethodWrapper(
267
275
 
268
276
  private val ARGUMENT_EXTRACTOR_INTEGER: ArgumentExtractor<Int> =
269
277
  object : ArgumentExtractor<Int>() {
278
+ @Suppress("DEPRECATION")
270
279
  override fun extractArgument(
271
280
  jsInstance: JSInstance,
272
281
  jsArguments: ReadableArray,
@@ -276,6 +285,7 @@ internal class JavaMethodWrapper(
276
285
 
277
286
  private val ARGUMENT_EXTRACTOR_STRING: ArgumentExtractor<String> =
278
287
  object : ArgumentExtractor<String>() {
288
+ @Suppress("DEPRECATION")
279
289
  override fun extractArgument(
280
290
  jsInstance: JSInstance,
281
291
  jsArguments: ReadableArray,
@@ -285,6 +295,7 @@ internal class JavaMethodWrapper(
285
295
 
286
296
  private val ARGUMENT_EXTRACTOR_ARRAY: ArgumentExtractor<ReadableArray> =
287
297
  object : ArgumentExtractor<ReadableArray>() {
298
+ @Suppress("DEPRECATION")
288
299
  override fun extractArgument(
289
300
  jsInstance: JSInstance,
290
301
  jsArguments: ReadableArray,
@@ -294,6 +305,7 @@ internal class JavaMethodWrapper(
294
305
 
295
306
  private val ARGUMENT_EXTRACTOR_DYNAMIC: ArgumentExtractor<Dynamic> =
296
307
  object : ArgumentExtractor<Dynamic>() {
308
+ @Suppress("DEPRECATION")
297
309
  override fun extractArgument(
298
310
  jsInstance: JSInstance,
299
311
  jsArguments: ReadableArray,
@@ -303,6 +315,7 @@ internal class JavaMethodWrapper(
303
315
 
304
316
  private val ARGUMENT_EXTRACTOR_MAP: ArgumentExtractor<ReadableMap> =
305
317
  object : ArgumentExtractor<ReadableMap>() {
318
+ @Suppress("DEPRECATION")
306
319
  override fun extractArgument(
307
320
  jsInstance: JSInstance,
308
321
  jsArguments: ReadableArray,
@@ -312,6 +325,7 @@ internal class JavaMethodWrapper(
312
325
 
313
326
  private val ARGUMENT_EXTRACTOR_CALLBACK: ArgumentExtractor<Callback> =
314
327
  object : ArgumentExtractor<Callback>() {
328
+ @Suppress("DEPRECATION")
315
329
  override fun extractArgument(
316
330
  jsInstance: JSInstance,
317
331
  jsArguments: ReadableArray,
@@ -321,7 +335,7 @@ internal class JavaMethodWrapper(
321
335
  null
322
336
  } else {
323
337
  val id = jsArguments.getDouble(atIndex).toInt()
324
- CallbackImpl(jsInstance, id)
338
+ @Suppress("DEPRECATION") CallbackImpl(jsInstance, id)
325
339
  }
326
340
  }
327
341
 
@@ -329,6 +343,7 @@ internal class JavaMethodWrapper(
329
343
  object : ArgumentExtractor<Promise>() {
330
344
  override fun getJSArgumentsNeeded(): Int = 2
331
345
 
346
+ @Suppress("DEPRECATION")
332
347
  override fun extractArgument(
333
348
  jsInstance: JSInstance,
334
349
  jsArguments: ReadableArray,
@@ -25,11 +25,11 @@ import java.lang.reflect.Method
25
25
  @DoNotStrip
26
26
  @InteropLegacyArchitecture
27
27
  internal class JavaModuleWrapper(
28
- private val jsInstance: JSInstance,
28
+ @Suppress("DEPRECATION") private val jsInstance: JSInstance,
29
29
  private val moduleHolder: ModuleHolder
30
30
  ) {
31
31
  interface NativeMethod {
32
- fun invoke(jsInstance: JSInstance, parameters: ReadableArray)
32
+ @Suppress("DEPRECATION") fun invoke(jsInstance: JSInstance, parameters: ReadableArray)
33
33
 
34
34
  val type: String
35
35
  }
@@ -74,6 +74,7 @@ internal class JavaModuleWrapper(
74
74
  targetMethod.getAnnotation(ReactMethod::class.java)?.let { annotation ->
75
75
  val methodName = targetMethod.name
76
76
  val md = MethodDescriptor()
77
+ @Suppress("DEPRECATION")
77
78
  val method = JavaMethodWrapper(this, targetMethod, annotation.isBlockingSynchronousMethod)
78
79
  md.name = methodName
79
80
  md.type = method.type
@@ -13,6 +13,9 @@ import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger
13
13
 
14
14
  /** Exception thrown when a native module method call receives unexpected arguments from JS. */
15
15
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
16
+ @Deprecated(
17
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
18
+ level = DeprecationLevel.WARNING)
16
19
  internal class NativeArgumentsParseException : JSApplicationCausedNativeException {
17
20
 
18
21
  constructor(detailMessage: String) : super(detailMessage)
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.bridge
9
11
 
10
12
  import com.facebook.react.bridge.ReactMarker.logMarker
@@ -19,6 +21,9 @@ import com.facebook.systrace.Systrace.endSection
19
21
 
20
22
  /** A set of Java APIs to expose to a particular JavaScript instance. */
21
23
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
24
+ @Deprecated(
25
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
26
+ level = DeprecationLevel.WARNING)
22
27
  public class NativeModuleRegistry(
23
28
  private val reactApplicationContext: ReactApplicationContext,
24
29
  private val modules: MutableMap<String, ModuleHolder>
@@ -12,6 +12,9 @@ import com.facebook.react.common.annotations.internal.LegacyArchitectureLogLevel
12
12
 
13
13
  /** Interface for a module that will be notified when a batch of JS->Java calls has finished. */
14
14
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
15
+ @Deprecated(
16
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
17
+ level = DeprecationLevel.WARNING)
15
18
  public fun interface OnBatchCompleteListener {
16
19
  public fun onBatchComplete()
17
20
  }
@@ -16,6 +16,9 @@ import java.lang.reflect.Method
16
16
 
17
17
  @DoNotStrip
18
18
  @LegacyArchitecture
19
+ @Deprecated(
20
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
21
+ level = DeprecationLevel.WARNING)
19
22
  internal object ReactCxxErrorHandler {
20
23
  init {
21
24
  LegacyArchitectureLogger.assertLegacyArchitecture(
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.bridge
9
11
 
10
12
  import com.facebook.jni.HybridData
@@ -17,6 +19,9 @@ import java.util.concurrent.Executor
17
19
 
18
20
  @DoNotStripAny
19
21
  @LegacyArchitecture
22
+ @Deprecated(
23
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
24
+ level = DeprecationLevel.WARNING)
20
25
  internal class ReactInstanceManagerInspectorTarget(delegate: TargetDelegate) : AutoCloseable {
21
26
 
22
27
  @DoNotStripAny
@@ -15,6 +15,9 @@ import com.facebook.react.common.annotations.internal.LegacyArchitectureLogLevel
15
15
  * Native.
16
16
  */
17
17
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
18
+ @Deprecated(
19
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
20
+ level = DeprecationLevel.WARNING)
18
21
  public fun interface UIManagerProvider {
19
22
 
20
23
  /* Provides a [com.facebook.react.bridge.UIManager] for the context received as a parameter. */
@@ -46,6 +46,9 @@ import com.facebook.react.packagerconnection.RequestHandler
46
46
  * when all the views has been detached from the instance (through `setDevSupportEnabled` method).
47
47
  */
48
48
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
49
+ @Deprecated(
50
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
51
+ level = DeprecationLevel.WARNING)
49
52
  public class BridgeDevSupportManager(
50
53
  applicationContext: Context,
51
54
  reactInstanceManagerHelper: ReactInstanceDevHelper,
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.fabric
9
11
 
10
12
  import com.facebook.react.bridge.ReactApplicationContext
@@ -20,6 +22,9 @@ import com.facebook.systrace.Systrace
20
22
  * @param [componentFactory] The factory for creating components.
21
23
  * @param [viewManagerRegistry] The registry of view managers.
22
24
  */
25
+ @Deprecated(
26
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
27
+ level = DeprecationLevel.WARNING)
23
28
  public class FabricUIManagerProviderImpl(
24
29
  private val componentFactory: ComponentFactory,
25
30
  private val viewManagerRegistry: ViewManagerRegistry
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 82,
17
17
  "patch" to 0,
18
- "prerelease" to "nightly-20250809-e0ea78190"
18
+ "prerelease" to "nightly-20250810-d3bbbd893"
19
19
  )
20
20
  }
@@ -56,9 +56,7 @@ import com.facebook.react.views.scroll.ReactScrollViewManager
56
56
  import com.facebook.react.views.swiperefresh.SwipeRefreshLayoutManager
57
57
  import com.facebook.react.views.switchview.ReactSwitchManager
58
58
  import com.facebook.react.views.text.PreparedLayoutTextViewManager
59
- import com.facebook.react.views.text.ReactRawTextManager
60
59
  import com.facebook.react.views.text.ReactTextViewManager
61
- import com.facebook.react.views.text.ReactVirtualTextViewManager
62
60
  import com.facebook.react.views.text.frescosupport.FrescoBasedReactTextInlineImageViewManager
63
61
  import com.facebook.react.views.textinput.ReactTextInputManager
64
62
  import com.facebook.react.views.unimplementedview.ReactUnimplementedViewManager
@@ -133,6 +131,7 @@ constructor(private val config: MainPackageConfig? = null) :
133
131
  else -> null
134
132
  }
135
133
 
134
+ @Suppress("DEPRECATION")
136
135
  override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> =
137
136
  listOf(
138
137
  ReactDrawerLayoutManager(),
@@ -147,18 +146,19 @@ constructor(private val config: MainPackageConfig? = null) :
147
146
  FrescoBasedReactTextInlineImageViewManager(),
148
147
  ReactImageManager(),
149
148
  ReactModalHostManager(),
150
- ReactRawTextManager(),
149
+ com.facebook.react.views.text.ReactRawTextManager(),
151
150
  ReactTextInputManager(),
152
151
  if (ReactNativeFeatureFlags.enablePreparedTextLayout()) PreparedLayoutTextViewManager()
153
152
  else ReactTextViewManager(),
154
153
  ReactViewManager(),
155
- ReactVirtualTextViewManager(),
154
+ com.facebook.react.views.text.ReactVirtualTextViewManager(),
156
155
  ReactUnimplementedViewManager())
157
156
 
158
157
  /**
159
158
  * A map of view managers that should be registered with
160
159
  * [com.facebook.react.uimanager.UIManagerModule]
161
160
  */
161
+ @Suppress("DEPRECATION")
162
162
  @SuppressLint("VisibleForTests")
163
163
  public val viewManagersMap: Map<String, ModuleSpec> =
164
164
  mapOf(
@@ -182,7 +182,8 @@ constructor(private val config: MainPackageConfig? = null) :
182
182
  ReactImageManager.REACT_CLASS to ModuleSpec.viewManagerSpec { ReactImageManager() },
183
183
  ReactModalHostManager.REACT_CLASS to
184
184
  ModuleSpec.viewManagerSpec { ReactModalHostManager() },
185
- ReactRawTextManager.REACT_CLASS to ModuleSpec.viewManagerSpec { ReactRawTextManager() },
185
+ com.facebook.react.views.text.ReactRawTextManager.REACT_CLASS to
186
+ ModuleSpec.viewManagerSpec { com.facebook.react.views.text.ReactRawTextManager() },
186
187
  ReactTextInputManager.REACT_CLASS to
187
188
  ModuleSpec.viewManagerSpec { ReactTextInputManager() },
188
189
  ReactTextViewManager.REACT_CLASS to
@@ -192,8 +193,10 @@ constructor(private val config: MainPackageConfig? = null) :
192
193
  else ReactTextViewManager()
193
194
  },
194
195
  ReactViewManager.REACT_CLASS to ModuleSpec.viewManagerSpec { ReactViewManager() },
195
- ReactVirtualTextViewManager.REACT_CLASS to
196
- ModuleSpec.viewManagerSpec { ReactVirtualTextViewManager() },
196
+ com.facebook.react.views.text.ReactVirtualTextViewManager.REACT_CLASS to
197
+ ModuleSpec.viewManagerSpec {
198
+ com.facebook.react.views.text.ReactVirtualTextViewManager()
199
+ },
197
200
  ReactUnimplementedViewManager.REACT_CLASS to
198
201
  ModuleSpec.viewManagerSpec { ReactUnimplementedViewManager() })
199
202
 
@@ -20,7 +20,7 @@ import com.facebook.yoga.YogaConstants
20
20
  * every view should support, such as rotation, background color, etc.
21
21
  */
22
22
  public abstract class BaseViewManagerDelegate<
23
- T : View, U : BaseViewManager<T, out LayoutShadowNode>>(
23
+ T : View, @Suppress("DEPRECATION") U : BaseViewManager<T, out LayoutShadowNode>>(
24
24
  @Suppress("NoHungarianNotation") @JvmField protected val mViewManager: U
25
25
  ) : ViewManagerDelegate<T> {
26
26
  @Suppress("ACCIDENTAL_OVERRIDE", "DEPRECATION")
@@ -38,6 +38,8 @@ import com.facebook.yoga.YogaWrap;
38
38
  * explored, namely using the VirtualText class in JS and setting the correct set of validAttributes
39
39
  */
40
40
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
41
+ @Deprecated(
42
+ since = "This class is part of Legacy Architecture and will be removed in a future release")
41
43
  public class LayoutShadowNode extends ReactShadowNodeImpl {
42
44
  static {
43
45
  LegacyArchitectureLogger.assertLegacyArchitecture(
@@ -46,6 +46,8 @@ import com.facebook.yoga.YogaWrap;
46
46
  * NativeViewHierarchyOptimizer} for more information.
47
47
  */
48
48
  @LegacyArchitecture
49
+ @Deprecated(
50
+ since = "This class is part of Legacy Architecture and will be removed in a future release")
49
51
  public interface ReactShadowNode<T extends ReactShadowNode> {
50
52
 
51
53
  /**
@@ -60,6 +60,8 @@ import java.util.Arrays;
60
60
  */
61
61
  @ReactPropertyHolder
62
62
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
63
+ @Deprecated(
64
+ since = "This class is part of Legacy Architecture and will be removed in a future release")
63
65
  public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl> {
64
66
 
65
67
  private static final YogaConfig sYogaConfig;
@@ -17,6 +17,7 @@ import android.view.View
17
17
  *
18
18
  * @param <T> the view handled by this manager
19
19
  */
20
+ @Suppress("DEPRECATION")
20
21
  public abstract class SimpleViewManager<T : View> : BaseViewManager<T, LayoutShadowNode>() {
21
22
 
22
23
  public override fun createShadowNodeInstance(): LayoutShadowNode {
@@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReactApplicationContext
13
13
  import com.facebook.react.bridge.UiThreadUtil
14
14
  import java.util.WeakHashMap
15
15
 
16
+ @Suppress("DEPRECATION")
16
17
  public abstract class ViewGroupManager<T : ViewGroup>
17
18
  @JvmOverloads
18
19
  constructor(reactContext: ReactApplicationContext? = null) :
@@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReadableArray
13
13
  import com.facebook.react.uimanager.ViewManagersPropertyCache.PropSetter
14
14
  import java.util.HashMap
15
15
 
16
+ @Suppress("DEPRECATION")
16
17
  public object ViewManagerPropertyUpdater {
17
18
  public fun interface Settable {
18
19
  public fun getProperties(props: MutableMap<String, String>)
@@ -24,7 +25,7 @@ public object ViewManagerPropertyUpdater {
24
25
  }
25
26
 
26
27
  @Suppress("FINITE_BOUNDS_VIOLATION_IN_JAVA")
27
- public interface ShadowNodeSetter<in T : ReactShadowNode<*>> : Settable {
28
+ public interface ShadowNodeSetter<@Suppress("DEPRECATION") in T : ReactShadowNode<*>> : Settable {
28
29
  public fun setProperty(node: T, name: String, value: Any?)
29
30
  }
30
31
 
@@ -71,7 +72,10 @@ public object ViewManagerPropertyUpdater {
71
72
 
72
73
  @JvmStatic
73
74
  @Deprecated("Use ViewManager#updateProperties to update a view's properties")
74
- public fun <T : ReactShadowNode<T>> updateProps(node: T, props: ReactStylesDiffMap) {
75
+ public fun <@Suppress("DEPRECATION") T : ReactShadowNode<T>> updateProps(
76
+ node: T,
77
+ props: ReactStylesDiffMap
78
+ ) {
75
79
  val setter = findNodeSetter(node.javaClass)
76
80
  val iterator = props.backingMap.entryIterator
77
81
  while (iterator.hasNext()) {
@@ -108,7 +112,7 @@ public object ViewManagerPropertyUpdater {
108
112
  return setter as ViewManagerSetter<ViewManager<V, *>, V>
109
113
  }
110
114
 
111
- private fun <T : ReactShadowNode<T>> findNodeSetter(
115
+ private fun <@Suppress("DEPRECATION") T : ReactShadowNode<T>> findNodeSetter(
112
116
  nodeClass: Class<out T>
113
117
  ): ShadowNodeSetter<T> {
114
118
  var setter = SHADOW_NODE_SETTER_MAP[nodeClass]
@@ -143,16 +147,16 @@ public object ViewManagerPropertyUpdater {
143
147
  private class FallbackViewManagerSetter<V : View>(
144
148
  viewManagerClass: Class<out ViewManager<V, *>>
145
149
  ) : ViewManagerSetter<ViewManager<V, *>, V> {
146
- private val mPropSetters: Map<String, PropSetter> =
150
+ private val propSetters: Map<String, PropSetter> =
147
151
  ViewManagersPropertyCache.getNativePropSettersForViewManagerClass(viewManagerClass)
148
152
 
149
153
  override fun setProperty(manager: ViewManager<V, *>, view: V, name: String, value: Any?) {
150
- val setter = mPropSetters[name]
154
+ val setter = propSetters[name]
151
155
  setter?.updateViewProp(manager, view, value)
152
156
  }
153
157
 
154
158
  override fun getProperties(props: MutableMap<String, String>) {
155
- for (setter in mPropSetters.values) {
159
+ for (setter in propSetters.values) {
156
160
  props[setter.propName] = setter.propType
157
161
  }
158
162
  }
@@ -14,7 +14,6 @@ import com.facebook.react.common.annotations.LegacyArchitectureShadowNodeWithCxx
14
14
  import com.facebook.react.common.annotations.internal.LegacyArchitecture
15
15
  import com.facebook.react.common.annotations.internal.LegacyArchitectureLogLevel
16
16
  import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger
17
- import com.facebook.react.uimanager.LayoutShadowNode
18
17
  import com.facebook.react.uimanager.annotations.ReactProp
19
18
  import com.facebook.yoga.YogaMeasureFunction
20
19
  import com.facebook.yoga.YogaMeasureMode
@@ -25,9 +24,14 @@ import com.facebook.yoga.YogaNode
25
24
  * Node responsible for holding the style of the ProgressBar, see under [ ] for possible styles.
26
25
  * ReactProgressBarViewManager manages how this style is applied to the ProgressBar.
27
26
  */
27
+ @Suppress("DEPRECATION")
28
28
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
29
29
  @LegacyArchitectureShadowNodeWithCxxImpl
30
- internal class ProgressBarShadowNode : LayoutShadowNode(), YogaMeasureFunction {
30
+ @Deprecated(
31
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
32
+ level = DeprecationLevel.WARNING)
33
+ internal class ProgressBarShadowNode :
34
+ com.facebook.react.uimanager.LayoutShadowNode(), YogaMeasureFunction {
31
35
  private val height: SparseIntArray = SparseIntArray()
32
36
  private val width: SparseIntArray = SparseIntArray()
33
37
  private val measured: MutableSet<Int> = HashSet()
@@ -33,6 +33,7 @@ import java.util.WeakHashMap
33
33
  * a [ProgressBar] changes, we have to drop the existing [ProgressBar] (if there is one) and create
34
34
  * a new one with the style given.
35
35
  */
36
+ @Suppress("DEPRECATION")
36
37
  @ReactModule(name = ReactProgressBarViewManager.REACT_CLASS)
37
38
  internal class ReactProgressBarViewManager :
38
39
  BaseViewManager<ProgressBarContainerView, ProgressBarShadowNode>(),
@@ -8,7 +8,6 @@
8
8
  package com.facebook.react.views.safeareaview
9
9
 
10
10
  import com.facebook.react.module.annotations.ReactModule
11
- import com.facebook.react.uimanager.LayoutShadowNode
12
11
  import com.facebook.react.uimanager.ReactStylesDiffMap
13
12
  import com.facebook.react.uimanager.StateWrapper
14
13
  import com.facebook.react.uimanager.ThemedReactContext
@@ -31,9 +30,13 @@ internal class ReactSafeAreaViewManager :
31
30
 
32
31
  override fun getName(): String = REACT_CLASS
33
32
 
34
- override fun createShadowNodeInstance(): LayoutShadowNode = LayoutShadowNode()
33
+ @Suppress("DEPRECATION")
34
+ override fun createShadowNodeInstance(): com.facebook.react.uimanager.LayoutShadowNode =
35
+ com.facebook.react.uimanager.LayoutShadowNode()
35
36
 
36
- override fun getShadowNodeClass(): Class<out LayoutShadowNode> = LayoutShadowNode::class.java
37
+ @Suppress("DEPRECATION")
38
+ override fun getShadowNodeClass(): Class<out com.facebook.react.uimanager.LayoutShadowNode> =
39
+ com.facebook.react.uimanager.LayoutShadowNode::class.java
37
40
 
38
41
  override fun updateState(
39
42
  view: ReactSafeAreaView,
@@ -25,6 +25,7 @@ import com.facebook.react.viewmanagers.AndroidSwitchManagerInterface
25
25
  import com.facebook.yoga.YogaMeasureMode
26
26
  import com.facebook.yoga.YogaMeasureOutput
27
27
 
28
+ @Suppress("DEPRECATION")
28
29
  internal class ReactSwitchManager :
29
30
  BaseViewManager<ReactSwitch, ReactSwitchShadowNode>(),
30
31
  AndroidSwitchManagerInterface<ReactSwitch> {
@@ -12,15 +12,19 @@ import com.facebook.react.common.annotations.LegacyArchitectureShadowNodeWithCxx
12
12
  import com.facebook.react.common.annotations.internal.LegacyArchitecture
13
13
  import com.facebook.react.common.annotations.internal.LegacyArchitectureLogLevel
14
14
  import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger
15
- import com.facebook.react.uimanager.LayoutShadowNode
16
15
  import com.facebook.yoga.YogaMeasureFunction
17
16
  import com.facebook.yoga.YogaMeasureMode
18
17
  import com.facebook.yoga.YogaMeasureOutput
19
18
  import com.facebook.yoga.YogaNode
20
19
 
20
+ @Suppress("DEPRECATION")
21
21
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
22
+ @Deprecated(
23
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
24
+ level = DeprecationLevel.WARNING)
22
25
  @LegacyArchitectureShadowNodeWithCxxImpl
23
- internal class ReactSwitchShadowNode : LayoutShadowNode(), YogaMeasureFunction {
26
+ internal class ReactSwitchShadowNode :
27
+ com.facebook.react.uimanager.LayoutShadowNode(), YogaMeasureFunction {
24
28
  private var width = 0
25
29
  private var height = 0
26
30
  private var measured = false
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.text
9
11
 
10
12
  import android.text.Spannable
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.text
9
11
 
10
12
  import android.graphics.Color
@@ -61,6 +63,8 @@ import com.facebook.yoga.YogaUnit
61
63
  * used in concrete classes to feed native views and compute layout.
62
64
  */
63
65
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
66
+ @Deprecated(
67
+ message = "This class is part of Legacy Architecture and will be removed in a future release")
64
68
  public abstract class ReactBaseTextShadowNode
65
69
  @JvmOverloads
66
70
  public constructor(
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.text
9
11
 
10
12
  import android.view.View
@@ -20,6 +22,9 @@ import com.facebook.react.uimanager.ViewManager
20
22
  */
21
23
  @ReactModule(name = ReactRawTextManager.REACT_CLASS)
22
24
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
25
+ @Deprecated(
26
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
27
+ level = DeprecationLevel.WARNING)
23
28
  internal class ReactRawTextManager : ViewManager<View, ReactRawTextShadowNode>() {
24
29
 
25
30
  override fun getName(): String {
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.text
9
11
 
10
12
  import com.facebook.react.common.annotations.internal.LegacyArchitecture
@@ -17,6 +19,9 @@ import com.facebook.react.uimanager.annotations.ReactProp
17
19
  * terms of DOM). Raw text node can only have simple string value without any attributes, properties
18
20
  * or state.
19
21
  */
22
+ @Deprecated(
23
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
24
+ level = DeprecationLevel.WARNING)
20
25
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
21
26
  internal class ReactRawTextShadowNode : ReactShadowNodeImpl() {
22
27
  @set:ReactProp(name = "text")
@@ -37,8 +37,8 @@ import com.facebook.react.views.text.DefaultStyleValuesUtil.getDefaultTextColorH
37
37
  * whole text subtree.
38
38
  */
39
39
  @UnstableReactNativeAPI
40
- public abstract class ReactTextAnchorViewManager<C : ReactBaseTextShadowNode?> :
41
- BaseViewManager<ReactTextView, C>() {
40
+ public abstract class ReactTextAnchorViewManager<
41
+ @Suppress("DEPRECATION") C : ReactBaseTextShadowNode?> : BaseViewManager<ReactTextView, C>() {
42
42
 
43
43
  @ReactProp(name = "accessible")
44
44
  internal fun setAccessible(view: ReactTextView, accessible: Boolean) {
@@ -51,6 +51,9 @@ import kotlin.math.min
51
51
  * constructed in superclass.
52
52
  */
53
53
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
54
+ @Deprecated(
55
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
56
+ level = DeprecationLevel.WARNING)
54
57
  public class ReactTextShadowNode
55
58
  @JvmOverloads
56
59
  public constructor(reactTextViewManagerCallback: ReactTextViewManagerCallback? = null) :
@@ -27,6 +27,7 @@ import java.util.HashMap
27
27
  * Concrete class for [ReactTextAnchorViewManager] which represents view managers of anchor `<Text>`
28
28
  * nodes.
29
29
  */
30
+ @Suppress("DEPRECATION")
30
31
  @ReactModule(name = ReactTextViewManager.REACT_CLASS)
31
32
  @OptIn(UnstableReactNativeAPI::class)
32
33
  public class ReactTextViewManager
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.text
9
11
 
10
12
  import com.facebook.react.common.annotations.internal.LegacyArchitecture
@@ -13,6 +15,9 @@ import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger
13
15
 
14
16
  /** A virtual text node. */
15
17
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
18
+ @Deprecated(
19
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
20
+ level = DeprecationLevel.WARNING)
16
21
  internal class ReactVirtualTextShadowNode : ReactBaseTextShadowNode() {
17
22
 
18
23
  override fun isVirtual(): Boolean = true
@@ -19,8 +19,12 @@ import com.facebook.react.uimanager.ThemedReactContext
19
19
  * Manages raw text nodes. Since they are used only as a virtual nodes any type of native view
20
20
  * operation will throw an [IllegalStateException]
21
21
  */
22
+ @Suppress("DEPRECATION")
22
23
  @ReactModule(name = ReactVirtualTextViewManager.REACT_CLASS)
23
24
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
25
+ @Deprecated(
26
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
27
+ level = DeprecationLevel.WARNING)
24
28
  internal class ReactVirtualTextViewManager : BaseViewManager<View, ReactVirtualTextShadowNode>() {
25
29
 
26
30
  override fun getName(): String = REACT_CLASS
@@ -30,6 +30,9 @@ import java.util.Locale
30
30
 
31
31
  /** Shadow node that represents an inline image. Loading is done using Fresco. */
32
32
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
33
+ @Deprecated(
34
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
35
+ level = DeprecationLevel.WARNING)
33
36
  internal class FrescoBasedReactTextInlineImageShadowNode(
34
37
  private val draweeControllerBuilder: AbstractDraweeControllerBuilder<*, ImageRequest, *, *>,
35
38
  private val callerContext: Any?
@@ -19,6 +19,7 @@ import com.facebook.react.uimanager.ThemedReactContext
19
19
  * Manages Images embedded in Text nodes using Fresco. Since they are used only as a virtual nodes
20
20
  * any type of native view operation will throw an [IllegalStateException].
21
21
  */
22
+ @Suppress("DEPRECATION")
22
23
  @ReactModule(name = FrescoBasedReactTextInlineImageViewManager.REACT_CLASS)
23
24
  internal class FrescoBasedReactTextInlineImageViewManager
24
25
  @JvmOverloads
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.text.internal
9
11
 
10
12
  import com.facebook.react.uimanager.LayoutShadowNode
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ @file:Suppress("DEPRECATION")
9
+
8
10
  package com.facebook.react.views.textinput
9
11
 
10
12
  import android.annotation.SuppressLint
@@ -39,6 +39,9 @@ import com.facebook.yoga.YogaNode
39
39
 
40
40
  @LegacyArchitecture(logLevel = LegacyArchitectureLogLevel.ERROR)
41
41
  @LegacyArchitectureShadowNodeWithCxxImpl
42
+ @Deprecated(
43
+ message = "This class is part of Legacy Architecture and will be removed in a future release",
44
+ level = DeprecationLevel.WARNING)
42
45
  internal class ReactTextInputShadowNode
43
46
  @JvmOverloads
44
47
  constructor(reactTextViewManagerCallback: ReactTextViewManagerCallback? = null) :
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 82;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "nightly-20250809-e0ea78190";
25
+ std::string_view Prerelease = "nightly-20250810-d3bbbd893";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -26,6 +26,8 @@
26
26
  #import <objc/runtime.h>
27
27
  #import <atomic>
28
28
  #import <iostream>
29
+ #import <mutex>
30
+
29
31
  #import <sstream>
30
32
  #import <vector>
31
33
 
@@ -284,44 +286,77 @@ ObjCTurboModule::createPromise(jsi::Runtime &runtime, const std::string &methodN
284
286
  {rt, args[0].getObject(rt).getFunction(rt), std::move(jsInvoker)});
285
287
  __block std::optional<AsyncCallback<>> reject(
286
288
  {rt, args[1].getObject(rt).getFunction(rt), std::move(jsInvoker)});
289
+ __block std::shared_ptr<std::mutex> mutex = std::make_shared<std::mutex>();
287
290
 
288
291
  RCTPromiseResolveBlock resolveBlock = ^(id result) {
289
- if (!resolve || !reject) {
290
- if (resolveWasCalled) {
291
- RCTLogError(@"%s: Tried to resolve a promise more than once.", moduleMethod.c_str());
292
+ std::optional<AsyncCallback<>> localResolve;
293
+ bool alreadyResolved = false;
294
+ bool alreadyRejected = false;
295
+ {
296
+ std::lock_guard<std::mutex> lock(*mutex);
297
+ if (!resolve || !reject) {
298
+ alreadyResolved = resolveWasCalled;
299
+ alreadyRejected = !resolveWasCalled;
292
300
  } else {
293
- RCTLogError(
294
- @"%s: Tried to resolve a promise after it's already been rejected.", moduleMethod.c_str());
301
+ resolveWasCalled = YES;
302
+ localResolve = std::move(resolve);
303
+ resolve = std::nullopt;
304
+ reject = std::nullopt;
295
305
  }
306
+ }
307
+
308
+ if (alreadyResolved) {
309
+ RCTLogError(@"%s: Tried to resolve a promise more than once.", moduleMethod.c_str());
310
+ return;
311
+ }
312
+
313
+ if (alreadyRejected) {
314
+ RCTLogError(@"%s: Tried to resolve a promise after it's already been rejected.", moduleMethod.c_str());
296
315
  return;
297
316
  }
298
317
 
299
- resolve->call([result](jsi::Runtime &rt, jsi::Function &jsFunction) {
318
+ localResolve->call([result](jsi::Runtime &rt, jsi::Function &jsFunction) {
300
319
  jsFunction.call(rt, convertObjCObjectToJSIValue(rt, result));
301
320
  });
302
-
303
- resolveWasCalled = YES;
304
- resolve = std::nullopt;
305
- reject = std::nullopt;
306
321
  };
307
322
 
308
323
  RCTPromiseRejectBlock rejectBlock = ^(NSString *code, NSString *message, NSError *error) {
309
- if (!resolve || !reject) {
310
- if (resolveWasCalled) {
311
- RCTLogError(@"%s: Tried to reject a promise after it's already been resolved.", moduleMethod.c_str());
324
+ std::optional<AsyncCallback<>> localReject;
325
+ bool alreadyResolved = false;
326
+ bool alreadyRejected = false;
327
+ {
328
+ std::lock_guard<std::mutex> lock(*mutex);
329
+ if (!resolve || !reject) {
330
+ alreadyResolved = resolveWasCalled;
331
+ alreadyRejected = !resolveWasCalled;
312
332
  } else {
313
- RCTLogError(@"%s: Tried to reject a promise more than once.", moduleMethod.c_str());
333
+ resolveWasCalled = NO;
334
+ localReject = std::move(reject);
335
+ reject = std::nullopt;
336
+ resolve = std::nullopt;
314
337
  }
338
+ }
339
+
340
+ if (alreadyResolved) {
341
+ RCTLogError(
342
+ @"%s: Tried to reject a promise after it's already been resolved. Message: %s",
343
+ moduleMethod.c_str(),
344
+ message.UTF8String);
345
+ return;
346
+ }
347
+
348
+ if (alreadyRejected) {
349
+ RCTLogError(
350
+ @"%s: Tried to reject a promise more than once. Message: %s",
351
+ moduleMethod.c_str(),
352
+ message.UTF8String);
315
353
  return;
316
354
  }
317
355
 
318
356
  NSDictionary *jsErrorDetails = RCTJSErrorFromCodeMessageAndNSError(code, message, error);
319
- reject->call([jsErrorDetails](jsi::Runtime &rt, jsi::Function &jsFunction) {
357
+ localReject->call([jsErrorDetails](jsi::Runtime &rt, jsi::Function &jsFunction) {
320
358
  jsFunction.call(rt, convertJSErrorDetailsToJSRuntimeError(rt, jsErrorDetails));
321
359
  });
322
- resolveWasCalled = NO;
323
- resolve = std::nullopt;
324
- reject = std::nullopt;
325
360
  };
326
361
 
327
362
  invokeCopy(resolveBlock, rejectBlock);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.82.0-nightly-20250809-e0ea78190",
3
+ "version": "0.82.0-nightly-20250810-d3bbbd893",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -162,13 +162,13 @@
162
162
  },
163
163
  "dependencies": {
164
164
  "@jest/create-cache-key-function": "^29.7.0",
165
- "@react-native/assets-registry": "0.82.0-nightly-20250809-e0ea78190",
166
- "@react-native/codegen": "0.82.0-nightly-20250809-e0ea78190",
167
- "@react-native/community-cli-plugin": "0.82.0-nightly-20250809-e0ea78190",
168
- "@react-native/gradle-plugin": "0.82.0-nightly-20250809-e0ea78190",
169
- "@react-native/js-polyfills": "0.82.0-nightly-20250809-e0ea78190",
170
- "@react-native/normalize-colors": "0.82.0-nightly-20250809-e0ea78190",
171
- "@react-native/virtualized-lists": "0.82.0-nightly-20250809-e0ea78190",
165
+ "@react-native/assets-registry": "0.82.0-nightly-20250810-d3bbbd893",
166
+ "@react-native/codegen": "0.82.0-nightly-20250810-d3bbbd893",
167
+ "@react-native/community-cli-plugin": "0.82.0-nightly-20250810-d3bbbd893",
168
+ "@react-native/gradle-plugin": "0.82.0-nightly-20250810-d3bbbd893",
169
+ "@react-native/js-polyfills": "0.82.0-nightly-20250810-d3bbbd893",
170
+ "@react-native/normalize-colors": "0.82.0-nightly-20250810-d3bbbd893",
171
+ "@react-native/virtualized-lists": "0.82.0-nightly-20250810-d3bbbd893",
172
172
  "abort-controller": "^3.0.0",
173
173
  "anser": "^1.4.9",
174
174
  "ansi-regex": "^5.0.0",
Binary file
Binary file
Binary file