react-native 0.79.1 → 0.79.3

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 (49) hide show
  1. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +8 -0
  2. package/Libraries/Blob/URL.js +13 -1
  3. package/Libraries/Core/ReactNativeVersion.js +1 -1
  4. package/React/Base/RCTVersion.m +1 -1
  5. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
  6. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
  7. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +18 -4
  8. package/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm +1 -1
  9. package/ReactAndroid/gradle.properties +1 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +4 -0
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +2 -2
  19. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +0 -3
  20. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
  21. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  22. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  23. package/ReactCommon/jsc/React-jsc.podspec +1 -1
  24. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  25. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  26. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +45 -9
  27. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  28. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  31. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  32. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  33. package/ReactCommon/react/renderer/core/ShadowNode.cpp +14 -4
  34. package/ReactCommon/react/renderer/core/ShadowNode.h +6 -0
  35. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +6 -0
  36. package/ReactCommon/react/runtime/TimerManager.cpp +6 -4
  37. package/ReactCommon/react/runtime/TimerManager.h +3 -1
  38. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +0 -1
  39. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +9 -5
  40. package/package.json +8 -8
  41. package/scripts/codegen/generate-artifacts-executor.js +53 -18
  42. package/sdks/.hermesversion +1 -1
  43. package/sdks/hermesc/osx-bin/hermes +0 -0
  44. package/sdks/hermesc/osx-bin/hermesc +0 -0
  45. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  46. package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
  47. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
  48. package/types/index.d.ts +1 -1
  49. package/types/tsconfig.test.json +16 -0
@@ -325,22 +325,13 @@ function findExternalLibraries(pkgJson, projectRoot) {
325
325
  });
326
326
  }
327
327
 
328
- function findLibrariesFromReactNativeConfig(projectRoot) {
329
- const rnConfigFileName = 'react-native.config.js';
330
-
328
+ function findLibrariesFromReactNativeConfig(projectRoot, rnConfig) {
331
329
  codegenLog(
332
- `Searching for codegen-enabled libraries in ${rnConfigFileName}`,
330
+ `Searching for codegen-enabled libraries in react-native.config.js`,
333
331
  true,
334
332
  );
335
333
 
336
- const rnConfigFilePath = path.resolve(projectRoot, rnConfigFileName);
337
-
338
- if (!fs.existsSync(rnConfigFilePath)) {
339
- return [];
340
- }
341
- const rnConfig = require(rnConfigFilePath);
342
-
343
- if (rnConfig.dependencies == null) {
334
+ if (!rnConfig.dependencies) {
344
335
  return [];
345
336
  }
346
337
  return Object.keys(rnConfig.dependencies).flatMap(name => {
@@ -364,6 +355,19 @@ function findLibrariesFromReactNativeConfig(projectRoot) {
364
355
  });
365
356
  }
366
357
 
358
+ /**
359
+ * Finds all disabled libraries by platform based the react native config.
360
+ *
361
+ * This is needed when selectively disabling libraries in react-native.config.js since codegen should exclude those libraries as well.
362
+ */
363
+ function findDisabledLibrariesByPlatform(reactNativeConfig, platform) {
364
+ const dependencies = reactNativeConfig.dependencies ?? {};
365
+
366
+ return Object.keys(dependencies).filter(
367
+ dependency => dependencies[dependency].platforms?.[platform] === null,
368
+ );
369
+ }
370
+
367
371
  function findProjectRootLibraries(pkgJson, projectRoot) {
368
372
  codegenLog('Searching for codegen-enabled libraries in the app.', true);
369
373
 
@@ -592,7 +596,7 @@ function mustGenerateNativeCode(includeLibraryPath, schemaInfo) {
592
596
  );
593
597
  }
594
598
 
595
- function findCodegenEnabledLibraries(pkgJson, projectRoot) {
599
+ function findCodegenEnabledLibraries(pkgJson, projectRoot, reactNativeConfig) {
596
600
  const projectLibraries = findProjectRootLibraries(pkgJson, projectRoot);
597
601
  if (pkgJsonIncludesGeneratedCode(pkgJson)) {
598
602
  return projectLibraries;
@@ -600,11 +604,21 @@ function findCodegenEnabledLibraries(pkgJson, projectRoot) {
600
604
  return [
601
605
  ...projectLibraries,
602
606
  ...findExternalLibraries(pkgJson, projectRoot),
603
- ...findLibrariesFromReactNativeConfig(projectRoot),
607
+ ...findLibrariesFromReactNativeConfig(projectRoot, reactNativeConfig),
604
608
  ];
605
609
  }
606
610
  }
607
611
 
612
+ function readReactNativeConfig(projectRoot) {
613
+ const rnConfigFilePath = path.resolve(projectRoot, 'react-native.config.js');
614
+
615
+ if (!fs.existsSync(rnConfigFilePath)) {
616
+ return {};
617
+ }
618
+
619
+ return require(rnConfigFilePath);
620
+ }
621
+
608
622
  function generateCustomURLHandlers(libraries, outputDir) {
609
623
  const customImageURLLoaderClasses = libraries
610
624
  .flatMap(
@@ -833,8 +847,11 @@ function findFilesWithExtension(filePath, extension) {
833
847
  return null;
834
848
  }
835
849
 
836
- // Skip hidden folders, that starts with `.`
837
- if (absolutePath.includes(`${path.sep}.`)) {
850
+ // Skip hidden folders, that starts with `.` but allow `.pnpm`
851
+ if (
852
+ absolutePath.includes(`${path.sep}.`) &&
853
+ !absolutePath.includes(`${path.sep}.pnpm`)
854
+ ) {
838
855
  return null;
839
856
  }
840
857
 
@@ -1053,9 +1070,14 @@ function execute(projectRoot, targetPlatform, baseOutputPath, source) {
1053
1070
 
1054
1071
  buildCodegenIfNeeded();
1055
1072
 
1056
- const libraries = findCodegenEnabledLibraries(pkgJson, projectRoot);
1073
+ const reactNativeConfig = readReactNativeConfig(projectRoot);
1074
+ const codegenEnabledLibraries = findCodegenEnabledLibraries(
1075
+ pkgJson,
1076
+ projectRoot,
1077
+ reactNativeConfig,
1078
+ );
1057
1079
 
1058
- if (libraries.length === 0) {
1080
+ if (codegenEnabledLibraries.length === 0) {
1059
1081
  codegenLog('No codegen-enabled libraries found.', true);
1060
1082
  return;
1061
1083
  }
@@ -1064,6 +1086,19 @@ function execute(projectRoot, targetPlatform, baseOutputPath, source) {
1064
1086
  targetPlatform === 'all' ? supportedPlatforms : [targetPlatform];
1065
1087
 
1066
1088
  for (const platform of platforms) {
1089
+ const disabledLibraries = findDisabledLibrariesByPlatform(
1090
+ reactNativeConfig,
1091
+ platform,
1092
+ );
1093
+
1094
+ const libraries = codegenEnabledLibraries.filter(
1095
+ ({name}) => !disabledLibraries.includes(name),
1096
+ );
1097
+
1098
+ if (!libraries.length) {
1099
+ continue;
1100
+ }
1101
+
1067
1102
  const outputPath = computeOutputPath(
1068
1103
  projectRoot,
1069
1104
  baseOutputPath,
@@ -1 +1 @@
1
- hermes-2025-03-03-RNv0.79.0-bc17d964d03743424823d7dd1a9f37633459c5c5
1
+ hermes-2025-06-04-RNv0.79.3-7f9a871eefeb2c3852365ee80f0b6733ec12ac3b
Binary file
Binary file
Binary file
@@ -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<<3e68d888bf4d8ac71b63571a639d265b>>
7
+ * @generated SignedSource<<5b1d3ba6712de7a927eeeb8602ee2a8f>>
8
8
  * @flow strict
9
9
  */
10
10
 
@@ -84,12 +84,14 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
84
84
  removeTurboModuleManagerDelegateMutex: Getter<boolean>,
85
85
  throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS: Getter<boolean>,
86
86
  traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean>,
87
+ updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean>,
87
88
  useAlwaysAvailableJSErrorHandling: Getter<boolean>,
88
89
  useEditTextStockAndroidFocusBehavior: Getter<boolean>,
89
90
  useFabricInterop: Getter<boolean>,
90
91
  useNativeViewConfigsInBridgelessMode: Getter<boolean>,
91
92
  useOptimizedEventBatchingOnAndroid: Getter<boolean>,
92
93
  useRawPropsJsiValue: Getter<boolean>,
94
+ useShadowNodeStateOnClone: Getter<boolean>,
93
95
  useTurboModuleInterop: Getter<boolean>,
94
96
  useTurboModules: Getter<boolean>,
95
97
  }>;
@@ -313,6 +315,10 @@ export const throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIO
313
315
  * Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.
314
316
  */
315
317
  export const traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean> = createNativeFlagGetter('traceTurboModulePromiseRejectionsOnAndroid', false);
318
+ /**
319
+ * When enabled, runtime shadow node references will be updated during the commit. This allows running RSNRU from any thread without corrupting the renderer state.
320
+ */
321
+ export const updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean> = createNativeFlagGetter('updateRuntimeShadowNodeReferencesOnCommit', false);
316
322
  /**
317
323
  * In Bridgeless mode, use the always available javascript error reporting pipeline.
318
324
  */
@@ -337,6 +343,10 @@ export const useOptimizedEventBatchingOnAndroid: Getter<boolean> = createNativeF
337
343
  * Instead of using folly::dynamic as internal representation in RawProps and RawValue, use jsi::Value
338
344
  */
339
345
  export const useRawPropsJsiValue: Getter<boolean> = createNativeFlagGetter('useRawPropsJsiValue', false);
346
+ /**
347
+ * Use the state stored on the source shadow node when cloning it instead of reading in the most recent state on the shadow node family.
348
+ */
349
+ export const useShadowNodeStateOnClone: Getter<boolean> = createNativeFlagGetter('useShadowNodeStateOnClone', false);
340
350
  /**
341
351
  * In Bridgeless mode, should legacy NativeModules use the TurboModule system?
342
352
  */
@@ -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<<0d611c17d522627c59a68d083eb6b6dc>>
7
+ * @generated SignedSource<<f8da5261357616749d6319190ed0139d>>
8
8
  * @flow strict
9
9
  */
10
10
 
@@ -59,12 +59,14 @@ export interface Spec extends TurboModule {
59
59
  +removeTurboModuleManagerDelegateMutex?: () => boolean;
60
60
  +throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS?: () => boolean;
61
61
  +traceTurboModulePromiseRejectionsOnAndroid?: () => boolean;
62
+ +updateRuntimeShadowNodeReferencesOnCommit?: () => boolean;
62
63
  +useAlwaysAvailableJSErrorHandling?: () => boolean;
63
64
  +useEditTextStockAndroidFocusBehavior?: () => boolean;
64
65
  +useFabricInterop?: () => boolean;
65
66
  +useNativeViewConfigsInBridgelessMode?: () => boolean;
66
67
  +useOptimizedEventBatchingOnAndroid?: () => boolean;
67
68
  +useRawPropsJsiValue?: () => boolean;
69
+ +useShadowNodeStateOnClone?: () => boolean;
68
70
  +useTurboModuleInterop?: () => boolean;
69
71
  +useTurboModules?: () => boolean;
70
72
  }
package/types/index.d.ts CHANGED
@@ -68,7 +68,7 @@
68
68
  /// <reference path="modules/BatchedBridge.d.ts" />
69
69
  /// <reference path="modules/Codegen.d.ts" />
70
70
  /// <reference path="modules/Devtools.d.ts" />
71
- /// <reference types="../src/types/globals.d.ts" />
71
+ /// <reference path="../src/types/globals.d.ts" />
72
72
  /// <reference path="modules/LaunchScreen.d.ts" />
73
73
 
74
74
  export * from '../Libraries/ActionSheetIOS/ActionSheetIOS';
@@ -0,0 +1,16 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "commonjs",
4
+ "lib": ["es6"],
5
+ "noImplicitAny": true,
6
+ "noImplicitThis": true,
7
+ "strictFunctionTypes": true,
8
+ "strictNullChecks": true,
9
+ "types": [],
10
+ "jsx": "react",
11
+ "noEmit": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "paths": {"react-native": ["."]}
14
+ },
15
+ "include": ["../**/*.d.ts", "__typetests__/**/*"]
16
+ }