Summary:
X-link: https://github.com/facebook/yoga/pull/1437
Pull Request resolved: https://github.com/facebook/react-native/pull/41208
Reading through the sizing logic and this seemed a bit redundant/confusing. Lets use the same function we just used for the main axis for the cross axis as well so people do not think its special. Also we will need one less variable. The reason this was done it seems is because we need the leading padding + border elsewhere so this is technically a few less steps but this is cleaner
Reviewed By: NickGerleman
Differential Revision: D50704177
fbshipit-source-id: 1a091edbfee6482a2bf472aca2980702bd75ad94
Summary:
When bridgeless is enabled, RN Tester New Architecture examples crashed with a StackOverflow Exception
The root cause of this issue is that MyLegacyViewManager is sending an event to JS during the execution of MyLegacyViewManager.createViewInstance() method.
This is a problem because the delivery of events depend on the "id" of the view, but the "id" of the view is set after MyLegacyViewManager.createViewInstance() finishes executing.
The documentations "implicitly" mentions to not set props during the execution of the ViewManager.createViewInstance() method:
https://reactnative.dev/docs/native-components-android#2-implement-method-createviewinstance
To fix this issue I'm removing the execution of the method that triggers the event.
bypass-github-export-checks
changelog: [Android][Fix] Fix rendering of 'RN Tester New Architecture examples' when bridgeless is enabled
Reviewed By: fkgozali
Differential Revision: D51047007
fbshipit-source-id: 17be493f79114fa402029063e79fabc1d90efc17
Summary:
`Activity` is the current candidate name. This PR starts the rename work
by renaming the exported unstable component name.
NOTE: downstream consumers need to rename the import when updating to
this commit.
DiffTrain build for commit https://github.com/facebook/react/commit/ce2bc58a9f6f3b0bfc8c738a0d8e2a5f3a332ff5.
Reviewed By: tyao1
Differential Revision: D50945046
Pulled By: kassens
fbshipit-source-id: be9b3254c7a98840b0769135770e9bf7858cf1a3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41345
## Changelog:
[Internal] -
This API was already accessible on the Android platform, now other platforms (C++) would benefit from having it available as well.
Arguably, it's perfectly fine to have it as public class members - based on empiric experience with the use case we have had.
Reviewed By: christophpurrer
Differential Revision: D51031340
fbshipit-source-id: 0426deede5d9e5c552c92f8a25d30fe2274a1941
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41333
Enables the `sort-imports` lint rule introduced in D39907799 in ~all files, rather than just in `react-native/Libraries`.
We exclude only `packages/react-native/template`, in order to (1) minimise noise for projects that are tracking updates to the template, (2) avoid the possibility of something breaking if the `react-native` import isn't at the top of `template/index.js`, (3) avoid leaking a reference to `lint/sort-imports` to the template (which doesn't ship with this rule) via an ESLint suppression comment.
Changelog: [Internal]
Reviewed By: robhogan
Differential Revision: D51025811
fbshipit-source-id: a62b0d6ebc5323116a4b2f1b69c4e8d48cde3215
Summary:
Though not currently in use in the RN code, when `react-native-windows` tried to integrate changes up to 7/28/23 (see PR https://github.com/microsoft/react-native-windows/pull/11970) there happened to be a `??=` operator in the `virtualized-lists` package (see [diff here](https://github.com/facebook/react-native/compare/ccc50ddd2...c168a4f88#diff-abeff2daf5909e54a23562e43569de1d5b8db1d7170119eed485b618cdf04ec7R322)). (The offending line was removed in a later commit).
The default RNW engine is still Chakra and it couldn't handle the syntax. It looks like the `babel/plugin-proposal-nullish-coalescing-operator` plugin only handles `??`, so to handle `??=` I've added `babel/plugin-proposal-logical-assignment-operators`, which also happens to handle the logical assignment operators `||=` and `&&=`.
Closes https://github.com/facebook/react-native/issues/31704
## Changelog:
[GENERAL] [FIXED] - Add detection of logical assignment operators to `react-native-babel-preset`
Pull Request resolved: https://github.com/facebook/react-native/pull/39186
Test Plan: We started using these plugins in RNW's babel config to resolve the issue in our integrate PR.
Reviewed By: motiz88
Differential Revision: D50936554
Pulled By: rozele
fbshipit-source-id: 0a924b6085524d8c9551a158b91195b1f7448c19
Summary:
Last week, I modified the e2e script to make sure it was working properly with 0.73.
This change backport those changes in main
## Changelog:
[Internal] - Backport e2e script changes
Pull Request resolved: https://github.com/facebook/react-native/pull/41332
Test Plan: Tested locally
Reviewed By: dmytrorykun
Differential Revision: D51025796
Pulled By: cipolleschi
fbshipit-source-id: 89ecd3701eaac4ba4bdde2c640df45a158329158
Summary:
This PR fixes a small typo in `build-ios-framework.sh`
## Changelog:
[INTERNAL] [FIXED] - Typo in `build-ios-framework.sh`
Pull Request resolved: https://github.com/facebook/react-native/pull/41325
Test Plan: Check if correct error message is printed out
Reviewed By: dmytrorykun
Differential Revision: D51022361
Pulled By: cipolleschi
fbshipit-source-id: 93c3e85eff8e410bcb18302dcb3ac76583d6e304
Summary:
zfrankdesign reported that in RN 0.72.6, they receive warnings that some new props listed in the documents are missing:
View tabIndex https://reactnative.dev/docs/view#tabindex-android and Text userSelect https://reactnative.dev/docs/text#userselect. It seems the components accept these props but they were not typed.
## Changelog:
[GENERAL] [FIXED] - Missing typings for the props `tabIndex` for **View** and `userSelect` in the **Text** props were added.
Pull Request resolved: https://github.com/facebook/react-native/pull/41312
Test Plan:
1. Instantiate a component of type View
1.1. Should add the property tabIndex to the View component.
1.2. Should not see a warning about the missing tabIndex property.
2. Instantiate a component of type Text
2.1. Should add the property userSelect to the Text component.
2.2. Should not see a warning about the missing userSelect property.
Reviewed By: NickGerleman
Differential Revision: D50982156
Pulled By: lunaleaps
fbshipit-source-id: 75b55cfb897738be0cf426912a7c10c7412d5032
Summary:
Closes https://github.com/facebook/react-native/issues/41236
`setState` is not working properly for text inline image
## Fixed demo (please see the animation as in rendering pass rather than re-mounting pass)
https://github.com/facebook/react-native/assets/149237137/d4b894bf-2283-4963-8dc7-b8f5a9f81315
## How it works
**Background**
Inline views are not included in the Yoga node tree, rather, they are retained as attachments of `NSAttributedString` and are managed by the respective text fragment (`RCTTextShadowView`) that includes them (Code snippet 1).
```
<div layout="width: 393; height: 852; top: 0; left: 0;" style="" >
<div layout="width: 393; height: 852; top: 0; left: 0;" style="flex: 1; " >
<div layout="width: 393; height: 852; top: 0; left: 0;" style="flex: 1; " >
<div layout="width: 393; height: 241; top: 0; left: 0;" style="padding-top: 59px; " >
<div layout="width: 393; height: 50; top: 59; left: 0;" style="width: 100%; height: 50px; " >
<div layout="width: 393; height: 17.3333; top: 0; left: 0;" style="" has-custom-measure="true"></div>
</div>
<div layout="width: 393; height: 50; top: 109; left: 0;" style="width: 100%; height: 50px; " >
<div layout="width: 393; height: 17.3333; top: 0; left: 0;" style="" has-custom-measure="true"></div>
</div>
/* Text node that does not contain inline view that is supposed to be there */
<div layout="width: 393; height: 74.3333; top: 167; left: 0;" style="margin-top: 8px; " has-custom-measure="true"></div>
</div>
</div>
</div>
</div>
```
**Code snippet 1, output of YGNodePrint() in _normal layout_ flow**
The layout of such node is handled ad-hoc (_inline layout_) inside `RCTTextShadowView` (Code snippet 2)
```
/* Inline node is calculated on its own */
<div layout="width: 48; height: 48; top: 0; left: 0;" style="overflow: hidden; width: 48px; height: 48px; min-width: 0px; min-height: 0px; " ></div>
```
**Code snippet 2, output of YGNodePrint() in _inline layout_ flow**
**Problem description**
The issue happens when the sizes given by `setState()` are smaller than those in the last round `setState()`. Since the `min-width` and `min-height` are already populated (Code snippet 3) with greater values, the new layout pass gives rather a `noop`.
```
/* min sizes are greater than them in the new style */
<div layout="width: 48; height: 48; top: 0; left: 0;" style="overflow: hidden; width: 32px; height: 32px; min-width: 48px; min-height: 48px; " ></div>
```
**Code snippet 3, output of YGNodePrint() in _inline layout (issue)_ flow**
**Fix description**
This biased `min-width` and `min-height` are given using the **current frame size** (i.e., sizes set in the last round `setState()`) in the _inline layout_ (in `RCTTextShadowView` § Background), whilst the same parameters are given as ~~CGSizeZero~~ `_minimumSize` in _normal layout_ (§ Background).
The change of this PR is to unify this behavior of _normal layout_ by using ~~CGSizeZero~~ `_minimumSize` as the input also for _inline layout_.
## Changelog:
[IOS] [FIXED] - `setState` is not working properly for text inline image
Pull Request resolved: https://github.com/facebook/react-native/pull/41287
Test Plan:
- Using **rn-tester** for basic verification
- Complete plan: https://docs.google.com/spreadsheets/d/1QLuqNvqX0dM4K68ygRoHDR3S0wcK5umptmjoR7KtkaY/edit?usp=sharing
Reviewed By: cipolleschi
Differential Revision: D50967547
Pulled By: NickGerleman
fbshipit-source-id: b3b6d6919fd9d3302977dc771a41c22f7b796ba5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41309
Changelog: [Internal][Removed] CxxModuleWrapper.makeDSO is not actively used and has been replaced by TurboModule infra.
Reviewed By: NickGerleman
Differential Revision: D50878589
fbshipit-source-id: 9fd11c1ee860ea65f1e985a132de3216ed042752
Summary:
We're logging a systrace section that for some reason is breaking the data in application traces. That section isn't especially relevant so we can just remove it.
Changelog: [internal]
Reviewed By: sammy-SC
Differential Revision: D50939346
fbshipit-source-id: 350a528d83c6fe6e7100275644d3d02a96700e59
Summary:
This PR updates the internal version of cocoapods to 1.13, template already uses this version. I've also removed the root folder Gemfile as it's not necessary anymore.
## Changelog:
[INTERNAL] [CHANGED] - Update RNTester Cocoapods to 1.13
Pull Request resolved: https://github.com/facebook/react-native/pull/41248
Test Plan:
Check if cocoapods installs correctly by running:
1. `bundle install`
2. `bundle exec pod install`
Reviewed By: dmytrorykun
Differential Revision: D50972135
Pulled By: cipolleschi
fbshipit-source-id: b7d6a4671e641b7b8f50242a3374f623e023daf4
Summary:
This is not supported by any native implementation.
Changelog: [Internal]
Reviewed By: rshest
Differential Revision: D50641812
fbshipit-source-id: e90a1998d2239b6f96c0c4db7b112f7e75cfc6dc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41299
## Changelog:
It makes sense to keep Web Performance logging mechanism separate from the GlobalPerformanceLogger, removing.
Reviewed By: rubennorte
Differential Revision: D50930312
fbshipit-source-id: 3b76ff28eae8c5a2bf41faceb33cf188d8318610
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41294
Changelog: [Internal]
i believe this warning is outdated, i don't think having a custom initializer or exporting constants means that your module needs to be setup on main.
Reviewed By: cipolleschi
Differential Revision: D50919152
fbshipit-source-id: dc91af5fc88eca4f07a5f35adb888160b978cc38
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41295
Changelog: [Internal]
modules will be setup on main queue for any the following criteria:
- override requiresMainQueueSetup and set it to yes
- have a method that starts with `init`
- have `constantsToExport` implemented
these methods return `NO` but don't fulfill the latter criteria, so we should just delete them
Reviewed By: cipolleschi
Differential Revision: D50919151
fbshipit-source-id: 662bd067a1bae0f81acfabfc95b2a2af0c0a3180
Summary:
## Changelog:
[Internal] -
There is no need for this feature flag anymore, cleaning up.
Reviewed By: rubennorte
Differential Revision: D50925309
fbshipit-source-id: 39ff3d1f85c1df5ba2be287d4b7df2a4222acdba
Summary:
Expose JSEngineResolutionAlgorithm into ReactHost interface
This is another step to reduce visibility of ReactHostImpl class and rely only on ReactHost
changelog: [internal] internal
Reviewed By: philIip
Differential Revision: D50910031
fbshipit-source-id: da893ef0574c26bc90867f45b55d5b1e244885fc
Summary:
Update various scripts to support AsExpressions, found by looking for scripts currently handling `TypeCastExpression`
Changelog: [Internal]
Reviewed By: SamChou19815
Differential Revision: D50822952
fbshipit-source-id: c88c04a507d94ddbc6458a68fd36509463e91953
Summary:
Consolidate JSException and JavaScriptException. `JSException` was only ever created by `JMessageQueueThread`.
Changelog: [Internal]
Reviewed By: rshest
Differential Revision: D50641818
fbshipit-source-id: 46686468891fe1498e17f3b40b619e8c2324d7a9
Summary:
When the proximity sensor is engaged and it detects "close", the screen is disabled so timers stop working. Treat the close proximity status as if the app went into the background so CADisplayLink based timers are not used.
bypass-github-export-checks
## Changelog:
[iOS] [Fixed] - Fix running timers when the proximity sensor detects close
Pull Request resolved: https://github.com/facebook/react-native/pull/41262
Reviewed By: dmytrorykun
Differential Revision: D50839017
Pulled By: cipolleschi
fbshipit-source-id: 3f7dc47d346eb88b687c8219fc905cf2a42262fe
Summary:
Fixes Dev menu pop up multiple times when Tap command `D` continuously, demo like below:
https://github.com/facebook/react-native/assets/5061845/b4c2b38d-ece6-4d4e-a823-23eaa7cad001
## Changelog:
[IOS] [FIXED] - Fixes Dev menu pop up multiple times when Tap command `D` continuously
Pull Request resolved: https://github.com/facebook/react-native/pull/41234
Test Plan: Press `D` continuously, the menu pop up and dismiss correctly.
Reviewed By: cipolleschi
Differential Revision: D50925959
Pulled By: blakef
fbshipit-source-id: 50fac9b4cea94c15a06ebc1b6092ebc9909cd9d2
Summary:
Follow up of https://github.com/facebook/react-native/pull/41284#issuecomment-1789516046
We should not rely on checking if the `React-hermes` pod is present to determine if hermes is enabled
## Changelog:
[IOS] [CHANGED] - Update ios pod post_install logic for detecting if hermes is enabled
Pull Request resolved: https://github.com/facebook/react-native/pull/41286
Test Plan: Run `use_react_native!(hermes => false)` should not add `USE_HERMES = true;` to `project.pbxproj`
Reviewed By: blakef
Differential Revision: D50899654
Pulled By: cipolleschi
fbshipit-source-id: a5ab5b0117c61014e77b780c50bf349da92c6342
Summary:
Changing interface of UIManagerProvider to be a [functional(SAM) interface](https://kotlinlang.org/docs/fun-interfaces.html) for the return type of getUIManagerProvider() to be used in various apps for clarity.
Changelog:
[Internal] internal
Reviewed By: javache
Differential Revision: D50846818
fbshipit-source-id: c22977b45b0118d70b994e14ff79ea8990248e3c
Summary:
There is a problem in the way that we check if Fabric is enabled inside `react_native_post_install`.
https://github.com/facebook/react-native/blob/899e7cdb55197fc17a96a93af4f8bcc7519553c2/packages/react-native/scripts/react_native_pods.rb#L239
We're determining if fabric is enabled by checking if the `React-Fabric pod `is present, but since we always call `setup_fabric!(:react_native_path => prefix)` (https://github.com/facebook/react-native/pull/39057) inside `use_react_native` the `React-Fabric` pod is always present causing the `-DRN_FABRIC_ENABLED` flag to always be added to `project.pbxproj` even if the new arch is disabled.
## Changelog:
[IOS] [FIXED] - Fix ios pod post_install logic for detecting if fabric is enabled
Pull Request resolved: https://github.com/facebook/react-native/pull/41284
Test Plan: Run `use_react_native!(fabric => false)` should not add the `-DRN_FABRIC_ENABLED` flag to `project.pbxproj`
Reviewed By: fkgozali
Differential Revision: D50896487
Pulled By: cipolleschi
fbshipit-source-id: 78154407ce52b09fd3a317b7dc64bd4bba56363e
Summary:
UIManagerProvider.java -> UIManager.kt so as to take advantage of Functional SAM interfaces of Kotlin for simplication
Changelog:
[Internal] internal
Reviewed By: rshest
Differential Revision: D50855256
fbshipit-source-id: 352edb39f019446c2ddae88a914c898f46239fce
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41251
Changelog: [Internal]
remerge of https://github.com/facebook/react-native/pull/41183
>in my quest to get rid of all synthesized methodQueues, we have RCTNetworking which uses it internally as well as exposes its underlying execution queue. in this diff, i add a config that replaces that queue with one that is managed by the module itself instead of the one generated by the infra.
this is the last one!
Reviewed By: cipolleschi
Differential Revision: D50764523
fbshipit-source-id: 442f3a9f112409f2f05c69c0aa8391c04e8b0173
Summary:
Windows had to remove some previously suppressed compiler warnings and fork `ShadowNode.cpp` and `RawPropsParser.cpp` (See: https://github.com/microsoft/react-native-windows/issues/12300) to fix them. This PR adds the right data types and static casts to get rid of the compiler warnings.
## Changelog:
[GENERAL] [FIXED] - Fix windows 4018 and 4244 compiler warnings
Pull Request resolved: https://github.com/facebook/react-native/pull/41254
Test Plan: tested in RNW Repository
Reviewed By: rshest
Differential Revision: D50820705
Pulled By: rozele
fbshipit-source-id: fa61f7ca428d31fc6be56c80215246ee2bdfc67c
Summary:
Starting from Monday, Ruby jobs using Xcode 14.1 started failing on PRs but not on main.
While CircleCI is investigating why this is happening, we found a way to make sure that we can install Ruby even when the cache misses.
## Changelog:
[Internal] - Make sure we can install ruby 3.2.0 when rbenv cache misses.
Pull Request resolved: https://github.com/facebook/react-native/pull/41263
Test Plan: CircleCI is green
Reviewed By: blakef
Differential Revision: D50885897
Pulled By: cipolleschi
fbshipit-source-id: 9a452fd24d779cc14c86c7a8a4e3bf8ec62d0ceb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41280
This is probably just an old Flow artifact?
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D50879201
fbshipit-source-id: da7dec248e8dd50b8e824b09ed8f37294b69ed98
Summary:
This has been fully rolled out internally.
Changelog: [Fixed] Rolls out rounded view rendering improvements introduced in D39979567
Reviewed By: NickGerleman
Differential Revision: D50641814
fbshipit-source-id: 8e4dc470ca8716444c5bd88ae0e76754dc7acf37
Summary:
Instruction to install node on Debiam machine [has changed](https://github.com/nodesource/distributions#new-update-%EF%B8%8F) and the previous script cannot be used anymore.
This change updates it.
## Changelog:
[Internal] - Fix CI
Pull Request resolved: https://github.com/facebook/react-native/pull/41274
Test Plan: CircleCI is green
Reviewed By: rshest
Differential Revision: D50879481
Pulled By: cipolleschi
fbshipit-source-id: a1d2a3b06c42587e168d66746e2ccb2959c0f9e0