Commit Graph
34076 Commits
Author SHA1 Message Date
CHEN Xian-an c24929c5f4 Not all the targets have a defined symbol_type (#45591)
Summary:
Errors occurred on running `pod install`:

```
[!] An error occurred while processing the post-install hook of the Podfile.

undefined method `symbol_type' for #<Xcodeproj::Project::Object::PBXAggregateTarget:0x000000010f6ea568>

[redact]/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:53:in `block in get_application_targets'
```

## Changelog:

[iOS] [Fixed] - Fix error on handling privacy manifest

Pull Request resolved: https://github.com/facebook/react-native/pull/45591

Reviewed By: cipolleschi

Differential Revision: D60107607

Pulled By: dmytrorykun

fbshipit-source-id: 316220fe54174b18c9b61775f807d5d05d9f0240
2024-07-23 03:21:28 -07:00
David Vacca 700b403e06 Migrate excludeYogaFromRawProps to ReactNativeFeatureFlags (#45586)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45586

Migrate excludeYogaFromRawProps to ReactNativeFeatureFlags

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D60022939

fbshipit-source-id: 150ecc98aa3323d5adea3a41a3d91d404c99e5a7
2024-07-22 14:20:40 -07:00
David Vacca 4d77c35584 Delete ReactFeatureFlags.rejectTurboModulePromiseOnNativeError (#45583)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45583

ReactFeatureFlags.rejectTurboModulePromiseOnNativeError is not used, I'm deleteing it

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D60022938

fbshipit-source-id: 80f2d551b4416fae81c9081d3ddbb896e5f5a560
2024-07-22 14:20:40 -07:00
David Vacca d4a74d8b83 Migrate enableFabricRendererExclusively to ReactNativeFeatureFlags (#45584)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45584

Migrate enableFabricRendererExclusively to ReactNativeFeatureFlags

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D60022933

fbshipit-source-id: 35b09673744bb5fb29b7d3b5ee4c7bb7d51a01b7
2024-07-22 14:20:40 -07:00
Nicola Corti 90e4397d99 Converted com.facebook.react.views.drawer to Kotlin (#45573)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45573

This makes this module now be fully in Kotlin instead of having mixed Java/Kotlin sources.

Changelog:
[Internal] [Changed] - Converted com.facebook.react.modules.dialog to Kotlin

Reviewed By: tdn120

Differential Revision: D60035771

fbshipit-source-id: b45fd099c0b353768ab6580eb6a4a3dccf68f07d
2024-07-22 13:40:07 -07:00
Nicola Corti 0529818d36 Fix several build warnings on RN-Tester (#45569)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45569

Same as title

Changelog:
[Internal] [Changed] - Fix several build warnings on RN-Tester

Reviewed By: realsoelynn

Differential Revision: D60036158

fbshipit-source-id: 549b84f52594e1a442058222a3a45118739a1eb3
2024-07-22 12:16:12 -07:00
Nicola Corti c1a8ae412b Properly annotate with @Deprecated methods that are just deprecated in JavaDoc (#45570)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45570

We do have several methods/classes that are `deprecated` in the JavaDoc but not
with an annotation. That's not correct as users will never get those deprecation otherwise
and we'll be forced to keep both implementation around for a longer time.

Changelog:
[Internal] [Changed] - Properly annotate with Deprecated methods that are just deprecated in JavaDoc

Reviewed By: javache

Differential Revision: D60036159

fbshipit-source-id: 466072d6a3fb4f1220e1dc3deaa51a46c714a388
2024-07-22 06:39:04 -07:00
Rubén Norte 43c32e1e25 Fix broken overlapping measures in Perfetto integration (#45567)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45567

Changelog: [internal]

(internal because our integration for Perfetto hasn't been released in OSS yet)

In our current React integration for Perfetto we're logging arbitrary time spans via `performance.measure` in specific tracks (that can be custom based on a naming scheme).

For a given track, Perfetto doesn't allow partially overlapping segments (as it's considered to always be a stack of time spans). When logging arbitrary time spans that partially overlap, Perfetto cuts the nested ones to make sure they fit into their suspected parent. This makes the logged data incorrect and makes it hard to understand the performance of an application using this data.

There's a fix for this problem: logging these arbitrary segments/time spans in separate tracks that only share the name. In this case, Perfetto groups the data in the UI but allows overlapping (as they're not really on the same track).

Reviewed By: sammy-SC

Differential Revision: D60010696

fbshipit-source-id: 378ea492c4fafbe55ef97fa91e4fa50bbc1893ae
2024-07-22 05:00:31 -07:00
Rubén Norte df9b2cef7e Prefix custom tracks for markers coming from JS with Web Performance (#45564)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45564

Changelog: [internal]

(this is internal because the integration hasn't been enabled in OSS yet)

In our current React integration for Perfetto we're currently creating multiple custom tracks that are spread throughout the process section and it can be hard to identify the source of the information.

This adds a "Web Performance: " prefix to all custom tracks coming from JS to achieve 2 purposes:
* Group them together (in terms of order in the process)
* Clarify the source of the data

Reviewed By: sammy-SC

Differential Revision: D60010695

fbshipit-source-id: 081f5b6417d676c61005114337530a089142e7c6
2024-07-22 05:00:31 -07:00
Rubén Norte 2551aee4b0 Expose PerformanceObserver related classes in the global scope (#45539)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45539

Changelog: [internal]

This exposes several classes (interfaces in the spec lingo) related to the Performance API to the global scope, so users can access them directly to do things like refinements using `instanceof`. This also prevents the need from importing the modules from `react-native` directly, which would prevent code sharing with Web.

Reviewed By: rshest

Differential Revision: D59859654

fbshipit-source-id: e1f7afb0c98b394b1f97c3790db2e570e6ba0cd9
2024-07-22 04:45:02 -07:00
Rubén Norte a5bd64ece8 Move classes for Event Timing API to the same module to align with existing convention (#45535)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45535

Changelog: [internal]

Small refactor to group things based on the spec where they're defined.

Reviewed By: rshest

Differential Revision: D59911334

fbshipit-source-id: 1c40d6bf82b6cc7be78bd81b652d6855c39a53eb
2024-07-22 04:45:02 -07:00
Rubén Norte 2680198b09 Use the right interfaces for PerformanceLongTaskTiming (#45526)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45526

Changelog: [internal]

Just using the right interfaces so we can expose them in the global scope and do refinements as necessary using `instanceof`.

Reviewed By: rshest

Differential Revision: D59911144

fbshipit-source-id: 9779e3220f2c6f81955f54506f97142f0f4ffdd4
2024-07-22 04:45:02 -07:00
Rubén Norte 2a91a703cc Improve spec-compliance of Performance interfaces (#45525)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45525

Changelog: [internal]

This makes several changes to the Performance API to align it closer with the spec:
* Makes fields of `PerformanceEntry` and subclasses read-only.
* Returns instances of the correct subclass of `PerformanceEntry` to observers.
* Renames `HighResTimeStamp` as `DOMHighResTimeStamp` for alignment with the spec and native

Additionally, I realized that the way we handle `performance.measure` is a bit problematic at the moment. When we call the function, we create a `PerformanceMeasure` instance with the data we receive, and return that value. In parallel, we notify the entry to native, which will in turn notify the observers. But the observers will not get those instances we just created, but new instances of `PerformanceEntry` (not even `PerformanceMeasure`) with the resolved values. At the same time, the `PerformanceMeasure` instance we return doesn't resolve its `startTime` and `duration` based on the indicated marks (when specified as strings). We need to fix this in the future by resolving the timing data synchronously when calling `performance.measure`.

Reviewed By: rshest

Differential Revision: D59911145

fbshipit-source-id: e0be0441f307cc9bdea8795ae88b6f390780fc7b
2024-07-22 04:45:02 -07:00
Rubén Norte 9b06ac8379 Restrict durationThreshold to event entry types only (#45524)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45524

Changelog: [internal]

The `durationThreshold` option is only meant to be used with `event` entry types. `mark`, `measure`, `longtask`, etc. shouldn't take that option into account, as per the spec.

Reviewed By: mdvacca

Differential Revision: D59918519

fbshipit-source-id: 0553d46944cbe80a32712ff57140763f2514f734
2024-07-22 04:45:02 -07:00
Samuel Susla 9a380363ae use constexpr string_view to avoid allocation (#45565)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45565

changelog: [internal]

Simple change to avoid string allocation.

Reviewed By: christophpurrer

Differential Revision: D59964183

fbshipit-source-id: fc0f341f10ef2fb5afdc9f5593d268d4444717da
2024-07-22 04:40:42 -07:00
Pieter De Baets 235e84ccae Remove delay between instance start and surface creation (#45545)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45545

ReactInstance creation in bridgeless returns a callback that requires dispatching on the UI thread to complete the init. If that thread is busy (eg with other startup tasks), we delay starting the initial surface unnecessarily.

This diff adds an experiment to return early from that startup task to allow follow-up tasks to be scheduled on the JS thread without waiting for lifecycle changes to have been applied.

Changelog: [Internal]

Reviewed By: markv

Differential Revision: D59961779

fbshipit-source-id: dd6a6fe093a32144ef6823bde5ac94a61d268fd2
2024-07-22 04:04:40 -07:00
Riccardo Cipolleschi 5bf1a77a0b Cancel test-all job is another commits get pushed in the same branch (#45568)
Summary:
CircleCI was automatically cancelling an old run if a new commit was pushed on the branch.
GitHub does not have the same behavior enabled by default.

Keep running jobs in a pipeline when there is a new commit is usually wasteful of resources and cost money we can save.

## Changelog:
[Internal] - Cancel old jobs if a new commit is pushed

Pull Request resolved: https://github.com/facebook/react-native/pull/45568

Test Plan: Tested on GHA on this PR

Reviewed By: blakef

Differential Revision: D60035940

Pulled By: cipolleschi

fbshipit-source-id: 88b4dfc8bdd3eded6489a87db285e9544d3a1bcf
2024-07-22 03:51:33 -07:00
Douglas Lowder e42932cfc6 fix: Remove setting of process.exitCode that breaks Jest tests (#45562)
Summary:
In Node 20, the script to run unit tests in CI (`scripts/run-ci-javascript-tests.js`) will fail, even when all the Jest tests pass. This happens because one of the JS modules being tested is setting `process.exitCode` (see https://github.com/jestjs/jest/issues/9324#issuecomment-1808090455).

Changes:

- Modified the affected module to throw an exception when failing, instead of setting the exit code
- Adjusted the unit test for that module

## Changelog:

[General] [Fixed] - Remove setting of process.exitCode that breaks Jest tests

Pull Request resolved: https://github.com/facebook/react-native/pull/45562

Test Plan:
Before this change, running `node scripts/run-ci-javascript-tests.js` would fail with Node 20.
After this change, it succeeds.

Reviewed By: blakef

Differential Revision: D60033582

Pulled By: cipolleschi

fbshipit-source-id: 71b7f4495d414e719a9bd2d892bd1bc3045ddd5d
2024-07-22 03:37:08 -07:00
Gabriel Donadel aa4f802fde Restore CLI_PATH variable in react-native-xcode script (#45560)
Summary:
When changing the `react-native-xcode.sh` logic to use the helloworld cli on https://github.com/facebook/react-native/pull/44721, the `CLI_PATH` env var was removed along with `BUNDLE_COMMAND`. Both of these values were used by Expo to override the default CLI and use our custom bundling command.

https://github.com/expo/expo/blob/10e302ee13add0e24a08c7ee792c2da50ace95a6/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj#L215C4-L215C15

This restores the `CLI_PATH` variable and set the default value as `"$REACT_NATIVE_DIR/scripts/bundle.js"`, along with the `BUNDLE_COMMAND` variable. With this Expo and other frameworks can keep the ability to easily replace the internal CLI

## Changelog:

[INTERNAL] [CHANGED] - Restore CLI_PATH variable in react-native-xcode script

Pull Request resolved: https://github.com/facebook/react-native/pull/45560

Test Plan: Project compiles correctly on iOS

Reviewed By: robhogan

Differential Revision: D60035338

Pulled By: blakef

fbshipit-source-id: 26583d11d9f573f7cfa405b68e0cc3304c3601df
2024-07-22 03:19:39 -07:00
David Vacca 9af63956d2 Enable prop diffing for <View> (#45551)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45551

This diffs toggles the new Android prop diffing mechanism for <View> components

changelog: [internal] internal

Reviewed By: sammy-SC

Differential Revision: D59613243

fbshipit-source-id: 79c1e4bf4f5a67fc516e5db7b9f4ffba0cb9b69b
2024-07-20 10:23:12 -07:00
David Vacca a052e1eefd Refactor BaseProps.resolveborderMetrics method (#45554)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45554

In this diff I'm extracting the creation of borderWidth into its own method, this is necessary for next diffs of the stack.

Nh behavior change is introduced here

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D59942306

fbshipit-source-id: 85d39b64deaa4e8a8632d6f4aab72f626e594b5d
2024-07-20 10:23:12 -07:00
David Vacca 6d08d3af93 Introduce Props.getDiffProps method (#45553)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45553

This diff introduces a "temporary" method called getDiffProps to calculate the difference between 2 props and serialize its result into a folly::dynamic map.

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D59613245

fbshipit-source-id: 3e23cde0113ac2a3904c8daa48a1ca048cd0262d
2024-07-20 10:23:12 -07:00
Nick Gerleman b18635e5ab Fix drop-shadow filter (#45556)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45556

I missed updating this, and the e2e test we had isn't running, so switching JS objects to camel case broke this.

Changelog: [internal]

Reviewed By: jorge-cab

Differential Revision: D60003747

fbshipit-source-id: 6b7b1138e3ebbfdb982f5a089804351cc4b198ba
2024-07-20 07:57:03 -07:00
Alan Lee 3a5eb19731 fix ConcurrentModificationException in ReactScrollViewHelper (#45550)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45550

`ConcurrentModificationException` is happening from `emitScrollEvent()`.
This usually happens if we modify the collection (add/remove) while accessing collection in a foreach loop.
Seems likely add/remove is called from a different thread while in the foreach loop.
Converting to list before we do the foreach as a quick fix.

Changelog: [Internal] - quick fix for exception

Issure reported here: https://fb.workplace.com/groups/rn.support/permalink/26557068097248454/

Reviewed By: mdvacca

Differential Revision: D59991739

fbshipit-source-id: a2fcc798430acaadd07561a5be871967cc8f2c3b
2024-07-19 18:44:48 -07:00
Peter Abbondanzo aeb020dfa3 Add null check for instance manager (#45549)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45549

## Summary
Calling `getCurrentReactContext` on an unmounted `ReactRootView` could lead to a NPE. The method currently returns a nullable value so return type is the exact same. This change checks if the react instance manager is present and returns null early if not.

## Changelog:
[Android] [Fixed] - Adds a null check in react context getter

Reviewed By: zeyap

Differential Revision: D59982179

fbshipit-source-id: bac5c12e7dc4ee3296991063eb3746141b8446bc
2024-07-19 15:45:20 -07:00
Blake Friedman 123d7d4229 fix update-node-modules-cache workflow (#45547)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45547

Was missing the step to checkout the repo before running yarn.

Changelog: [Internal]

Reviewed By: sammy-SC, realsoelynn

Differential Revision: D59979543

fbshipit-source-id: 2ab52efbc655cb6ff7b6544ff3939c019c5d45a6
2024-07-19 13:54:35 -07:00
Blake Friedman 4410899ec7 Only cache node_modules on main (#45544)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45544

## This diff now does 5 things:
1. removes the old way we used `actions/setup-node` to manage the cache itself.
2. it creates a new `update-node-modules-cache` workflow, which is the only job that will update the node modules cache
3. it create a `yarn-install-with-cache` action that should be used install of directly calling `yarn install --non-interactive`.  This will load a cache against a hash of `package.json`.
4. updated the cache reaper to aggressively remove everything but the latest `npm-{{ hash('package.json') }}`.
5. removed a `cache-setup`, which couldn't be used (we're using artefacts now).

## Why are we doing this:
The various `node-cache-` keys for platforms and on various branches accounts for a very large proportion of the cache (10-20%).

We don't frequently change these dependencies, and even when we do running `yarn install` after loading the cache will resolve any issues.

Limiting the cache to `main` and aggressively pruning older cache entries will clean up a lot of "small win" caching.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D59917944

fbshipit-source-id: 4be6f1959e8fde642a4f208f7d19aceba2c3262f
2024-07-19 13:04:07 -07:00
Nick Gerleman d9263fbdbb Enable ViewConfig validation in RNTester (#45530)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45530

Enable viewconfig validation for RNTester to catch where static and native viewconfigs are mismatched, during development or contribution time. This relies on `useNativeViewConfigsInBridgelessMode()` which is already enabled in `DefaultNewArchitectureEntryPoint` on Android, and seems to be in iOS AppDelegate `RCTRootViewFactory` as well.

We put it in an early place in the bundle before first render, since we don't have RNTester preludes right now, but I think it is still early enough?

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D59946366

fbshipit-source-id: ae0c23b13a566489a88a7b4e408f61dce314b003
2024-07-19 09:37:03 -07:00
Nicola Corti e50e554039 Move helloworld to build from artifacts on Android (#45517)
Summary:
This moves the `helloworld` app to build from the artifacts produced by build_npm_package so that we don't rebuild ReactNative Android from source 8 times.
It reduces build time of such jobs from 14mins to 4mins, resulting in 80mins of build time for every test_all run.

## Changelog:

[INTERNAL] - Move helloworld to build from artifacts on Android

Pull Request resolved: https://github.com/facebook/react-native/pull/45517

Test Plan: CI

Reviewed By: blakef

Differential Revision: D59957613

Pulled By: cortinico

fbshipit-source-id: b6c4adcf804af6c8d2661cf56549d037e09aa2c1
2024-07-19 08:55:19 -07:00
szymonrybczak 353d88d54e feat: update CLI to 14.0.0 (#45540)
Summary:
Update to stable version of `react-native-community/cli`.

## Changelog:

[GENERAL] [CHANGED] - Upgrade `react-native-community/cli` to `13.6.9`

Pull Request resolved: https://github.com/facebook/react-native/pull/45540

Test Plan: n/a

Reviewed By: blakef

Differential Revision: D59960021

Pulled By: cortinico

fbshipit-source-id: 9d470699cdd2d20e08e844c92c7982056aec082c
2024-07-19 08:36:24 -07:00
Ruslan Shestopalyuk f3eaf63683 Remove inconsistency warning in viewconfig validation (#45543)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45543

# Changelog:

[Internal]-

Introduced recently, this confuses viewconfig validation vs the vanilla Android view managers.

So this change effectively reverts the exposure of `ScrollView.scrollIndicatorInsets` to Android, achieving the goal in a different way (via the SVC injection workaround for the specific Android platform flavour).

Reviewed By: NickGerleman

Differential Revision: D59960782

fbshipit-source-id: 3b9a49f1466426d909e94bf4d33f1d09fbf822c2
2024-07-19 08:24:54 -07:00
Nicola Corti 818dd92a4a Align github/* action versions on major (#45542)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45542

As we do have several version numbers for external actions all across the codebase,
here I'm aligning all of them to just use the majors.

I'm doing it only for GitHub first party actions as we trust them,
so minor/patch changes can safely be pulled in without code changes.

Changelog:
[Internal] [Changed] - Align github/* action versions on major

Reviewed By: cipolleschi, blakef

Differential Revision: D59959978

fbshipit-source-id: bb07ce0dfd74d9502a2ac0ea90a2b32f55d6d655
2024-07-19 05:49:03 -07:00
Riccardo Cipolleschi 84e8cb0b03 Remove CCI jobs that are on GHA (#45219)
Summary:
With the migration to GHA, we can remove all the duplicated jobs from CircleCI.
These are the only 4 jobs remained to migrate

## Changelog:
[Internal] - Remove all the jobs already migrated to GHA

Pull Request resolved: https://github.com/facebook/react-native/pull/45219

Test Plan: CCI is green

Reviewed By: cortinico

Differential Revision: D59156888

Pulled By: cipolleschi

fbshipit-source-id: 193f1f8fa7484154d5295ac36a63bb81a159da6e
2024-07-19 05:43:10 -07:00
Nicola Corti 2e55adf339 Act On label as @react-native-bot (#45541)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45541

This is another round of letting react-native-bot do the job that the
generic GitHub Action bot was doing.

Changelog:
[Internal] [Changed] - Act On label as react-native-bot

Reviewed By: cipolleschi

Differential Revision: D59959468

fbshipit-source-id: 8e0f7e2e90a40ed2aa265e637c8a809064e22747
2024-07-19 05:38:49 -07:00
Nicola Corti 6d56cea283 Fix nightly/release workflow (#45537)
Summary:
Nightly/Release workflow are currently broken due to a wrong path reference to a composite action. This fixes it.

## Changelog:

[INTERNAL] - Fix nightly/release workflow

Pull Request resolved: https://github.com/facebook/react-native/pull/45537

Test Plan: CI

Reviewed By: cipolleschi

Differential Revision: D59959185

Pulled By: cortinico

fbshipit-source-id: 02c556d86105eac35e152b4dc09705bc42c8031a
2024-07-19 04:17:09 -07:00
Nicola Corti 64c3fb84d5 Remove unused build-from-source input (#45533)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45533

This input is unused and is causing a warning on the build pipeline.
I'm cleaning it up.

Changelog:
[Internal] [Changed] - Remove unused build-from-source input

Reviewed By: blakef

Differential Revision: D59958184

fbshipit-source-id: 23ba010da077342605afaaee122bc7ceabc89915
2024-07-19 03:23:12 -07:00
nik910 be93092c1b Adding space to $(inherited) string to avoid merging of inherited and… (#45520)
Summary:
Added space to $(inherited) string to avoid creation of wrong cpp flags in RCTAppDelegate podspec

<img width="1157" alt="Screenshot 2024-07-18 at 8 51 19 PM" src="https://github.com/user-attachments/assets/29d32d08-e81f-4c25-b8ee-5dccc0f620ea">

## Changelog:

[IOS] [FIXED] - Building of iOS project when RCTAppDelegate is used in the project

Pull Request resolved: https://github.com/facebook/react-native/pull/45520

Test Plan: To test this you can simply change in your node modules and run pod install, the build will now work successfully

Reviewed By: cipolleschi

Differential Revision: D59950906

Pulled By: arushikesarwani94

fbshipit-source-id: 0d58620aa0be7ac4fcbcd309f06df0eef7844016
2024-07-19 02:05:24 -07:00
Nick Gerleman 245e5d9d95 Remove experimental_boxShadow from Android base view config (#45529)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45529

`experimental_boxShadow` is not yet part of Android view managers, and when we enable it, we are likely to do a view manager at a time before moving to BaseViewManager.

This causes user-visible errors when viewconfig validation is turned on, since we have a static view config, but not yet a native view config.

This removes the static viewconfig for Android until we start adding setters to view manager.

It is kept in `ReactNativeStyleAttributes` (which I think can have members not in the native view-config, since it has component specific props like tintColor), and iOS base viewconfig. On Fabric iOS, this is part of BaseViewProps, and handled by RCTView, but it looks like the prop (and also `experimental_filter`, `experimental_mixBlendMode`) do not have entries in iOS RCTViewManager, which is fixed in next diff in the stack.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D59939866

fbshipit-source-id: 2781029a0c29ba111ed04edfe9940c6c72f4e5ac
2024-07-18 18:19:41 -07:00
Nick Gerleman 1315d65bf5 Handle nullish values in processBoxShadow and processFilter
Summary:
Viewconfig processors may still get called for nullish values I think. Most other processors explicitly handle these (but some don't??).

This returns an empty list, like on parse error, when we have a value, but the value is nullish.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D59933611

fbshipit-source-id: 3f1d89d21977bbe01a05e708aadf1a9451d88083
2024-07-18 17:17:16 -07:00
Alex Taylor (alta) cbdb4d78c0 Update hermes-parser and related packages in fbsource to 0.23.0 (#45504)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45504

Bump hermes-parser and related packages to [0.23.0](https://github.com/facebook/hermes/blob/main/tools/hermes-parser/js/CHANGELOG.md).

Changelog: [internal]

Reviewed By: gkz

Differential Revision: D59881428

fbshipit-source-id: cf8d055b3a1078895fc16ec3da26981eabc22db7
2024-07-18 13:52:22 -07:00
zhongwuzw 14de1b708a Fabric: Fixes Modal present splash when animation type is none (#41853)
Summary:
Because the modal layout is triggered by state,  it's an async operation after the first mount, so we can see the splash when present modal. now we can pass the screen size to the initial state which can layout in the first mount operation.

before:
https://github.com/facebook/react-native/assets/5061845/a39d519e-e2f6-42f1-8319-6216c88e9cf3

After:
https://github.com/facebook/react-native/assets/5061845/c7d59820-399b-4ea2-943d-d889971ea7ee

## Changelog:

[IOS] [FIXED] - Fabric: Fixes Modal present splash when animation type is none

Pull Request resolved: https://github.com/facebook/react-native/pull/41853

Test Plan: RNTester Modal example, present modal in none animation mode.

Reviewed By: sammy-SC

Differential Revision: D51984766

Pulled By: cipolleschi

fbshipit-source-id: 34a40e75c87f1046ab2e4df45196a277f47bd525
2024-07-18 10:08:50 -07:00
Alexander Blom a37534e6ce Fix data race in BufferedRuntimeExecutor (#45512)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45512

isBufferingEnabled_ can be read (by design) from multiple threads, but
it's not atomic. Make it so.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D59907026

fbshipit-source-id: ffce54a28404148b3e270fa90dfe850a334ca2f0
2024-07-18 08:19:53 -07:00
Oskar Kwaśniewski fbcb8f6b2b fix: Hermes prepare_command fails with space in path (#45316)
Summary:
This PR fixes a case where the user initializes react native in a directory that contains a space.

It was causing pod install to fail because the path to `create-dummy-hermes-xcframework.sh` script wasn't in a string.

## Changelog:

[IOS] [FIXED] - Hermes prepare_command fails with space in path

Pull Request resolved: https://github.com/facebook/react-native/pull/45316

Test Plan:
1. Create a directory with space in path
2. Initialize React Native inside
3. Install pods
4. Check if pod install doesn't fail

Reviewed By: dmytrorykun

Differential Revision: D59912979

Pulled By: cipolleschi

fbshipit-source-id: b2c08d5035a245f8b4d6bfaf562e46d9c5d127b5
2024-07-18 07:23:32 -07:00
Samuel Susla cdd70f0397 cache JNI calls to FabricUIManager::getColor (#45501)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45501

changelog: [internal]

Implement caching for FabricUIManager::getColor. A call to FabricUIManager::getColor takes on average 0.4ms and there can be many of them. The arguments for the call keep repeating in majority of times. Employing a simple caching mechanism here to avoid unnecessary trips via JNI to reduce overhead.

The dependencies in graphics in BUCK are incorrect. I tried to separate this into multiple files and move implementation to .cpp file but this will require a bit of a more restructuring to make it possible.

Reviewed By: mdvacca, dmytrorykun

Differential Revision: D59859754

fbshipit-source-id: 748efce7f0b8c96001b6ac1a4b457b8c9d63fe9c
2024-07-18 07:06:02 -07:00
Riccardo Cipolleschi 32943263d0 Factor out build npm package (#45493)
Summary:
Factor out the Build NPM package job in a separate action for code reuse

## Changelog:
[Internal] - Factor out the Build NPM package job in a separate action for code reuse

Pull Request resolved: https://github.com/facebook/react-native/pull/45493

Test Plan: GHA are green

Reviewed By: robhogan

Differential Revision: D59858572

Pulled By: cipolleschi

fbshipit-source-id: 561a215ba5812352034157aa254999db56fcd31e
2024-07-18 07:05:24 -07:00
Nicola Corti 278257ec11 stale-bot is @react-native-bot (#45514)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45514

Let react-native-bot act on behalf of stale bot.

Changelog:
[Internal] [Changed] - stale-bot is react-native-bot

Reviewed By: cipolleschi

Differential Revision: D59909764

fbshipit-source-id: 45cef93607e657715aafe0d060ce91f9511409a3
2024-07-18 05:59:03 -07:00
Riccardo Cipolleschi 2d6d067f7a Update test-e2e-local to work with the new android artifacts (#45499)
Summary:
With the recent changes to the CI, we need to update the test-e2e-local to work with the new artifacts

## Changelog:
[Internal] - Update local-e2e-test to run with the new Android Artifacts

Pull Request resolved: https://github.com/facebook/react-native/pull/45499

Test Plan: Tested locally.

Reviewed By: blakef

Differential Revision: D59902087

Pulled By: cipolleschi

fbshipit-source-id: 84ef78e8dba222bf8a9e3620632fb2a9d286d42b
2024-07-18 05:46:49 -07:00
Rubén Norte 15b8ac8db2 Add support for longer tasks with explicit yielding in LongTask API (#45471)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45471

Changelog: [internal]

This is a React Native specific modification of the Long Tasks API that refines the logic to detect long tasks considering voluntary yielding checks.

In RN, as opposed to Web, we can have a very long task executing in the JS thread without causing any issues to the responsiveness of the app, as long as the task checks whether it should yield in short intervals. In this case, if the app always checks whether it should yield at least once every 50ms, the task will not be considered "long".

Check the new unit tests to see this behavior in practice.

Reviewed By: sammy-SC

Differential Revision: D55647992

fbshipit-source-id: 82ab41173d4d9deee65b8ade2268c40d7f58c6e2
2024-07-18 05:08:58 -07:00
Rubén Norte 64c4e385cb Implement Long Tasks API for PerformanceObserver (#45473)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870

fbshipit-source-id: e1ccad9cc6a35073b31230a8cf3a4660ab9a043d
2024-07-18 05:08:58 -07:00
Rubén Norte dffc156ea7 Move timing definitions to a specific target (#45492)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45492

Changelog: [internal]

When testing the changes in https://github.com/facebook/react-native/pull/45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241

fbshipit-source-id: c123920de56336da384ddc484f6ac9d287724301
2024-07-18 05:08:58 -07:00