Commit Graph
32109 Commits
Author SHA1 Message Date
Håkon Knutzen d93788301c Add missing call to super.viewDidLoad in RCTRedBox.mm (#44686)
Summary:
When running the Analyzer in Xcode, I got a warning denoting that `viewDidLoad` was not called on `super` in the overridden `RCTRedBox.viewDidLoad`. While I have not observed any anomalies, it is best practice to call on super in the overridden view controller life cycle methods.

## Changelog:

[iOS] [FIXED] - Add missing call to `[super viewDidLoad]` in `RCTRedBox.mm`.

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

Test Plan:
Running the RNTester yielded the following screenshot:

<img width="549" alt="Screenshot 2024-05-27 at 11 26 40" src="https://github.com/facebook/react-native/assets/2263015/b91e126c-9dc1-4e52-8a6b-50ea8bea2c3f">

Reviewed By: fabriziocucci

Differential Revision: D57856354

Pulled By: javache

fbshipit-source-id: d76a4779e02f40af69eed156489e57299968d4be
2024-05-28 04:54:09 -07:00
Tomek Zawadzki c73e22142e Expose mapbufferjni via prefab (#44684)
Summary:
The `mapbufferjni` was not exposed via prefab. I'm adding it to make possible for react-native-live-markdown to integrate on top of React Native via prefab. Based on https://github.com/facebook/react-native/issues/36166.

## Changelog:

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[ANDROID] [CHANGED] - Expose `mapbufferjni` via prefab.

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

Reviewed By: fabriziocucci

Differential Revision: D57856389

Pulled By: javache

fbshipit-source-id: 9926b02724950f4025c7f867257e8229d44c43a3
2024-05-28 03:19:10 -07:00
Christoph Purrer ea3a7143b9 Align CodegenSchema.d.ts with CodegenSchema.js (#44629)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44629

Changelog: [General][Fixed] Align CodegenSchema.d.ts with CodegenSchema.js

Reviewed By: yungsters

Differential Revision: D57594059

fbshipit-source-id: 554afcb1520e291d5452f330137ea577000f2428
2024-05-27 19:15:42 -07:00
John Mavrantonakis c207708c4b Fix for Clang tidy, needed for fbcode include (#44655)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44655

Required to compile with clang

This is because previously it was comparing size_t with int which is not allowed under compilation with clang

Changelog: [Internal] [Fixed] - Replaced old style for loop with new style to avoid clang errors with size_t to int comparisons

Differential Revision: D57721635

fbshipit-source-id: 2738f7b415d668c37536f7f93b2e0985fa2cc5e6
2024-05-27 12:14:03 -07:00
Alex Hunt 29beea6b57 Split debugger flags into fuseboxEnabledDebug and fuseboxEnabledRelease (#44663)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44663

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57733525

fbshipit-source-id: 70a7dacb641b75e73bd4f7e18bc5e3d04bc2c508
2024-05-27 09:27:47 -07:00
Alex Hunt 03b8b0997a Rename jsinspector-modern feature flag to fuseboxEnabled (#44661)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44661

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D57730920

fbshipit-source-id: 4761f7e8c2189ff5bfd5fa24891bba20c3750da8
2024-05-27 09:27:47 -07:00
Alex Hunt 352d4b1c83 Add default browser fallback to debugger launch flow (#44673)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44673

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57726648

fbshipit-source-id: 66eaab1dd0d53fe2befb3dc96d5deb426b86e3e7
2024-05-27 02:53:36 -07:00
Alex Hunt 5d827d83c1 Simplify debugger launch flow to invoke Chrome directly, drop kill API (#44672)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44672

Swaps out and simplifies the internals of the debugger launch flow.

We observed that we could achieve better launch/windowing behaviour by passing the `--app` argument directly to the detected Chrome path.

This shares the user's default Chrome profile:
- Fixes unwanted behaviour such as a separate dock icon on macOS (which, when clicked, would launch an unwanted empty window).
- Enables settings persistence.

This change also removes the `LaunchedBrowser.kill` API.

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57726649

fbshipit-source-id: fc3a715dc852a50559048d1d1c378f64aeb2013f
2024-05-27 02:53:36 -07:00
Alex Hunt 7e0f86f34b Revert debugger launch behaviour to default profile (#44638)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44638

Reverts the debugger launch flow to use the default `ChromeLauncher` profile. This is the approach used in the current `--experimental-debugger` experiment and by Expo.

This is motivated after a review of the tradeoffs of a guest profile — which allow us to programatically quit the browser process, however takes over system URL handling.

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57619542

fbshipit-source-id: 3713e1cf8eed61e7a70ed1e4eb58f02da845155f
2024-05-27 02:53:36 -07:00
Alex Hunt a908387b73 Remove inspectorEnableCxxInspectorPackagerConnection flag (#44662)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44662

- Remove `inspectorEnableCxxInspectorPackagerConnection` feature flag.
- Replace existing checks with `getEnableModernCDPRegistry()`.

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57730921

fbshipit-source-id: fd13b84a826a4fa5973053a721d311c7d68dd2f5
2024-05-26 10:48:48 -07:00
Alex Hunt e363eeb53e Update debugger-frontend from b453d8bd...bf5ec69 (#44675)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44675

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57782487

fbshipit-source-id: 449180c0fcbb8ef043716bc954f149aec6b2a263
2024-05-26 10:05:58 -07:00
Liron Yahdav 840c31c3a4 Make SystraceSection feed into Instruments signposts API (#44496)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44496

When doing performance profiling on a React Native iOS app and trying to identify bottlenecks on the native side it can be helpful to correlate actions to what is happening inside React Native. We already have the SystraceSection class for this, but it does nothing in open source. This diff allows SystraceSection to feed into the Instruments signpost API on iOS/macOS.

Changelog:
[iOS][Added] - Add Instruments signposts API for SystraceSection

Reviewed By: sammy-SC

Differential Revision: D56280451

fbshipit-source-id: 4e962e932b6b6e09e5953abdc1aa621a2723c91e
2024-05-24 18:39:02 -07:00
Nick Gerleman 91d12d9b99 Revert D57668976: Simplify ReactViewGroup clip to border
Differential Revision:
D57668976

Original commit changeset: 8b8cf956dc86

Original Phabricator Diff: D57668976

fbshipit-source-id: 5147557c1f3561863b1ad9226ca6244ff94cb29c
2024-05-24 11:55:43 -07:00
Peter Abbondanzo ac51deeaf4 Add suppression for deprecated setters and getters (#44676)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44676

Some of the setters and getters in these functions, like [`getStatusBarColor`](https://developer.android.com/reference/android/view/Window#getStatusBarColor), have been marked as deprecated in [`VANILLA_ICE_CREAM`](https://developer.android.com/reference/android/os/Build.VERSION_CODES#VANILLA_ICE_CREAM). This change suppresses deprecation warnings until we can move to newer alternatives.

## Changelog

[Android] [Changed] - Added suppression for deprecated getter/setter usage in StatusBarModule

Reviewed By: sumkit

Differential Revision: D57780503

fbshipit-source-id: 6201f7a3e597fef420de0f80dd2243bee78bc583
2024-05-24 10:41:12 -07:00
Alex Hunt 06461c4ab5 Disable Fusebox in prod builds (temp) (#44664)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44664

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D57737342

fbshipit-source-id: 85bff2d2810e666a97b79b5d1fe598b6f8b68c68
2024-05-24 10:31:18 -07:00
Nishan c13790ff1d feat(android): percentage support in translate (#43193)
Summary:
This PR adds percentage support in translate properties for android. Isolating this PR for easier reviews.

## Changelog:
[Android] [ADDED] - Percentage support in translate
<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests

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

Test Plan:
- Checkout TransformExample.js -> Translate percentage example.
- Added a simple test in `processTransform-test.js`. The regex is not perfect (values like 20px%, 20%px will pass, can be improved, let me know!)

Related PRs - https://github.com/facebook/react-native/pull/43191, https://github.com/facebook/react-native/pull/43192

Reviewed By: joevilches

Differential Revision: D57723216

Pulled By: NickGerleman

fbshipit-source-id: c9da007678341b62745df858f043821bcc662a98
2024-05-24 04:50:41 -07:00
Nick Gerleman 4294b2446a Simplify ReactViewGroup clip to border (#44646)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44646

We can remove most of the code for clipping children to border radius, and recalculating paths, in ReactViewGroup, and rely on the padding box path/rect already set.

I will move this to something more generic up the stack so other native components can reuse this logic.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D57668976

fbshipit-source-id: 8b8cf956dc8689827bccba5e41751b465fd85eeb
2024-05-24 04:42:27 -07:00
Peter Abbondanzo 1cc1673c32 xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java (#44656)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44656

## Changelog

[Android] [Changed] - Converted StatusBarModule to Kotlin

Reviewed By: andrewdacenko

Differential Revision: D57614041

fbshipit-source-id: 054b13cd286e9e9b7f870e66ff0e07def075a3c3
2024-05-24 04:35:42 -07:00
Pieter De Baets b2ced62d33 Shortcut emitDeviceEvent in bridgeless (2nd attempt) (#44590)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44590

emitDeviceEvent is frequently used for perf-critical operations such as sending network responses from native to JS. We don't need to go through JavaScriptModule Proxy (which is missing caching in bridgeless) and instead can immediately invoke the callable JS module.

Changelog: [Internal]

Reviewed By: philIip

Differential Revision: D57435750

fbshipit-source-id: 1c120073ac80afd95deb8e3e6f1c00c2d3d80133
2024-05-23 14:57:00 -07:00
Pieter De Baets 1343313dc6 Invoke callableModule factory once (#44576)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44576

Store callable modules as either a factory function or an object, so we can skip invoking the factory function for frequently accessed objects.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D57338528

fbshipit-source-id: cd39ccbe7168c6f093a0e62d5880cbbcd5209c8e
2024-05-23 12:33:41 -07:00
zhongwuzw 3f74f69cf0 Fixes race condition of m_batchHadNativeModuleOrTurboModuleCalls (#44653)
Summary:
Fixes https://github.com/facebook/react-native/issues/44649.

## Changelog:

[IOS] [FIXED] - Fixes race condition of m_batchHadNativeModuleOrTurboModuleCalls

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

Test Plan: Demo in https://github.com/facebook/react-native/issues/44649.

Reviewed By: fabriziocucci

Differential Revision: D57727886

Pulled By: sammy-SC

fbshipit-source-id: 967e2d8452cc477f2225151a46e9aa27698f4506
2024-05-23 11:11:27 -07:00
Samuel Susla 33b064bb9c enable preventDoubleTextMeasure optimisation by default (#44659)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44659

changelog: [internal]

Reviewed By: javache

Differential Revision: D57678341

fbshipit-source-id: cc6fbcfedccc0fd4610d52feee60b0fc35cc83b9
2024-05-23 10:58:01 -07:00
Christoph Purrer b7fc5867f2 Use hasteModuleName for C++ Turbo Module enums (#44631)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44631

Changelog:
[General][Breaking] Use hasteModuleName for C++ Turbo Module enums

This is a follow up to https://github.com/facebook/react-native/pull/44630

This changes the names of C++ Turbo Modules enums to use the `hasteModuleName`.

Example: `NativeMyAbcModule.js` with this spec:
```
export enum EnumNone {
  NA,
  NB,
}

export interface Spec extends TurboModule {
  +getStrEnum: (arg: EnumNone) => EnumStr;t
}

export default (TurboModuleRegistry.get<Spec>('MyAbcModuleCxx'): ?Spec);
```

Before now we generated a base C++ struct with the name:
```
MyAbcModuleCxxEnumNone
           ^^^
```

Now the generate name is:
```
NativeMyAbcModuleEnumNone
^^^^^^
```

## Changes:
- No `Cxx` injected anymore
- Ensure base struct is `Native` prefixed (all RN JS TM specs start with it)

Reviewed By: cipolleschi

Differential Revision: D57602082

fbshipit-source-id: 9ebd68b8059dfbc6e2ec11065915cf049aa3cb0b
2024-05-23 10:23:36 -07:00
szymonrybczak b98c5b960c fix: warn only in init command when CLI uses cached npx version (#44644)
Summary:
In https://github.com/facebook/react-native/pull/37510, a check was introduced to check if user is using `latest` version of `npx`, but right now it checks for every command executed, but it should only ensure that `latest` is included when creating a new project.

In this Pull Request I've added a condition to only warn if `init` was fired.

## Changelog:

[GENERAL] [FIXED] - Warn only in `init` command when CLI uses cached `npx` version

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

Test Plan: Warning about using `latest` version CLI should only be presented when running `init` command.

Reviewed By: arushikesarwani94

Differential Revision: D57681864

Pulled By: blakef

fbshipit-source-id: 5c81b9a08141396efcd24539b2560cea16028dd9
2024-05-23 09:43:02 -07:00
Christoph Purrer 053e302a00 Enable Plugin support for (RCT)SampleTurboModule (#44641)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44641

Changelog: [iOS][Fixed] Enable Plugin support for (RCT)SampleTurboModule

Reviewed By: javache

Differential Revision: D57625901

fbshipit-source-id: fe57777970b3b342be77ea9bb4e8e3f95d66471a
2024-05-23 09:41:46 -07:00
Moti Zilberman 5a6b64f2f9 Do not strip CxxInspectorPackagerConnection.DelegateImpl methods (#44650)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44650

Changelog: [Internal]

Adds the missing `DoNotStrip` annotations to methods of `CxxInspectorPackagerConnection.DelegateImpl` that are called from C++.

Reviewed By: huntie

Differential Revision: D57708376

fbshipit-source-id: 8a72b19211b60ce7a6049079e5ecfc2e96bc974f
2024-05-23 05:02:46 -07:00
Christoph Purrer 07261d0408 Use hasteModuleName for C++ Turbo Module structs (#44630)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44630

Changelog:
[General][Breaking] Use hasteModuleName for C++ Turbo Module structs

This changes the names of C++ Turbo Modules structs to use the `hasteModuleName`.

Example: `NativeMyAbcModule.js` with this spec:
```
export type ValueStruct = {
  x: number,
  y: string,
  z: ObjectStruct,
};

export interface Spec extends TurboModule {
  +getValueStruct: () => ValueStruct
}

export default (TurboModuleRegistry.get<Spec>('MyAbcModuleCxx'): ?Spec);
```

Before now we generated a base C++ struct with the name:
```
MyAbcModuleCxxValueStruct
           ^^^
```

Now the generate name is:
```
NativeMyAbcModuleValueStruct
^^^^^^
```

## Changes:
- No `Cxx` injected anymore
- Ensure base struct is `Native` prefixed (all RN JS TM specs start with it)

## Why?
- The `Cxx` extension is a temporary hint to react-native-codegen to enable extra capabilities and might disappear eventually
- The C++ base struct name should be 'stable'
- The name of the exported TM JS spec `TurboModuleRegistry.get<Spec>(...)` is abritrary, the hasteName is not
- The name of the RN JS TM spec must start with `Native` which better guarantees a consistent naming scheme for these generated base class
- The C++ Turbo Module base class has now the same prefix as the generated structs - `NativeMyAbcModule` for the example above

Reviewed By: cipolleschi

Differential Revision: D57599257

fbshipit-source-id: 4fafe6c7e920737fa766bd7e8e68e521f608e775
2024-05-23 03:28:52 -07:00
Fabrizio Cucci 95de14dc53 Drop unused code + minor lint fixes (#44645)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44645

Changelog: [Internal]

As per title.

Reviewed By: NickGerleman

Differential Revision: D57664819

fbshipit-source-id: 2388bd01c00d814a12de7f2e285b78f207e6012c
2024-05-22 12:11:33 -07:00
Rubén Norte b8f3478b37 Implement re-entrancy and unlocked scenarios for LazyShadowTreeRevisionConsistencyManager (#44620)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44620

We added a log message when trying to lock revisions in `LazyShadowTreeRevisionConsistencyManager` when they were already locked, and we've seen that being logged in existing experiments, which could indicate we're doing re-entrance from the JS runtime.

This protects against that case migrating the boolean flag to an integer.

Changelog: [internal]

Reviewed By: NickGerleman

Differential Revision: D57509193

fbshipit-source-id: 1712aa84d665c9dfe50630818e7f56de7d7e145c
2024-05-22 10:26:55 -07:00
Rubén Norte 98bf5ef080 Implement thread-safety for LazyShadowTreeRevisionConsistencyManager (#44619)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44619

Some methods in `LazyShadowTreeRevisionConsistencyManager` can be called in parallel when using synchronous state updates (which is also behind a flag). This implements thread-safety to cover that case so we don't have issues when testing that variant in production.

Changelog: [internal]

Reviewed By: NickGerleman

Differential Revision: D57506540

fbshipit-source-id: 362e1df534bc8c87289882236cfe0d7ee261f507
2024-05-22 10:26:55 -07:00
Jorge Cabiedes Acosta 494c86eb02 Add <named-color> to CSSParser (#44623)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44623

The syntax for <color> is defined as (https://www.w3.org/TR/css-color-4/#color-syntax):

```
<color> = <color-base> | currentColor | <system-color>

<color-base> = <hex-color> | <color-function> | <named-color> | transparent
<color-function> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()>
```

This diff implements in particular:
```
<color-base> = <named-color>
```

We create a map containing all hex value representations of each named color and directly return the RGBA Values

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57553237

fbshipit-source-id: 7b5bbaf77424cc4a4c833d107ef89601f9fcd9a9
2024-05-22 09:12:51 -07:00
Moti Zilberman 9dfcb9ec3a Generate object previews for live console messages
Summary:
Changelog: [Internal]

bypass-github-export-checks

Currently, Hermes never generates object/array previews for values logged via the `console` API. This makes console logs significantly less readable than in Chrome. Here we enable the preview generation machinery that already exists in Hermes.

We conservatively mimic V8's behaviour of [only generating previews for immediately-emitted messages](https://source.chromium.org/chromium/chromium/src/+/main:v8/src/inspector/v8-console-agent-impl.cc;l=53,64;drc=451a101b0a8bbc323dbf5697dd956b55284ec9ee) and not for buffered messages. I don't know *why* V8 does this, but can only guess it's meant to improve the performance of starting a debugging session, by evaluating less code and sending smaller payloads. (Anyway, we can change our decision later.)

Reviewed By: dannysu

Differential Revision: D57617059

fbshipit-source-id: 1f5a71ce98ac915a5b874ed6c009d971405a9f2d
2024-05-21 15:17:34 -07:00
Joe Vilches ed3f2f40e1 Fix small props parsing bug for filter (#44637)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44637

Setting the wrong thing to {}. `result` should be set here just like in the other early returns.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57617046

fbshipit-source-id: e47dbdb7821879ffa02d11b7e68eec1c9bfbdefd
2024-05-21 14:04:01 -07:00
Nick Gerleman 644facd19d Make dimension units case insensitive (#44639)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44639

https://www.w3.org/TR/css-values-4/#dimensions

> Like keywords, unit identifiers are ASCII case-insensitive.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D57620806

fbshipit-source-id: 26946ed4031f379888651c08b1b0895ac701a320
2024-05-21 11:25:57 -07:00
Ramanpreet Nara fb23470483 Push ReactContext logic in derived classes (#44226)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44226

Changelog: [Android][Removed] Delete ReactContext.initializeWithInstance(). ReactContext now no longer contains legacy react instance methods. Please use BridgeReactInstance instead.

Yet another attempt to land this (last one was D55964787).

Copy-pasting below the amazing summary from RSNara.

## Context
Prior, ReactContext used to implement bridge logic.

For bridgeless mode, we created BridgelessReactContext < ReactContext

## Problem

This could lead to failures: we could call bridge methods in bridgeless mode.

## Changes
Primary change:
- Make all the react instance methods inside ReactContext abstract.

Secondary changes: Implement react instance methods in concrete subclasses:
- **New:** BridgeReactContext: By delegating to CatalystInstance
- **New:** ThemedReactContext: By delegating to inner ReactContext
- **Unchanged:** BridgelessReactContext: By delegating to ReactHost

## Auxiliary changes
This fixes ThemedReactContext in bridgeless mode.

**Problem:** Prior, ThemedReactContext's react instance methods did not work in bridgeless mode: ThemedReactContext wasn't initialized in bridgeless mode, so all those methods had undefined behaviour.

**Solution:** ThemedReactContext now implements all react instance methods, by just forwarding to the initialized ReactContext it decorates (which has an instance).

NOTE: Intentionally not converting `BridgeReactContext` to Kotlin to minimize the risk of these changes.

Reviewed By: cortinico

Differential Revision: D56064036

fbshipit-source-id: 2e380bf7ee46892c5fc0044b03a929f12d122157
2024-05-21 09:58:17 -07:00
Karol Latusek cfa784c5ce Avoid redundant state updates in Pressable if children and style are not functions (#44615)
Summary:
Goal of this PR is to optimise `Pressable` component, similarly to https://github.com/react-native-tvos/react-native-tvos/pull/724 . `Pressable` `style` and `children` properties can, but doesn't have to be functions. Usually we passing objects or arrays. `pressed` state is used only when `style` or `children` are `functions`, so let's update that state only in such case, otherwise let's skip state updates to improve the performance.

 That way we won't have to rerender the component when it is being pressed (assuming that `style` and `children` are not going to be functions)

## Changelog:

[GENERAL] [CHANGED] - Improve performance of `Pressable` component.

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

Test Plan: Verify that `Pressable` updates its `pressed` state when `style` or `children` are functions.

Reviewed By: javache

Differential Revision: D57614309

Pulled By: fabriziocucci

fbshipit-source-id: 473e0ab3c4bf7b3ef04ba19f76105ac65371a3fb
2024-05-21 09:51:35 -07:00
Ruslan Lesiutin cd1ddbbef3 Update debugger-frontend from 141c8c9...b453d8b (#44635)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44635

Changelog: [Internal] - Update `react-native/debugger-frontend` from 141c8c9...b453d8b

Resyncs `react-native/debugger-frontend` from GitHub - see `rn-chrome-devtools-frontend` [changelog](https://github.com/facebookexperimental/rn-chrome-devtools-frontend/compare/141c8c936712ace2a7fef80503acec4127c32f2d...b453d8bdf336e7730efc4565a27bebafac36afbb).

Fixes https://github.com/facebook/react-native/issues/44595.

Reviewed By: huntie

Differential Revision: D57616476

fbshipit-source-id: aa06c3d7d1fe7db3c2f34cbc025d8840475ae091
2024-05-21 08:48:39 -07:00
Fabrizio Cucci cf94797f93 Resolve $FlowFixMe in Pressable (#44634)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44634

Changelog: [Internal]

As per title.

Reviewed By: NickGerleman

Differential Revision: D57612982

fbshipit-source-id: 5aafd38889b3db49a5f4360563e1803169d9b943
2024-05-21 07:40:51 -07:00
Pieter De Baets e67d5560cf Fix HeadlessJsTaskContext creating Handler on background thread (#44582)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44582

D54496604 fixed lifecycle methods for JavaTimerManager, which now reveals another bug. Because this codepath ends up creating a `HeadlessJsTaskContext` which in turn creates a `Handler`, ReactInstance destruction doesn't complete cleanly.

```
2024-05-15 17:42:52.935 12681 27113 W fb4a.BridgelessReact: ReactHost{1}.getOrCreateDestroyTask(): React destruction failed. ReactInstance task faulted. Fault reason: Can't create handler inside thread Thread[pool-51-thread-1,5,main] that has not called Looper.prepare(). Destroy reason: FbReactInstanceHolder.destroyReactManager(): FbReactInstanceLogoutCleaner.clearReactInstanceData()
```

The fix is to not create our own Handler, but instead use the shared methods in UiThreadUtil.

Changelog: [Android][Fixed] Fixed error thrown during ReactInstance teardown

Reviewed By: cortinico

Differential Revision: D57378247

fbshipit-source-id: a31dc8e35b5418a71b83c301973f12350f2ee01b
2024-05-21 06:37:28 -07:00
Pieter De Baets fd8eb4878b Fix crash in ParagraphState when running with USE_FABRIC_DEBUG (#44633)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44633

`toDynamic` no longer exists for ParagraphState, so try the MapBuffer value first, before triggering the error introduced in D56963463.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57439386

fbshipit-source-id: 31e6466d9dec5b835551cca6c946b28cfbd4578b
2024-05-21 05:58:38 -07:00
Richard Howell 2a96dba075 remove shadowed static (#44626)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44626

This variable is unused and is shadowed by a function local.
Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57568098

fbshipit-source-id: e5f56b7ef88497d4b9935275eb7e805660741146
2024-05-20 13:11:48 -07:00
Christoph Purrer 1be073e832 Fix assert Turbo Module example crash the app when tap Run all tests (#44607)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44607

Same as https://github.com/facebook/react-native/pull/41521?fbclid=IwAR1X3qRAyVCZIy2w2T7tmqd1FYVCqrT2TyO-gszIgJ0XKN6F60ODkq_K3nI for the Java / ObjC Turbo Module example.

Changelog: [INTERNAL] [FIXED] - [RN-Tester] Fix assert Turbo Module example crash the app when tap `Run all tests`

Reviewed By: cortinico

Differential Revision: D57531736

fbshipit-source-id: 7cad5dfd31c306dff4763b67466664f2dde6b239
2024-05-20 10:31:17 -07:00
Samuel Susla 30d7a0f1d7 handle re-entry in RuntimeScheduler::executeNowOnTheSameThread (#44606)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44606

changelog: [internal]

Protect RuntimeScheduler::executeNowOnTheSameThread against re-entry to prevent deadlocks.

Reviewed By: NickGerleman

Differential Revision: D57514317

fbshipit-source-id: 88309aa27fedefcce7bf8ce5be9a382fdf72cfae
2024-05-20 09:36:26 -07:00
Ryan Linton 4fb5573796 Update ColorPropConverterto support color function values (#44237)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44237

This adds support for color function values to ColorPropConverter per the wide gamut color [RFC](https://github.com/react-native-community/discussions-and-proposals/pull/738). It updates the color conversion code so that it returns a Color instance before ultimately being converted to an Integer in preparation for returning long values as needed.

## Changelog:

[ANDROID] [ADDED] - Update ColorPropConverter to support color function values

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

Test Plan:
Colors should work exactly the same as before.

Follow test steps from https://github.com/facebook/react-native/pull/42831 to test support for color() function syntax.

While colors specified with color() function syntax will not yet render in DisplayP3 color space they will not be misrecognized as resource path colors but will instead fallback to their sRGB color space values.

 ---

After the failure with the tests, I reapplied the changes and test some Jest e2e tests that were failing yesterday:

{F1495277376}

Reviewed By: cortinico

Differential Revision: D56517579

Pulled By: cipolleschi

fbshipit-source-id: ae9b5bc2afe9eb9760dd91afb090385daf7102b8
2024-05-20 09:27:06 -07:00
Gijs Weterings 252519666f Deduplicate test case for TextExample in preparation of rntester android onboarding
Summary:
D57197676 reordered the TextExample test cases, but accidentally reused the same string as the case in packages/rn-tester/js/examples/Text/TextInlineViewsExample.js

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D57279961

fbshipit-source-id: 60a41eaf13d82538ee149fe4ef5531e42c00b012
2024-05-20 07:57:10 -07:00
Gijs Weterings b6269ebc4f default the RNTTestDetails to collapsed by default
Summary:
tsia. Done to allow for easier interaction of the examples, especially those with long descriptions

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57278607

fbshipit-source-id: f0a1d06c97c019fe177c8b9e51c3ca0ae12caef5
2024-05-20 07:57:10 -07:00
Gijs Weterings 3c5a6b3d43 Allow Deeplinking via Linking.getInitialURL() (#44552)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44552

Changelog: [Android][Fixed] If the RNTester app is started with a deeplink intent, we now correctly navigate there for Android to facilitate e2e testing. This already worked on ios.

Reviewed By: javache

Differential Revision: D54662737

fbshipit-source-id: 5bbf824c80e226f441bdcbc4fa67e41ab4c3eb33
2024-05-20 07:57:10 -07:00
Gijs Weterings 99238d2bb9 Configure ViewHierarchy dump for RNTester
Summary: Changelog: [Android][Added] add FBEndToEndDumpsysHelper stub to RNTester Android to be able to dump ViewHierarcies internally.

Reviewed By: makovkastar

Differential Revision: D54662739

fbshipit-source-id: 5236ae84ed648d431a8f01558f8f84049480ba39
2024-05-20 07:57:10 -07:00
Jorge Cabiedes Acosta 417ff5fec9 Add <hex-color> to CSSParser (#44624)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44624

The syntax for <color> is defined as (https://www.w3.org/TR/css-color-4/#color-syntax):

```
<color> = <color-base> | currentColor | <system-color>

<color-base> = <hex-color> | <color-function> | <named-color> | transparent
<color-function> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()>
```

This diff implements in particular:
```
<color-base> = <hex-color>
```

We parse over a `<hash-token>` to extract a 3, 4, 6 or 8 digit long hexadecimal and parse it into a CSSColor struct representation:

```
struct Color {
    uint8_t r // 0-255
    uint8_t g // 0-255
    uint8_t b // 0-255
    uint8_t a // 0.0 - 1.0
}
```
Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57287309

fbshipit-source-id: 35ce82e52fdc8fc86425e03d7883ae09b429b9e4
2024-05-20 07:29:51 -07:00
Peter Abbondanzo 7349dabae2 Make StatusBarModule nullsafe (#44618)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44618

This change is a prerequisite to converting this file to Kotlin. It adds null checks to potentially nullable window and inset getters that were previously not there.

## Changelog:
[Android] [Changed] - Added null checks, marked null safety in StatusBarModule

Reviewed By: NickGerleman

Differential Revision: D57553395

fbshipit-source-id: 5293bb74a95d22bb82971c0a9d691c9e5e36d81f
2024-05-20 07:20:05 -07:00