react-native 0.84.0-nightly-20251210-3e9083b42 → 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.
@@ -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-20251210-3e9083b42';
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-20251210-3e9083b42",
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
@@ -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-20251210-3e9083b42
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
  }
@@ -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"
@@ -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-20251210-3e9083b42"
18
+ "prerelease" to "nightly-20251211-80e384a80"
19
19
  )
20
20
  }
@@ -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-20251210-3e9083b42";
25
+ std::string_view Prerelease = "nightly-20251211-80e384a80";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.84.0-nightly-20251210-3e9083b42",
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-20251210-3e9083b42",
164
- "@react-native/codegen": "0.84.0-nightly-20251210-3e9083b42",
165
- "@react-native/community-cli-plugin": "0.84.0-nightly-20251210-3e9083b42",
166
- "@react-native/gradle-plugin": "0.84.0-nightly-20251210-3e9083b42",
167
- "@react-native/js-polyfills": "0.84.0-nightly-20251210-3e9083b42",
168
- "@react-native/normalize-colors": "0.84.0-nightly-20251210-3e9083b42",
169
- "@react-native/virtualized-lists": "0.84.0-nightly-20251210-3e9083b42",
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
@@ -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',