react-native 0.84.0-nightly-20251208-8347cc4b5 → 0.84.0-nightly-20251211-80e384a80

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/AppDelegate/RCTReactNativeFactory.mm +21 -31
  2. package/Libraries/Core/ReactNativeVersion.js +1 -1
  3. package/React/Base/RCTBridge.mm +1 -1
  4. package/React/Base/RCTUtils.mm +1 -1
  5. package/React/Base/RCTVersion.m +1 -1
  6. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +11 -0
  7. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +19 -2
  8. package/ReactAndroid/api/ReactAndroid.api +8 -0
  9. package/ReactAndroid/gradle.properties +1 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +3 -6
  11. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +5 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +36 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +2 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt +20 -0
  16. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +2 -12
  18. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +2 -40
  19. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +41 -10
  20. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  21. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +5 -1
  22. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +33 -29
  23. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +46 -3
  24. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +32 -1
  25. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +16 -0
  26. package/index.js +3 -0
  27. package/index.js.flow +5 -0
  28. package/package.json +9 -9
  29. package/scripts/cocoapods/new_architecture.rb +2 -0
  30. package/scripts/cocoapods/utils.rb +4 -4
  31. package/sdks/hermes-engine/version.properties +1 -1
  32. package/src/types/globals.d.ts +30 -1
  33. package/third-party-podspecs/RCT-Folly.podspec +1 -0
  34. package/types_generated/Libraries/Pressability/usePressability.d.ts +27 -0
  35. package/types_generated/index.d.ts +3 -1
@@ -288,62 +288,51 @@ using namespace facebook::react;
288
288
  };
289
289
  }
290
290
 
291
+ #ifndef RCT_REMOVE_LEGACY_ARCH
292
+ // When the Legacy Arch is removed, the Delegate does not have a extraLazyModuleClassesForBridge method
291
293
  if ([self.delegate respondsToSelector:@selector(extraLazyModuleClassesForBridge:)]) {
292
294
  configuration.extraLazyModuleClassesForBridge =
293
295
  ^NSDictionary<NSString *, Class> *_Nonnull(RCTBridge *_Nonnull bridge)
294
296
  {
295
- #ifndef RCT_REMOVE_LEGACY_ARCH
296
297
  return [weakSelf.delegate extraLazyModuleClassesForBridge:bridge];
297
- #else
298
- // When the Legacy Arch is removed, the Delegate does not have a extraLazyModuleClassesForBridge method
299
- return @{};
300
- #endif
301
298
  };
302
299
  }
300
+ #endif
303
301
 
302
+ #ifndef RCT_REMOVE_LEGACY_ARCH
303
+ // When the Legacy Arch is removed, the Delegate does not have a bridge:didNotFindModule method
304
+ // We return NO, because if we have invoked this method is unlikely that the module will be actually registered
304
305
  if ([self.delegate respondsToSelector:@selector(bridge:didNotFindModule:)]) {
305
306
  configuration.bridgeDidNotFindModule = ^BOOL(RCTBridge *_Nonnull bridge, NSString *_Nonnull moduleName) {
306
- #ifndef RCT_REMOVE_LEGACY_ARCH
307
307
  return [weakSelf.delegate bridge:bridge didNotFindModule:moduleName];
308
- #else
309
- // When the Legacy Arch is removed, the Delegate does not have a bridge:didNotFindModule method
310
- // We return NO, because if we have invoked this method is unlikely that the module will be actually registered
311
- return NO;
312
- #endif
313
308
  };
314
309
  }
310
+ #endif
315
311
 
312
+ #ifndef RCT_REMOVE_LEGACY_ARCH
313
+ // When the Legacy Arch is removed, the Delegate does not have a
314
+ // loadSourceForBridge:onProgress:onComplete: method
315
+ // We then call the loadBundleAtURL:onProgress:onComplete: instead
316
316
  if ([self.delegate respondsToSelector:@selector(loadSourceForBridge:onProgress:onComplete:)]) {
317
317
  configuration.loadSourceForBridgeWithProgress =
318
318
  ^(RCTBridge *_Nonnull bridge,
319
319
  RCTSourceLoadProgressBlock _Nonnull onProgress,
320
320
  RCTSourceLoadBlock _Nonnull loadCallback) {
321
- #ifndef RCT_REMOVE_LEGACY_ARCH
322
321
  [weakSelf.delegate loadSourceForBridge:bridge onProgress:onProgress onComplete:loadCallback];
323
- #else
324
- // When the Legacy Arch is removed, the Delegate does not have a
325
- // loadSourceForBridge:onProgress:onComplete: method
326
- // We then call the loadBundleAtURL:onProgress:onComplete: instead
327
- [weakSelf.delegate loadBundleAtURL:self.bundleURL onProgress:onProgress onComplete:loadCallback];
328
- #endif
329
322
  };
330
323
  }
324
+ #endif
331
325
 
326
+ #ifndef RCT_REMOVE_LEGACY_ARCH
327
+ // When the Legacy Arch is removed, the Delegate does not have a
328
+ // loadSourceForBridge:withBlock: method
329
+ // We then call the loadBundleAtURL:onProgress:onComplete: instead
332
330
  if ([self.delegate respondsToSelector:@selector(loadSourceForBridge:withBlock:)]) {
333
331
  configuration.loadSourceForBridge = ^(RCTBridge *_Nonnull bridge, RCTSourceLoadBlock _Nonnull loadCallback) {
334
- #ifndef RCT_REMOVE_LEGACY_ARCH
335
332
  [weakSelf.delegate loadSourceForBridge:bridge withBlock:loadCallback];
336
- #else
337
- // When the Legacy Arch is removed, the Delegate does not have a
338
- // loadSourceForBridge:withBlock: method
339
- // We then call the loadBundleAtURL:onProgress:onComplete: instead
340
- [weakSelf.delegate loadBundleAtURL:self.bundleURL
341
- onProgress:^(RCTLoadingProgress *progressData) {
342
- }
343
- onComplete:loadCallback];
344
- #endif
345
333
  };
346
334
  }
335
+ #endif
347
336
 
348
337
  configuration.jsRuntimeConfiguratorDelegate = self;
349
338
 
@@ -371,15 +360,16 @@ using namespace facebook::react;
371
360
  static dispatch_once_t setupFeatureFlagsToken;
372
361
  dispatch_once(&setupFeatureFlagsToken, ^{
373
362
  switch (releaseLevel) {
374
- case Stable:
375
- ReactNativeFeatureFlags::override(std::make_unique<ReactNativeFeatureFlagsOverridesOSSStable>());
376
- break;
377
363
  case Canary:
378
364
  ReactNativeFeatureFlags::override(std::make_unique<ReactNativeFeatureFlagsOverridesOSSCanary>());
379
365
  break;
380
366
  case Experimental:
381
367
  ReactNativeFeatureFlags::override(std::make_unique<ReactNativeFeatureFlagsOverridesOSSExperimental>());
382
368
  break;
369
+ case Stable:
370
+ default:
371
+ ReactNativeFeatureFlags::override(std::make_unique<ReactNativeFeatureFlagsOverridesOSSStable>());
372
+ break;
383
373
  }
384
374
  });
385
375
  }
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 84;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'nightly-20251208-8347cc4b5';
32
+ static prerelease: string | null = 'nightly-20251211-80e384a80';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -369,7 +369,7 @@ static RCTBridge *RCTCurrentBridgeInstance = nil;
369
369
  moduleProvider:(RCTBridgeModuleListProvider)block
370
370
  launchOptions:(NSDictionary *)launchOptions
371
371
  {
372
- // Only enabld this assertion in OSS
372
+ // Only enable this assertion in OSS
373
373
  #if COCOAPODS
374
374
  [RCTBridge throwIfOnLegacyArch];
375
375
  #endif
@@ -706,7 +706,7 @@ NSURL *RCTDataURL(NSString *mimeType, NSData *data)
706
706
  [data base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)0]]];
707
707
  }
708
708
 
709
- BOOL RCTIsGzippedData(NSData *__nullable /*data*/); // exposed for unit testing purposes
709
+ extern "C" BOOL RCTIsGzippedData(NSData *__nullable /*data*/); // exposed for unit testing purposes
710
710
  BOOL RCTIsGzippedData(NSData *__nullable data)
711
711
  {
712
712
  UInt8 *bytes = (UInt8 *)data.bytes;
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(84),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20251208-8347cc4b5",
27
+ RCTVersionPrerelease: @"nightly-20251211-80e384a80",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -287,4 +287,15 @@ static NSString *const kRCTLegacyInteropChildIndexKey = @"index";
287
287
  [_adapter handleCommand:(NSString *)commandName args:(NSArray *)args];
288
288
  }
289
289
 
290
+ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
291
+ {
292
+ UIView *result = [super hitTest:point withEvent:event];
293
+
294
+ if (result == self) {
295
+ return nil;
296
+ }
297
+
298
+ return result;
299
+ }
300
+
290
301
  @end
@@ -1497,8 +1497,15 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view)
1497
1497
 
1498
1498
  NSMutableArray<UIAccessibilityCustomAction *> *customActions = [NSMutableArray array];
1499
1499
  for (const auto &accessibilityAction : accessibilityActions) {
1500
+ NSString *actionName = RCTNSStringFromString(accessibilityAction.name);
1501
+ NSString *actionLabel = actionName;
1502
+
1503
+ if (accessibilityAction.label.has_value()) {
1504
+ actionLabel = RCTNSStringFromString(accessibilityAction.label.value());
1505
+ }
1506
+
1500
1507
  [customActions
1501
- addObject:[[UIAccessibilityCustomAction alloc] initWithName:RCTNSStringFromString(accessibilityAction.name)
1508
+ addObject:[[UIAccessibilityCustomAction alloc] initWithName:actionLabel
1502
1509
  target:self
1503
1510
  selector:@selector(didActivateAccessibilityCustomAction:)]];
1504
1511
  }
@@ -1553,7 +1560,17 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view)
1553
1560
  - (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)action
1554
1561
  {
1555
1562
  if (_eventEmitter && _props->onAccessibilityAction) {
1556
- _eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name));
1563
+ // iOS defines the name as the localized label, so iterate through accessibilityActions to find the matching
1564
+ // non-localized action name when passing to JS. This allows for standard action names across platforms.
1565
+ NSString *actionName = action.name;
1566
+ for (const auto &accessibilityAction : _props->accessibilityActions) {
1567
+ if (accessibilityAction.label.has_value() &&
1568
+ [RCTNSStringFromString(accessibilityAction.label.value()) isEqualToString:action.name]) {
1569
+ actionName = RCTNSStringFromString(accessibilityAction.name);
1570
+ break;
1571
+ }
1572
+ }
1573
+ _eventEmitter->onAccessibilityAction(RCTStringFromNSString(actionName));
1557
1574
  return YES;
1558
1575
  } else {
1559
1576
  return NO;
@@ -2465,6 +2465,7 @@ public final class com/facebook/react/modules/appearance/AppearanceModule : com/
2465
2465
  public fun addListener (Ljava/lang/String;)V
2466
2466
  public final fun emitAppearanceChanged (Ljava/lang/String;)V
2467
2467
  public fun getColorScheme ()Ljava/lang/String;
2468
+ public fun invalidate ()V
2468
2469
  public final fun invalidatePlatformColorCache ()V
2469
2470
  public final fun onConfigurationChanged (Landroid/content/Context;)V
2470
2471
  public fun removeListeners (D)V
@@ -2475,7 +2476,14 @@ public final class com/facebook/react/modules/appearance/AppearanceModule$Compan
2475
2476
  }
2476
2477
 
2477
2478
  public abstract interface class com/facebook/react/modules/appearance/AppearanceModule$OverrideColorScheme {
2479
+ public abstract fun addSchemeChangeListener (Lkotlin/jvm/functions/Function0;)V
2478
2480
  public abstract fun getScheme ()Ljava/lang/String;
2481
+ public abstract fun removeSchemeChangeListener (Lkotlin/jvm/functions/Function0;)V
2482
+ }
2483
+
2484
+ public final class com/facebook/react/modules/appearance/AppearanceModule$OverrideColorScheme$DefaultImpls {
2485
+ public static fun addSchemeChangeListener (Lcom/facebook/react/modules/appearance/AppearanceModule$OverrideColorScheme;Lkotlin/jvm/functions/Function0;)V
2486
+ public static fun removeSchemeChangeListener (Lcom/facebook/react/modules/appearance/AppearanceModule$OverrideColorScheme;Lkotlin/jvm/functions/Function0;)V
2479
2487
  }
2480
2488
 
2481
2489
  public abstract interface class com/facebook/react/modules/appregistry/AppRegistry : com/facebook/react/bridge/JavaScriptModule {
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.84.0-nightly-20251208-8347cc4b5
1
+ VERSION_NAME=0.84.0-nightly-20251211-80e384a80
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -178,13 +178,10 @@ public open class ReactDelegate {
178
178
  if (
179
179
  ReactNativeNewArchitectureFeatureFlags.enableBridgelessArchitecture() && reactHost != null
180
180
  ) {
181
- reactHost?.onBackPressed()
181
+ return reactHost?.onBackPressed() == true
182
+ } else if (reactNativeHost?.hasInstance() == true) {
183
+ reactNativeHost?.reactInstanceManager?.onBackPressed()
182
184
  return true
183
- } else {
184
- if (reactNativeHost?.hasInstance() == true) {
185
- reactNativeHost?.reactInstanceManager?.onBackPressed()
186
- return true
187
- }
188
185
  }
189
186
  return false
190
187
  }
@@ -83,7 +83,11 @@ internal class PerfMonitorOverlayManager(
83
83
  UiThreadUtil.runOnUiThread {
84
84
  view?.updateRecordingState(state)
85
85
  view?.updatePerfIssueCount(perfIssueCount)
86
- view?.show()
86
+ if (state == TracingState.ENABLED_IN_CDP_MODE) {
87
+ view?.hide()
88
+ } else {
89
+ view?.show()
90
+ }
87
91
  }
88
92
  }
89
93
 
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<dffc5db0f80501f6246f9d6087c6fb4a>>
7
+ * @generated SignedSource<<8531ce29d0e5362517d35559ebda623b>>
8
8
  */
9
9
 
10
10
  /**
@@ -27,5 +27,7 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android :
27
27
 
28
28
  override fun enableSwiftUIBasedFilters(): Boolean = true
29
29
 
30
+ override fun fixTextClippingAndroid15useBoundsForWidth(): Boolean = true
31
+
30
32
  override fun preventShadowTreeCommitExhaustion(): Boolean = true
31
33
  }
@@ -28,13 +28,42 @@ constructor(
28
28
 
29
29
  private var lastEmittedColorScheme: String? = null
30
30
 
31
+ private val schemeChangeListener: () -> Unit = {
32
+ val activity = reactApplicationContext.getCurrentActivity()
33
+ onConfigurationChanged(activity ?: reactApplicationContext)
34
+ }
35
+
36
+ init {
37
+ // Register as a listener for color scheme changes if override is provided
38
+ overrideColorScheme?.addSchemeChangeListener(schemeChangeListener)
39
+ }
40
+
31
41
  /** Optional override to the current color scheme */
32
- public fun interface OverrideColorScheme {
42
+ public interface OverrideColorScheme {
33
43
  /**
34
44
  * Color scheme will use the return value instead of the current system configuration. Available
35
45
  * scheme: {light, dark}
36
46
  */
37
47
  public fun getScheme(): String
48
+
49
+ /**
50
+ * Register a listener to be notified when the color scheme changes. The listener will be
51
+ * invoked whenever the underlying theme preference changes.
52
+ *
53
+ * Default implementation does nothing. Override this method if you want to support dynamic
54
+ * color scheme updates.
55
+ */
56
+ public fun addSchemeChangeListener(listener: () -> Unit) {
57
+ // no-op
58
+ }
59
+
60
+ /**
61
+ * Unregisters a previously added color scheme change listener. Default implementation is a
62
+ * no-op; override to remove the listener from your source.
63
+ */
64
+ public fun removeSchemeChangeListener(listener: () -> Unit) {
65
+ // no-op
66
+ }
38
67
  }
39
68
 
40
69
  private fun colorSchemeForCurrentConfiguration(context: Context): String {
@@ -98,6 +127,12 @@ constructor(
98
127
  Companion.invalidatePlatformColorCache?.run()
99
128
  }
100
129
 
130
+ public override fun invalidate() {
131
+ overrideColorScheme?.removeSchemeChangeListener(schemeChangeListener)
132
+ invalidatePlatformColorCache()
133
+ super.invalidate()
134
+ }
135
+
101
136
  public companion object {
102
137
  public const val NAME: String = NativeAppearanceSpec.NAME
103
138
  private const val APPEARANCE_CHANGED_EVENT_NAME = "appearanceChanged"
@@ -35,7 +35,8 @@ internal object NetworkEventUtil {
35
35
  request.url().toString(),
36
36
  request.method(),
37
37
  headersMap,
38
- request.body()?.toString().orEmpty(),
38
+ (request.body() as? ProgressRequestBody)?.getBodyPreview()
39
+ ?: request.body()?.toString().orEmpty(),
39
40
  request.body()?.contentLength() ?: 0,
40
41
  )
41
42
  InspectorNetworkReporter.reportConnectionTiming(devToolsRequestId, headersMap)
@@ -23,6 +23,10 @@ internal class ProgressRequestBody(
23
23
  ) : RequestBody() {
24
24
  private var contentLength = 0L
25
25
 
26
+ companion object {
27
+ private const val MAX_BODY_PREVIEW_SIZE = 1024 * 1024 // 1MB
28
+ }
29
+
26
30
  override fun contentType(): MediaType? {
27
31
  return requestBody.contentType()
28
32
  }
@@ -78,4 +82,20 @@ internal class ProgressRequestBody(
78
82
  }
79
83
  )
80
84
  }
85
+
86
+ fun getBodyPreview(): String {
87
+ return try {
88
+ val buffer = okio.Buffer()
89
+ requestBody.writeTo(buffer)
90
+ val size = buffer.size()
91
+ if (size <= MAX_BODY_PREVIEW_SIZE) {
92
+ buffer.readUtf8()
93
+ } else {
94
+ buffer.readUtf8(MAX_BODY_PREVIEW_SIZE.toLong()) +
95
+ "\n... [truncated, showing $MAX_BODY_PREVIEW_SIZE of $size bytes]"
96
+ }
97
+ } catch (e: Exception) {
98
+ ""
99
+ }
100
+ }
81
101
  }
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 84,
17
17
  "patch" to 0,
18
- "prerelease" to "nightly-20251208-8347cc4b5"
18
+ "prerelease" to "nightly-20251211-80e384a80"
19
19
  )
20
20
  }
@@ -53,29 +53,19 @@ internal class ReactHostInspectorTarget(reactHostImpl: ReactHostImpl) :
53
53
 
54
54
  override fun addPerfMonitorListener(listener: PerfMonitorUpdateListener) {
55
55
  perfMonitorListeners.add(listener)
56
+ registerTracingStateListener { state, _ -> listener.onRecordingStateChanged(state) }
56
57
  }
57
58
 
58
59
  override fun pauseAndAnalyzeBackgroundTrace(): Boolean {
59
- val emitted = stopAndMaybeEmitBackgroundTrace()
60
- perfMonitorListeners.forEach { listener ->
61
- listener.onRecordingStateChanged(TracingState.DISABLED)
62
- }
63
-
64
- return emitted
60
+ return stopAndMaybeEmitBackgroundTrace()
65
61
  }
66
62
 
67
63
  override fun resumeBackgroundTrace() {
68
64
  startBackgroundTrace()
69
- perfMonitorListeners.forEach { listener ->
70
- listener.onRecordingStateChanged(TracingState.ENABLED_IN_BACKGROUND_MODE)
71
- }
72
65
  }
73
66
 
74
67
  override fun stopBackgroundTrace() {
75
68
  stopAndDiscardBackgroundTrace()
76
- perfMonitorListeners.forEach { listener ->
77
- listener.onRecordingStateChanged(TracingState.DISABLED)
78
- }
79
69
  }
80
70
 
81
71
  fun handleNativePerfIssueAdded(
@@ -17,35 +17,6 @@ using namespace facebook::react::jsinspector_modern;
17
17
 
18
18
  namespace facebook::react {
19
19
 
20
- namespace {
21
- jni::local_ref<JTracingState::javaobject> convertCPPTracingStateToJava(
22
- TracingState tracingState) {
23
- auto tracingStateClass = jni::findClassLocal(
24
- "com/facebook/react/devsupport/inspector/TracingState");
25
- auto valueOfMethod =
26
- tracingStateClass->getStaticMethod<JTracingState(jstring)>("valueOf");
27
-
28
- switch (tracingState) {
29
- case TracingState::Disabled:
30
- return valueOfMethod(
31
- tracingStateClass, jni::make_jstring("DISABLED").get());
32
-
33
- case TracingState::EnabledInBackgroundMode:
34
- return valueOfMethod(
35
- tracingStateClass,
36
- jni::make_jstring("ENABLED_IN_BACKGROUND_MODE").get());
37
-
38
- case TracingState::EnabledInCDPMode:
39
- return valueOfMethod(
40
- tracingStateClass, jni::make_jstring("ENABLED_IN_CDP_MODE").get());
41
-
42
- default:
43
- jni::throwNewJavaException(
44
- "java/lang/IllegalStateException", "Unexpected new TracingState.");
45
- }
46
- }
47
- } // namespace
48
-
49
20
  JReactHostInspectorTarget::JReactHostInspectorTarget(
50
21
  alias_ref<JReactHostInspectorTarget::javaobject> jobj,
51
22
  alias_ref<JReactHostImpl> reactHostImpl,
@@ -266,17 +237,8 @@ JReactHostInspectorTarget::getTracingState() {
266
237
  jlong JReactHostInspectorTarget::registerTracingStateListener(
267
238
  jni::alias_ref<JTracingStateListener::javaobject> listener) {
268
239
  auto cppListener = [globalRef = make_global(listener)](
269
- TracingState state, bool screenshotsEnabled) {
270
- static auto method =
271
- globalRef->getClass()
272
- ->getMethod<void(
273
- jni::local_ref<JTracingState::javaobject>, jboolean)>(
274
- "onStateChanged");
275
-
276
- method(
277
- globalRef,
278
- convertCPPTracingStateToJava(state),
279
- static_cast<jboolean>(screenshotsEnabled));
240
+ TracingState tracingState, bool screenshotsEnabled) {
241
+ globalRef->onStateChanged(tracingState, screenshotsEnabled);
280
242
  };
281
243
 
282
244
  return static_cast<jlong>(
@@ -20,16 +20,53 @@
20
20
 
21
21
  namespace facebook::react {
22
22
 
23
- struct JTaskInterface : public jni::JavaClass<JTaskInterface> {
24
- static constexpr auto kJavaDescriptor = "Lcom/facebook/react/interfaces/TaskInterface;";
25
- };
26
-
27
23
  struct JTracingState : public jni::JavaClass<JTracingState> {
28
24
  static constexpr auto kJavaDescriptor = "Lcom/facebook/react/devsupport/inspector/TracingState;";
29
25
  };
30
26
 
27
+ namespace {
28
+
29
+ enum class TracingState {
30
+ Disabled,
31
+ EnabledInBackgroundMode,
32
+ EnabledInCDPMode,
33
+ };
34
+
35
+ jni::local_ref<JTracingState::javaobject> convertCPPTracingStateToJava(TracingState tracingState)
36
+ {
37
+ auto tracingStateClass = jni::findClassLocal("com/facebook/react/devsupport/inspector/TracingState");
38
+ auto valueOfMethod = tracingStateClass->getStaticMethod<JTracingState(jstring)>("valueOf");
39
+
40
+ switch (tracingState) {
41
+ case TracingState::Disabled:
42
+ return valueOfMethod(tracingStateClass, jni::make_jstring("DISABLED").get());
43
+
44
+ case TracingState::EnabledInBackgroundMode:
45
+ return valueOfMethod(tracingStateClass, jni::make_jstring("ENABLED_IN_BACKGROUND_MODE").get());
46
+
47
+ case TracingState::EnabledInCDPMode:
48
+ return valueOfMethod(tracingStateClass, jni::make_jstring("ENABLED_IN_CDP_MODE").get());
49
+
50
+ default:
51
+ jni::throwNewJavaException("java/lang/IllegalStateException", "Unexpected new TracingState.");
52
+ }
53
+ }
54
+
55
+ } // namespace
56
+
57
+ struct JTaskInterface : public jni::JavaClass<JTaskInterface> {
58
+ static constexpr auto kJavaDescriptor = "Lcom/facebook/react/interfaces/TaskInterface;";
59
+ };
60
+
31
61
  struct JTracingStateListener : public jni::JavaClass<JTracingStateListener> {
32
62
  static constexpr auto kJavaDescriptor = "Lcom/facebook/react/devsupport/inspector/TracingStateListener;";
63
+
64
+ void onStateChanged(TracingState tracingState, bool screenshotsEnabled) const
65
+ {
66
+ static auto method =
67
+ javaClassStatic()->getMethod<void(jni::local_ref<JTracingState::javaobject>, jboolean)>("onStateChanged");
68
+ return method(self(), convertCPPTracingStateToJava(tracingState), static_cast<jboolean>(screenshotsEnabled));
69
+ }
33
70
  };
34
71
 
35
72
  struct JFrameTimingSequence : public jni::JavaClass<JFrameTimingSequence> {
@@ -112,12 +149,6 @@ struct JReactHostImpl : public jni::JavaClass<JReactHostImpl> {
112
149
  }
113
150
  };
114
151
 
115
- enum class TracingState {
116
- Disabled,
117
- EnabledInBackgroundMode,
118
- EnabledInCDPMode,
119
- };
120
-
121
152
  /**
122
153
  * A callback that will be invoked when tracing state has changed.
123
154
  */
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 84;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "nightly-20251208-8347cc4b5";
25
+ std::string_view Prerelease = "nightly-20251211-80e384a80";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<c5b1dc86ec11d40e5d26ae8a6f0ee6ff>>
7
+ * @generated SignedSource<<6a047fa1d33ea17ebd7ba8d0680ee1cc>>
8
8
  */
9
9
 
10
10
  /**
@@ -35,6 +35,10 @@ class ReactNativeFeatureFlagsOverridesOSSExperimental : public ReactNativeFeatur
35
35
  return true;
36
36
  }
37
37
 
38
+ bool fixTextClippingAndroid15useBoundsForWidth() override {
39
+ return true;
40
+ }
41
+
38
42
  bool preventShadowTreeCommitExhaustion() override {
39
43
  return true;
40
44
  }
@@ -653,20 +653,22 @@ void NativeAnimatedNodesManager::updateNodes(
653
653
  // in Animated, value nodes like RGBA are parents and Color node is child
654
654
  // (the opposite of tree structure)
655
655
  for (const auto childTag : nextNode.node->getChildren()) {
656
- auto child = getAnimatedNode<AnimatedNode>(childTag);
657
- child->activeIncomingNodes++;
658
- if (child->bfsColor != animatedGraphBFSColor_) {
659
- child->bfsColor = animatedGraphBFSColor_;
656
+ if (auto child = getAnimatedNode<AnimatedNode>(childTag)) {
657
+ child->activeIncomingNodes++;
658
+ if (child->bfsColor != animatedGraphBFSColor_) {
659
+ child->bfsColor = animatedGraphBFSColor_;
660
660
  #ifdef REACT_NATIVE_DEBUG
661
- activeNodesCount++;
661
+ activeNodesCount++;
662
662
  #endif
663
- const auto connectedToFinishedAnimation =
664
- is_node_connected_to_finished_animation(
665
- child, childTag, nextNode.connectedToFinishedAnimation);
666
- nodesQueue.emplace_back(
667
- NodesQueueItem{
668
- .node = child,
669
- .connectedToFinishedAnimation = connectedToFinishedAnimation});
663
+ const auto connectedToFinishedAnimation =
664
+ is_node_connected_to_finished_animation(
665
+ child, childTag, nextNode.connectedToFinishedAnimation);
666
+ nodesQueue.emplace_back(
667
+ NodesQueueItem{
668
+ .node = child,
669
+ .connectedToFinishedAnimation =
670
+ connectedToFinishedAnimation});
671
+ }
670
672
  }
671
673
  }
672
674
  }
@@ -721,27 +723,29 @@ void NativeAnimatedNodesManager::updateNodes(
721
723
  }
722
724
 
723
725
  for (auto childTag : nextNode.node->getChildren()) {
724
- auto child = getAnimatedNode<AnimatedNode>(childTag);
725
- child->activeIncomingNodes--;
726
- if (child->activeIncomingNodes == 0 &&
727
- child->bfsColor != animatedGraphBFSColor_) {
728
- child->bfsColor = animatedGraphBFSColor_;
726
+ if (auto child = getAnimatedNode<AnimatedNode>(childTag)) {
727
+ child->activeIncomingNodes--;
728
+ if (child->activeIncomingNodes == 0 &&
729
+ child->bfsColor != animatedGraphBFSColor_) {
730
+ child->bfsColor = animatedGraphBFSColor_;
729
731
  #ifdef REACT_NATIVE_DEBUG
730
- updatedNodesCount++;
732
+ updatedNodesCount++;
731
733
  #endif
732
- const auto connectedToFinishedAnimation =
733
- is_node_connected_to_finished_animation(
734
- child, childTag, nextNode.connectedToFinishedAnimation);
735
- nodesQueue.emplace_back(
736
- NodesQueueItem{
737
- .node = child,
738
- .connectedToFinishedAnimation = connectedToFinishedAnimation});
739
- }
734
+ const auto connectedToFinishedAnimation =
735
+ is_node_connected_to_finished_animation(
736
+ child, childTag, nextNode.connectedToFinishedAnimation);
737
+ nodesQueue.emplace_back(
738
+ NodesQueueItem{
739
+ .node = child,
740
+ .connectedToFinishedAnimation =
741
+ connectedToFinishedAnimation});
742
+ }
740
743
  #ifdef REACT_NATIVE_DEBUG
741
- else if (child->bfsColor == animatedGraphBFSColor_) {
742
- cyclesDetected++;
743
- }
744
+ else if (child->bfsColor == animatedGraphBFSColor_) {
745
+ cyclesDetected++;
746
+ }
744
747
  #endif
748
+ }
745
749
  }
746
750
  }
747
751
 
@@ -78,9 +78,36 @@ void packBackgroundColor(
78
78
  folly::dynamic& dyn,
79
79
  const AnimatedPropBase& animatedProp) {
80
80
  const auto& backgroundColor = get<SharedColor>(animatedProp);
81
- if (backgroundColor) {
82
- dyn.insert("backgroundColor", static_cast<int32_t>(*backgroundColor));
83
- }
81
+ dyn.insert("backgroundColor", static_cast<int32_t>(*backgroundColor));
82
+ }
83
+
84
+ void packShadowColor(
85
+ folly::dynamic& dyn,
86
+ const AnimatedPropBase& animatedProp) {
87
+ const auto& shadowColor = get<SharedColor>(animatedProp);
88
+ dyn.insert("shadowColor", static_cast<int32_t>(*shadowColor));
89
+ }
90
+
91
+ void packShadowOffset(
92
+ folly::dynamic& dyn,
93
+ const AnimatedPropBase& animatedProp) {
94
+ const auto& shadowOffset = get<Size>(animatedProp);
95
+ dyn.insert(
96
+ "shadowOffset",
97
+ folly::dynamic::object("width", shadowOffset.width)(
98
+ "height", shadowOffset.height));
99
+ }
100
+
101
+ void packShadowOpacity(
102
+ folly::dynamic& dyn,
103
+ const AnimatedPropBase& animatedProp) {
104
+ dyn.insert("shadowOpacity", get<Float>(animatedProp));
105
+ }
106
+
107
+ void packShadowRadius(
108
+ folly::dynamic& dyn,
109
+ const AnimatedPropBase& animatedProp) {
110
+ dyn.insert("shadowRadius", get<Float>(animatedProp));
84
111
  }
85
112
 
86
113
  void packAnimatedProp(
@@ -103,6 +130,22 @@ void packAnimatedProp(
103
130
  packBorderRadii(dyn, *animatedProp);
104
131
  break;
105
132
 
133
+ case SHADOW_COLOR:
134
+ packShadowColor(dyn, *animatedProp);
135
+ break;
136
+
137
+ case SHADOW_OFFSET:
138
+ packShadowOffset(dyn, *animatedProp);
139
+ break;
140
+
141
+ case SHADOW_OPACITY:
142
+ packShadowOpacity(dyn, *animatedProp);
143
+ break;
144
+
145
+ case SHADOW_RADIUS:
146
+ packShadowRadius(dyn, *animatedProp);
147
+ break;
148
+
106
149
  case WIDTH:
107
150
  case HEIGHT:
108
151
  case FLEX:
@@ -12,7 +12,19 @@
12
12
 
13
13
  namespace facebook::react {
14
14
 
15
- enum PropName { OPACITY, WIDTH, HEIGHT, BORDER_RADII, FLEX, TRANSFORM, BACKGROUND_COLOR };
15
+ enum PropName {
16
+ OPACITY,
17
+ WIDTH,
18
+ HEIGHT,
19
+ BORDER_RADII,
20
+ FLEX,
21
+ TRANSFORM,
22
+ BACKGROUND_COLOR,
23
+ SHADOW_COLOR,
24
+ SHADOW_OFFSET,
25
+ SHADOW_OPACITY,
26
+ SHADOW_RADIUS
27
+ };
16
28
 
17
29
  struct AnimatedPropBase {
18
30
  PropName propName;
@@ -74,6 +86,25 @@ inline void cloneProp(BaseViewProps &viewProps, const AnimatedPropBase &animated
74
86
  case BACKGROUND_COLOR:
75
87
  viewProps.backgroundColor = get<SharedColor>(animatedProp);
76
88
  break;
89
+
90
+ case SHADOW_COLOR:
91
+ viewProps.shadowColor = get<SharedColor>(animatedProp);
92
+ break;
93
+
94
+ case SHADOW_OFFSET:
95
+ viewProps.shadowOffset = get<Size>(animatedProp);
96
+ break;
97
+
98
+ case SHADOW_OPACITY:
99
+ viewProps.shadowOpacity = get<Float>(animatedProp);
100
+ break;
101
+
102
+ case SHADOW_RADIUS:
103
+ viewProps.shadowRadius = get<Float>(animatedProp);
104
+ break;
105
+
106
+ default:
107
+ break;
77
108
  }
78
109
  }
79
110
  } // namespace facebook::react
@@ -39,6 +39,22 @@ struct AnimatedPropsBuilder {
39
39
  {
40
40
  props.push_back(std::make_unique<AnimatedProp<SharedColor>>(BACKGROUND_COLOR, value));
41
41
  }
42
+ void setShadowColor(SharedColor value)
43
+ {
44
+ props.push_back(std::make_unique<AnimatedProp<SharedColor>>(SHADOW_COLOR, value));
45
+ }
46
+ void setShadowOpacity(Float value)
47
+ {
48
+ props.push_back(std::make_unique<AnimatedProp<Float>>(SHADOW_OPACITY, value));
49
+ }
50
+ void setShadowRadius(Float value)
51
+ {
52
+ props.push_back(std::make_unique<AnimatedProp<Float>>(SHADOW_RADIUS, value));
53
+ }
54
+ void setShadowOffset(Size value)
55
+ {
56
+ props.push_back(std::make_unique<AnimatedProp<Size>>(SHADOW_OFFSET, value));
57
+ }
42
58
  void storeDynamic(folly::dynamic &d)
43
59
  {
44
60
  rawProps = std::make_unique<RawProps>(std::move(d));
package/index.js CHANGED
@@ -341,6 +341,9 @@ module.exports = {
341
341
  get useColorScheme() {
342
342
  return require('./Libraries/Utilities/useColorScheme').default;
343
343
  },
344
+ get usePressability() {
345
+ return require('./Libraries/Pressability/usePressability').default;
346
+ },
344
347
  get useWindowDimensions() {
345
348
  return require('./Libraries/Utilities/useWindowDimensions').default;
346
349
  },
package/index.js.flow CHANGED
@@ -408,6 +408,11 @@ export * as TurboModuleRegistry from './Libraries/TurboModule/TurboModuleRegistr
408
408
  export {default as UIManager} from './Libraries/ReactNative/UIManager';
409
409
  export {unstable_batchedUpdates} from './Libraries/ReactNative/RendererProxy';
410
410
  export {default as useAnimatedValue} from './Libraries/Animated/useAnimatedValue';
411
+ export type {
412
+ PressabilityConfig,
413
+ EventHandlers as PressabilityEventHandlers,
414
+ } from './Libraries/Pressability/Pressability';
415
+ export {default as usePressability} from './Libraries/Pressability/usePressability';
411
416
  export {default as useColorScheme} from './Libraries/Utilities/useColorScheme';
412
417
  export {default as useWindowDimensions} from './Libraries/Utilities/useWindowDimensions';
413
418
  export {default as UTFSequence} from './Libraries/UTFSequence';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.84.0-nightly-20251208-8347cc4b5",
3
+ "version": "0.84.0-nightly-20251211-80e384a80",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -160,13 +160,13 @@
160
160
  },
161
161
  "dependencies": {
162
162
  "@jest/create-cache-key-function": "^29.7.0",
163
- "@react-native/assets-registry": "0.84.0-nightly-20251208-8347cc4b5",
164
- "@react-native/codegen": "0.84.0-nightly-20251208-8347cc4b5",
165
- "@react-native/community-cli-plugin": "0.84.0-nightly-20251208-8347cc4b5",
166
- "@react-native/gradle-plugin": "0.84.0-nightly-20251208-8347cc4b5",
167
- "@react-native/js-polyfills": "0.84.0-nightly-20251208-8347cc4b5",
168
- "@react-native/normalize-colors": "0.84.0-nightly-20251208-8347cc4b5",
169
- "@react-native/virtualized-lists": "0.84.0-nightly-20251208-8347cc4b5",
163
+ "@react-native/assets-registry": "0.84.0-nightly-20251211-80e384a80",
164
+ "@react-native/codegen": "0.84.0-nightly-20251211-80e384a80",
165
+ "@react-native/community-cli-plugin": "0.84.0-nightly-20251211-80e384a80",
166
+ "@react-native/gradle-plugin": "0.84.0-nightly-20251211-80e384a80",
167
+ "@react-native/js-polyfills": "0.84.0-nightly-20251211-80e384a80",
168
+ "@react-native/normalize-colors": "0.84.0-nightly-20251211-80e384a80",
169
+ "@react-native/virtualized-lists": "0.84.0-nightly-20251211-80e384a80",
170
170
  "abort-controller": "^3.0.0",
171
171
  "anser": "^1.4.9",
172
172
  "ansi-regex": "^5.0.0",
@@ -175,7 +175,7 @@
175
175
  "base64-js": "^1.5.1",
176
176
  "commander": "^12.0.0",
177
177
  "flow-enums-runtime": "^0.0.6",
178
- "hermes-compiler": "0.14.0-commitly-202512051838-1e8c447f2",
178
+ "hermes-compiler": "0.14.0-commitly-202512102158-39fca9fda",
179
179
  "invariant": "^2.2.4",
180
180
  "jest-environment-node": "^29.7.0",
181
181
  "memoize-one": "^5.0.0",
@@ -8,6 +8,8 @@ require 'json'
8
8
  require_relative "./utils.rb"
9
9
  require_relative "./helpers.rb"
10
10
  require_relative "./jsengine.rb"
11
+ require_relative "./rndependencies.rb"
12
+ require_relative "./rncore.rb"
11
13
 
12
14
 
13
15
  class NewArchitectureHelper
@@ -194,13 +194,13 @@ class ReactNativePodsUtils
194
194
  installer.target_installation_results.pod_target_installation_results.each do |pod_name, target_installation_result|
195
195
  if pod_name.to_s == target_pod_name
196
196
  target_installation_result.native_target.build_configurations.each do |config|
197
- if configuration_type == nil || (configuration_type != nil && config.type == configuration_type)
198
- config.build_settings[settings_name] ||= '$(inherited) '
199
- config.build_settings[settings_name] << settings_value
200
- end
197
+ if configuration_type == nil || (configuration_type != nil && config.type == configuration_type)
198
+ config.build_settings[settings_name] ||= '$(inherited) '
199
+ config.build_settings[settings_name] << settings_value
201
200
  end
202
201
  end
203
202
  end
203
+ end
204
204
  end
205
205
 
206
206
  def self.fix_library_search_path(config)
@@ -1,2 +1,2 @@
1
- HERMES_VERSION_NAME=0.14.0-commitly-202512051838-1e8c447f2
1
+ HERMES_VERSION_NAME=0.14.0-commitly-202512102158-39fca9fda
2
2
  HERMES_V1_VERSION_NAME=250829098.0.4
@@ -461,8 +461,18 @@ declare global {
461
461
  | 'text';
462
462
 
463
463
  interface URL {
464
- href: string;
464
+ readonly hash: string;
465
+ readonly host: string;
466
+ readonly hostname: string;
467
+ readonly href: string;
468
+ readonly origin: string;
469
+ readonly password: string;
470
+ readonly pathname: string;
471
+ readonly port: string;
472
+ readonly protocol: string;
473
+ search: string;
465
474
  readonly searchParams: URLSearchParams;
475
+ readonly username: string;
466
476
 
467
477
  toJSON(): string;
468
478
  toString(): string;
@@ -479,8 +489,27 @@ declare global {
479
489
  * Based on definitions of lib.dom and lib.dom.iterable
480
490
  */
481
491
  interface URLSearchParams {
492
+ /**
493
+ * Returns the number of search parameter entries.
494
+ */
495
+ readonly size: number;
496
+
482
497
  append(key: string, value: string): void;
498
+ delete(name: string): void;
499
+ get(name: string): string | null;
500
+ getAll(name: string): string[];
501
+ has(name: string): boolean;
502
+ set(name: string, value: string): void;
503
+ sort(): void;
483
504
  toString(): string;
505
+ forEach(
506
+ callbackfn: (value: string, key: string, parent: URLSearchParams) => void,
507
+ thisArg?: any,
508
+ ): void;
509
+
510
+ keys(): IterableIterator<string>;
511
+ values(): IterableIterator<string>;
512
+ entries(): IterableIterator<[string, string]>;
484
513
 
485
514
  [Symbol.iterator](): IterableIterator<[string, string]>;
486
515
  }
@@ -50,6 +50,7 @@ Pod::Spec.new do |spec|
50
50
  'folly/lang/Exception.cpp',
51
51
  'folly/memory/ReentrantAllocator.cpp',
52
52
  'folly/memory/detail/MallocImpl.cpp',
53
+ 'folly/memory/SanitizeLeak.cpp',
53
54
  'folly/net/NetOps.cpp',
54
55
  'folly/portability/SysUio.cpp',
55
56
  'folly/synchronization/SanitizeThread.cpp',
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @generated SignedSource<<679a6d7be762fc192387af04838933c3>>
8
+ *
9
+ * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
+ * Original file: packages/react-native/Libraries/Pressability/usePressability.js
11
+ */
12
+
13
+ import { type EventHandlers, type PressabilityConfig } from "./Pressability";
14
+ /**
15
+ * Creates a persistent instance of `Pressability` that automatically configures
16
+ * itself and resets. Accepts null `config` to support lazy initialization. Once
17
+ * initialized, will not un-initialize until the component has been unmounted.
18
+ *
19
+ * In order to use `usePressability`, do the following:
20
+ *
21
+ * const config = useMemo(...);
22
+ * const eventHandlers = usePressability(config);
23
+ * const pressableView = <View {...eventHandlers} />;
24
+ *
25
+ */
26
+ declare function usePressability(config: null | undefined | PressabilityConfig): null | EventHandlers;
27
+ export default usePressability;
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<51dcf454cb297798e6069477f4640162>>
7
+ * @generated SignedSource<<de754bf2c017a2c8acd393684d6146fc>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/index.js.flow
@@ -147,6 +147,8 @@ export * as TurboModuleRegistry from "./Libraries/TurboModule/TurboModuleRegistr
147
147
  export { default as UIManager } from "./Libraries/ReactNative/UIManager";
148
148
  export { unstable_batchedUpdates } from "./Libraries/ReactNative/RendererProxy";
149
149
  export { default as useAnimatedValue } from "./Libraries/Animated/useAnimatedValue";
150
+ export type { PressabilityConfig, EventHandlers as PressabilityEventHandlers } from "./Libraries/Pressability/Pressability";
151
+ export { default as usePressability } from "./Libraries/Pressability/usePressability";
150
152
  export { default as useColorScheme } from "./Libraries/Utilities/useColorScheme";
151
153
  export { default as useWindowDimensions } from "./Libraries/Utilities/useWindowDimensions";
152
154
  export { default as UTFSequence } from "./Libraries/UTFSequence";