react-native 0.83.0-nightly-20250912-a7dc5051d → 0.83.0-nightly-20250914-09a7e0a0f

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 (35) hide show
  1. package/Libraries/Components/Switch/Switch.js +1 -1
  2. package/Libraries/Core/ReactNativeVersion.js +1 -1
  3. package/Libraries/Image/RCTImageBlurUtils.mm +2 -1
  4. package/Libraries/Image/RCTImageUtils.mm +2 -1
  5. package/Libraries/Lists/SectionList.d.ts +5 -1
  6. package/Libraries/NativeAnimation/RCTAnimationUtils.mm +8 -2
  7. package/React/Base/RCTVersion.m +1 -1
  8. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.cpp +0 -1
  9. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.h +0 -1
  10. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.cpp +0 -1
  11. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.h +0 -11
  12. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/States.h +0 -2
  13. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +2 -1
  14. package/React/Views/RCTBorderDrawing.m +3 -1
  15. package/React/Views/ScrollView/RCTScrollView.m +2 -1
  16. package/ReactAndroid/gradle.properties +1 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.kt +1 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +1 -0
  19. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +17 -1
  20. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +3 -6
  21. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +11 -6
  22. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.kt +1 -10
  23. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  24. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  25. package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +1 -1
  26. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +32 -2
  27. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +8 -0
  28. package/ReactCommon/react/renderer/animated/tests/AnimationTestsBase.h +1 -0
  29. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +1 -1
  30. package/package.json +8 -8
  31. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +5 -0
  32. package/sdks/hermesc/osx-bin/hermes +0 -0
  33. package/sdks/hermesc/osx-bin/hermesc +0 -0
  34. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  35. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +1 -0
@@ -264,7 +264,7 @@ const Switch: component(
264
264
  disabled,
265
265
  onTintColor: trackColorForTrue,
266
266
  style: StyleSheet.compose(
267
- {height: 31, width: 51},
267
+ {alignSelf: 'flex-start' as const},
268
268
  StyleSheet.compose(
269
269
  style,
270
270
  ios_backgroundColor == null
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 83;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'nightly-20250912-a7dc5051d';
32
+ static prerelease: string | null = 'nightly-20250914-09a7e0a0f';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -30,7 +30,8 @@ UIImage *RCTBlurredImageWithRadius(UIImage *inputImage, CGFloat radius)
30
30
  }].CGImage;
31
31
  }
32
32
 
33
- vImage_Buffer buffer1, buffer2;
33
+ vImage_Buffer buffer1;
34
+ vImage_Buffer buffer2;
34
35
  buffer1.width = buffer2.width = CGImageGetWidth(imageRef);
35
36
  buffer1.height = buffer2.height = CGImageGetHeight(imageRef);
36
37
  buffer1.rowBytes = buffer2.rowBytes = CGImageGetBytesPerRow(imageRef);
@@ -212,7 +212,8 @@ BOOL RCTUpscalingRequired(
212
212
  sourceSize.height *= scale;
213
213
 
214
214
  // Calculate aspect ratios if needed (don't bother if resizeMode == stretch)
215
- CGFloat aspect = 0.0, targetAspect = 0.0;
215
+ CGFloat aspect = 0.0;
216
+ CGFloat targetAspect = 0.0;
216
217
  if (resizeMode != RCTResizeModeStretch) {
217
218
  aspect = sourceSize.width / sourceSize.height;
218
219
  targetAspect = destSize.width / destSize.height;
@@ -35,7 +35,11 @@ export interface SectionBase<ItemT, SectionT = DefaultSectionT> {
35
35
 
36
36
  renderItem?: SectionListRenderItem<ItemT, SectionT> | undefined;
37
37
 
38
- ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
38
+ ItemSeparatorComponent?:
39
+ | React.ComponentType<any>
40
+ | React.ReactElement
41
+ | null
42
+ | undefined;
39
43
 
40
44
  keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
41
45
  }
@@ -90,9 +90,15 @@ uint32_t RCTInterpolateColorInRange(CGFloat value, NSArray<NSNumber *> *inputRan
90
90
  CGFloat inputMin = inputRange[rangeIndex].doubleValue;
91
91
  CGFloat inputMax = inputRange[rangeIndex + 1].doubleValue;
92
92
 
93
- CGFloat redMin, greenMin, blueMin, alphaMin;
93
+ CGFloat redMin;
94
+ CGFloat greenMin;
95
+ CGFloat blueMin;
96
+ CGFloat alphaMin;
94
97
  [outputRange[rangeIndex] getRed:&redMin green:&greenMin blue:&blueMin alpha:&alphaMin];
95
- CGFloat redMax, greenMax, blueMax, alphaMax;
98
+ CGFloat redMax;
99
+ CGFloat greenMax;
100
+ CGFloat blueMax;
101
+ CGFloat alphaMax;
96
102
  [outputRange[rangeIndex + 1] getRed:&redMax green:&greenMax blue:&blueMax alpha:&alphaMax];
97
103
 
98
104
  return RCTColorFromComponents(
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(83),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20250912-a7dc5051d",
27
+ RCTVersionPrerelease: @"nightly-20250914-09a7e0a0f",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -21,7 +21,6 @@ registry->add(concreteComponentDescriptorProvider<AndroidDrawerLayoutComponentDe
21
21
  registry->add(concreteComponentDescriptorProvider<AndroidSwipeRefreshLayoutComponentDescriptor>());
22
22
  registry->add(concreteComponentDescriptorProvider<DebuggingOverlayComponentDescriptor>());
23
23
  registry->add(concreteComponentDescriptorProvider<PullToRefreshViewComponentDescriptor>());
24
- registry->add(concreteComponentDescriptorProvider<SwitchComponentDescriptor>());
25
24
  registry->add(concreteComponentDescriptorProvider<UnimplementedNativeViewComponentDescriptor>());
26
25
  }
27
26
 
@@ -21,7 +21,6 @@ using AndroidDrawerLayoutComponentDescriptor = ConcreteComponentDescriptor<Andro
21
21
  using AndroidSwipeRefreshLayoutComponentDescriptor = ConcreteComponentDescriptor<AndroidSwipeRefreshLayoutShadowNode>;
22
22
  using DebuggingOverlayComponentDescriptor = ConcreteComponentDescriptor<DebuggingOverlayShadowNode>;
23
23
  using PullToRefreshViewComponentDescriptor = ConcreteComponentDescriptor<PullToRefreshViewShadowNode>;
24
- using SwitchComponentDescriptor = ConcreteComponentDescriptor<SwitchShadowNode>;
25
24
  using UnimplementedNativeViewComponentDescriptor = ConcreteComponentDescriptor<UnimplementedNativeViewShadowNode>;
26
25
 
27
26
  void FBReactNativeSpec_registerComponentDescriptorsFromCodegen(
@@ -17,7 +17,6 @@ extern const char AndroidDrawerLayoutComponentName[] = "AndroidDrawerLayout";
17
17
  extern const char AndroidSwipeRefreshLayoutComponentName[] = "AndroidSwipeRefreshLayout";
18
18
  extern const char DebuggingOverlayComponentName[] = "DebuggingOverlay";
19
19
  extern const char PullToRefreshViewComponentName[] = "PullToRefreshView";
20
- extern const char SwitchComponentName[] = "Switch";
21
20
  extern const char UnimplementedNativeViewComponentName[] = "UnimplementedNativeView";
22
21
 
23
22
  } // namespace facebook::react
@@ -73,17 +73,6 @@ using PullToRefreshViewShadowNode = ConcreteViewShadowNode<
73
73
  PullToRefreshViewEventEmitter,
74
74
  PullToRefreshViewState>;
75
75
 
76
- JSI_EXPORT extern const char SwitchComponentName[];
77
-
78
- /*
79
- * `ShadowNode` for <Switch> component.
80
- */
81
- using SwitchShadowNode = ConcreteViewShadowNode<
82
- SwitchComponentName,
83
- SwitchProps,
84
- SwitchEventEmitter,
85
- SwitchState>;
86
-
87
76
  JSI_EXPORT extern const char UnimplementedNativeViewComponentName[];
88
77
 
89
78
  /*
@@ -25,8 +25,6 @@ using DebuggingOverlayState = StateData;
25
25
 
26
26
  using PullToRefreshViewState = StateData;
27
27
 
28
- using SwitchState = StateData;
29
-
30
28
  using UnimplementedNativeViewState = StateData;
31
29
 
32
30
  } // namespace facebook::react
@@ -81,7 +81,8 @@
81
81
  return;
82
82
  }
83
83
 
84
- CGFloat top = 0, left = 0;
84
+ CGFloat top = 0;
85
+ CGFloat left = 0;
85
86
  if (contentSize.width < boundsSize.width) {
86
87
  left = (boundsSize.width - contentSize.width) * 0.5f;
87
88
  }
@@ -80,7 +80,9 @@ static void RCTPathAddEllipticArc(
80
80
  CGFloat endAngle,
81
81
  BOOL clockwise)
82
82
  {
83
- CGFloat xScale = 1, yScale = 1, radius = 0;
83
+ CGFloat xScale = 1;
84
+ CGFloat yScale = 1;
85
+ CGFloat radius = 0;
84
86
  if (size.width != 0) {
85
87
  xScale = 1;
86
88
  yScale = size.height / size.width;
@@ -679,7 +679,8 @@ RCT_SCROLL_EVENT_HANDLER(scrollViewDidScrollToTop, onScrollToTop)
679
679
  return;
680
680
  }
681
681
 
682
- CGFloat top = 0, left = 0;
682
+ CGFloat top = 0;
683
+ CGFloat left = 0;
683
684
  if (contentSize.width < boundsSize.width) {
684
685
  left = (boundsSize.width - contentSize.width) * 0.5f;
685
686
  }
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.83.0-nightly-20250912-a7dc5051d
1
+ VERSION_NAME=0.83.0-nightly-20250914-09a7e0a0f
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -25,7 +25,7 @@ public abstract class ReactContextBaseJavaModule : BaseJavaModule {
25
25
  * this method whenever you actually need the Activity and make sure to check for `null`.
26
26
  */
27
27
  @Deprecated(
28
- "Deprecated in 0.80.0. Use getReactApplicationContext.getCurrentActivity() instead.",
28
+ "Deprecated in 0.80.0. Use getReactApplicationContext().getCurrentActivity() instead.",
29
29
  ReplaceWith("reactApplicationContext.currentActivity"),
30
30
  )
31
31
  protected fun getCurrentActivity(): Activity? {
@@ -229,6 +229,7 @@ public abstract class DevSupportManagerBase(
229
229
  }
230
230
  context
231
231
  },
232
+ { openDebugger(DebuggerFrontendPanelName.PERFORMANCE.toString()) },
232
233
  )
233
234
  }
234
235
  }
@@ -15,10 +15,12 @@ import javax.inject.Provider
15
15
  internal class PerfMonitorOverlayManager(
16
16
  private val devHelper: PerfMonitorDevHelper,
17
17
  private val contextProvider: Provider<Context?>,
18
+ private val onRequestOpenDevTools: () -> Unit,
18
19
  ) : PerfMonitorUpdateListener {
19
20
  private var enabled: Boolean = false
20
21
  private var initialized: Boolean = false
21
22
  private var view: PerfMonitorOverlayView? = null
23
+ private var tracingState: TracingState = TracingState.ENABLEDINCDPMODE
22
24
 
23
25
  private fun init() {
24
26
  if (initialized || !enabled) {
@@ -27,7 +29,7 @@ internal class PerfMonitorOverlayManager(
27
29
 
28
30
  UiThreadUtil.runOnUiThread {
29
31
  val context = contextProvider.get() ?: return@runOnUiThread
30
- view = PerfMonitorOverlayView(context)
32
+ view = PerfMonitorOverlayView(context, ::handleRecordingButtonPress)
31
33
 
32
34
  // Start background tracing
33
35
  devHelper.inspectorTarget?.resumeBackgroundTrace()
@@ -59,6 +61,20 @@ internal class PerfMonitorOverlayManager(
59
61
  }
60
62
 
61
63
  override fun onRecordingStateChanged(state: TracingState) {
64
+ tracingState = state
62
65
  view?.updateRecordingState(state)
63
66
  }
67
+
68
+ private fun handleRecordingButtonPress() {
69
+ when (tracingState) {
70
+ TracingState.ENABLEDINBACKGROUNDMODE -> {
71
+ devHelper.inspectorTarget?.pauseAndAnalyzeBackgroundTrace()
72
+ onRequestOpenDevTools()
73
+ }
74
+ TracingState.DISABLED -> {
75
+ devHelper.inspectorTarget?.resumeBackgroundTrace()
76
+ }
77
+ TracingState.ENABLEDINCDPMODE -> Unit
78
+ }
79
+ }
64
80
  }
@@ -27,6 +27,7 @@ import com.facebook.react.uimanager.PixelUtil
27
27
 
28
28
  internal class PerfMonitorOverlayView(
29
29
  private val context: Context,
30
+ private val onButtonPress: () -> Unit,
30
31
  ) {
31
32
  private val dialog: Dialog
32
33
  private lateinit var statusLabel: TextView
@@ -101,6 +102,7 @@ internal class PerfMonitorOverlayView(
101
102
  textContainer.addView(tooltipLabel)
102
103
 
103
104
  val containerLayout = createInnerLayout()
105
+ containerLayout.setOnClickListener { onButtonPress() }
104
106
  containerLayout.addView(statusIndicator)
105
107
  containerLayout.addView(textContainer)
106
108
 
@@ -108,12 +110,7 @@ internal class PerfMonitorOverlayView(
108
110
  createAnchoredDialog(dpToPx(12f), dpToPx(12f)).apply { setContentView(containerLayout) }
109
111
  dialog.window?.apply {
110
112
  attributes =
111
- attributes?.apply {
112
- flags =
113
- flags or
114
- WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or
115
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
116
- }
113
+ attributes?.apply { flags = flags or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE }
117
114
  }
118
115
 
119
116
  return dialog
@@ -99,7 +99,6 @@ import java.util.HashMap;
99
99
  import java.util.HashSet;
100
100
  import java.util.List;
101
101
  import java.util.Map;
102
- import java.util.Objects;
103
102
  import java.util.Queue;
104
103
  import java.util.Set;
105
104
  import java.util.concurrent.CopyOnWriteArrayList;
@@ -738,11 +737,17 @@ public class FabricUIManager
738
737
  * vertical insets.
739
738
  */
740
739
  private long getEncodedScreenSizeWithoutVerticalInsets(int surfaceId) {
741
- SurfaceMountingManager surfaceMountingManager = mMountingManager.getSurfaceManager(surfaceId);
742
- Objects.requireNonNull(surfaceMountingManager);
743
- ThemedReactContext context = Objects.requireNonNull(surfaceMountingManager.getContext());
744
- return DisplayMetricsHolder.getEncodedScreenSizeWithoutVerticalInsets(
745
- context.getCurrentActivity());
740
+ ThemedReactContext context =
741
+ mMountingManager
742
+ .getSurfaceManagerEnforced(surfaceId, "getEncodedScreenSizeWithoutVerticalInsets")
743
+ .getContext();
744
+ if (context == null) {
745
+ FLog.w(TAG, "Couldn't get context from SurfaceMountingManager for surfaceId %d", surfaceId);
746
+ return 0;
747
+ } else {
748
+ return DisplayMetricsHolder.getEncodedScreenSizeWithoutVerticalInsets(
749
+ context.getCurrentActivity());
750
+ }
746
751
  }
747
752
 
748
753
  @Override
@@ -55,7 +55,7 @@ public class AndroidInfoModule(reactContext: ReactApplicationContext) :
55
55
  constants["ServerHost"] =
56
56
  AndroidInfoHelpers.getServerHost(reactApplicationContext.applicationContext)
57
57
  }
58
- constants["isTesting"] = "true" == System.getProperty(IS_TESTING) || isRunningScreenshotTest()
58
+ constants["isTesting"] = "true" == System.getProperty(IS_TESTING)
59
59
  val isDisableAnimations = System.getProperty(IS_DISABLE_ANIMATIONS)
60
60
  if (isDisableAnimations != null) {
61
61
  constants["isDisableAnimations"] = "true" == isDisableAnimations
@@ -71,15 +71,6 @@ public class AndroidInfoModule(reactContext: ReactApplicationContext) :
71
71
 
72
72
  override fun invalidate() {}
73
73
 
74
- private fun isRunningScreenshotTest(): Boolean {
75
- return try {
76
- Class.forName("com.facebook.testing.react.screenshots.ReactAppScreenshotTestActivity")
77
- true
78
- } catch (ignored: ClassNotFoundException) {
79
- false
80
- }
81
- }
82
-
83
74
  public companion object {
84
75
  public const val NAME: String = NativePlatformConstantsAndroidSpec.NAME
85
76
  private const val IS_TESTING = "IS_TESTING"
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 83,
17
17
  "patch" to 0,
18
- "prerelease" to "nightly-20250912-a7dc5051d"
18
+ "prerelease" to "nightly-20250914-09a7e0a0f"
19
19
  )
20
20
  }
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 83;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "nightly-20250912-a7dc5051d";
25
+ std::string_view Prerelease = "nightly-20250914-09a7e0a0f";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -51,7 +51,7 @@ void AnimatedModule::createAnimatedNode(
51
51
  if (auto it = configDynamic.find("disableBatchingForNativeCreate");
52
52
  it != configDynamic.items().end() && it->second == true) {
53
53
  if (nodesManager_) {
54
- nodesManager_->createAnimatedNode(tag, configDynamic);
54
+ nodesManager_->createAnimatedNodeAsync(tag, configDynamic);
55
55
  }
56
56
  } else {
57
57
  operations_.emplace_back(
@@ -64,6 +64,8 @@ void mergeObjects(folly::dynamic& out, const folly::dynamic& objectToMerge) {
64
64
 
65
65
  } // namespace
66
66
 
67
+ thread_local bool NativeAnimatedNodesManager::isOnRenderThread_{false};
68
+
67
69
  NativeAnimatedNodesManager::NativeAnimatedNodesManager(
68
70
  DirectManipulationCallback&& directManipulationCallback,
69
71
  FabricCommitCallback&& fabricCommitCallback,
@@ -155,9 +157,28 @@ std::unique_ptr<AnimatedNode> NativeAnimatedNodesManager::animatedNode(
155
157
  }
156
158
  }
157
159
 
160
+ void NativeAnimatedNodesManager::createAnimatedNodeAsync(
161
+ Tag tag,
162
+ const folly::dynamic& config) noexcept {
163
+ if (isOnRenderThread_) {
164
+ LOG(ERROR)
165
+ << "createAnimatedNodeAsync should not be called on render thread";
166
+ return;
167
+ }
168
+ auto node = animatedNode(tag, config);
169
+ if (node) {
170
+ std::lock_guard<std::mutex> lock(animatedNodesCreatedAsyncMutex_);
171
+ animatedNodesCreatedAsync_.emplace(tag, std::move(node));
172
+ }
173
+ }
174
+
158
175
  void NativeAnimatedNodesManager::createAnimatedNode(
159
176
  Tag tag,
160
177
  const folly::dynamic& config) noexcept {
178
+ if (!isOnRenderThread_) {
179
+ LOG(ERROR) << "createAnimatedNode should only be called on render thread";
180
+ return;
181
+ }
161
182
  auto node = animatedNode(tag, config);
162
183
  if (node) {
163
184
  std::lock_guard<std::mutex> lock(connectedAnimatedNodesMutex_);
@@ -410,8 +431,6 @@ void NativeAnimatedNodesManager::removeAnimatedEventFromView(
410
431
  }
411
432
  }
412
433
 
413
- static thread_local bool isOnRenderThread_{false};
414
-
415
434
  void NativeAnimatedNodesManager::handleAnimatedEvent(
416
435
  Tag viewTag,
417
436
  const std::string& eventName,
@@ -849,6 +868,17 @@ void NativeAnimatedNodesManager::onRender() {
849
868
 
850
869
  isOnRenderThread_ = true;
851
870
 
871
+ {
872
+ // Flush async created animated nodes
873
+ std::lock_guard<std::mutex> lock(animatedNodesCreatedAsyncMutex_);
874
+ std::lock_guard<std::mutex> lockCreateAsync(connectedAnimatedNodesMutex_);
875
+ for (auto& [tag, node] : animatedNodesCreatedAsync_) {
876
+ animatedNodes_.insert({tag, std::move(node)});
877
+ updatedNodeTags_.insert(tag);
878
+ }
879
+ animatedNodesCreatedAsync_.clear();
880
+ }
881
+
852
882
  // Run operations scheduled from AnimatedModule
853
883
  std::vector<UiTask> operations;
854
884
  {
@@ -80,6 +80,9 @@ class NativeAnimatedNodesManager {
80
80
 
81
81
  #pragma mark - Graph
82
82
 
83
+ // Called from JS thread
84
+ void createAnimatedNodeAsync(Tag tag, const folly::dynamic& config) noexcept;
85
+
83
86
  void createAnimatedNode(Tag tag, const folly::dynamic& config) noexcept;
84
87
 
85
88
  void connectAnimatedNodes(Tag parentTag, Tag childTag) noexcept;
@@ -203,6 +206,11 @@ class NativeAnimatedNodesManager {
203
206
  Tag tag,
204
207
  const folly::dynamic& config) noexcept;
205
208
 
209
+ static thread_local bool isOnRenderThread_;
210
+
211
+ std::mutex animatedNodesCreatedAsyncMutex_;
212
+ std::unordered_map<Tag, std::unique_ptr<AnimatedNode>>
213
+ animatedNodesCreatedAsync_;
206
214
  std::unordered_map<Tag, std::unique_ptr<AnimatedNode>> animatedNodes_;
207
215
  std::unordered_map<Tag, Tag> connectedAnimatedNodes_;
208
216
  std::unordered_map<int, std::unique_ptr<AnimationDriver>> activeAnimations_;
@@ -35,6 +35,7 @@ class AnimationTestsBase : public testing::Test {
35
35
  lastCommittedProps = nodesProps.begin()->second;
36
36
  }
37
37
  });
38
+ NativeAnimatedNodesManager::isOnRenderThread_ = true;
38
39
  }
39
40
 
40
41
  bool nodeNeedsUpdate(Tag nodeTag) const {
@@ -26,7 +26,7 @@ RCTHermesInstance::RCTHermesInstance(CrashManagerProvider crashManagerProvider,
26
26
  std::unique_ptr<JSRuntime> RCTHermesInstance::createJSRuntime(
27
27
  std::shared_ptr<MessageQueueThread> msgQueueThread) noexcept
28
28
  {
29
- return _hermesInstance->createJSRuntime(
29
+ return facebook::react::HermesInstance::createJSRuntime(
30
30
  _crashManagerProvider ? _crashManagerProvider() : nullptr, std::move(msgQueueThread), _allocInOldGenBeforeTTI);
31
31
  }
32
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.83.0-nightly-20250912-a7dc5051d",
3
+ "version": "0.83.0-nightly-20250914-09a7e0a0f",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -159,13 +159,13 @@
159
159
  },
160
160
  "dependencies": {
161
161
  "@jest/create-cache-key-function": "^29.7.0",
162
- "@react-native/assets-registry": "0.83.0-nightly-20250912-a7dc5051d",
163
- "@react-native/codegen": "0.83.0-nightly-20250912-a7dc5051d",
164
- "@react-native/community-cli-plugin": "0.83.0-nightly-20250912-a7dc5051d",
165
- "@react-native/gradle-plugin": "0.83.0-nightly-20250912-a7dc5051d",
166
- "@react-native/js-polyfills": "0.83.0-nightly-20250912-a7dc5051d",
167
- "@react-native/normalize-colors": "0.83.0-nightly-20250912-a7dc5051d",
168
- "@react-native/virtualized-lists": "0.83.0-nightly-20250912-a7dc5051d",
162
+ "@react-native/assets-registry": "0.83.0-nightly-20250914-09a7e0a0f",
163
+ "@react-native/codegen": "0.83.0-nightly-20250914-09a7e0a0f",
164
+ "@react-native/community-cli-plugin": "0.83.0-nightly-20250914-09a7e0a0f",
165
+ "@react-native/gradle-plugin": "0.83.0-nightly-20250914-09a7e0a0f",
166
+ "@react-native/js-polyfills": "0.83.0-nightly-20250914-09a7e0a0f",
167
+ "@react-native/normalize-colors": "0.83.0-nightly-20250914-09a7e0a0f",
168
+ "@react-native/virtualized-lists": "0.83.0-nightly-20250914-09a7e0a0f",
169
169
  "abort-controller": "^3.0.0",
170
170
  "anser": "^1.4.9",
171
171
  "ansi-regex": "^5.0.0",
@@ -59,6 +59,11 @@ function getInputFiles(appPath /*: string */, appPkgJson /*: $FlowFixMe */) {
59
59
  !projectPath.includes('/Pods/') && // exclude Pods/Pods.xcodeproj
60
60
  !projectPath.includes('/node_modules/'), // exclude all the xcodeproj in node_modules of libraries
61
61
  )[0];
62
+ if (!xcodeproj) {
63
+ throw new Error(
64
+ `Cannot find .xcodeproj file inside ${appPath}. This is required to determine codegen spec paths relative to native project.`,
65
+ );
66
+ }
62
67
  const jsFiles = '-name "Native*.js" -or -name "*NativeComponent.js"';
63
68
  const tsFiles = '-name "Native*.ts" -or -name "*NativeComponent.ts"';
64
69
  const findCommand = `find ${path.join(appPath, jsSrcsDir)} -type f -not -path "*/__mocks__/*" -and \\( ${jsFiles} -or ${tsFiles} \\)`;
Binary file
Binary file
Binary file
@@ -58,4 +58,5 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
58
58
  export default (codegenNativeComponent<SwitchNativeProps>('Switch', {
59
59
  paperComponentName: 'RCTSwitch',
60
60
  excludedPlatforms: ['android'],
61
+ interfaceOnly: true,
61
62
  }): ComponentType);