mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
0.68-stable
24089 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b97a328257 | [0.68.7] Bump version numbers v0.68.7 | ||
|
|
c3ad8ec7eb |
Use logical operator instead of bit operation
Summary: I guess it's the same since we're working on a `bool` but... this causes some compilation error. Changelog: [General][iOS] - Fix compilation warning in yoga Reviewed By: Andrey-Mishanin Differential Revision: D35438992 fbshipit-source-id: 22bb848dfee435ede66af0a740605d4618585e18 |
||
|
|
558bc335bb | Merge pull request #37084 from facebook/kelset/068-backport-samsung-fixes | ||
|
|
e89f919b92 |
Minimize EditText Spans 8/9: CustomStyleSpan (#36577)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36577 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This change allows us to strip CustomStyleSpan. We already set all but `fontVariant` on the underlying EditText, so we just need to route that through as well. Note that because this span is non-parcelable, it is seemingly not subject to the buggy behavior on Samsung devices of infinitely cloning the spans, but non-parcelable spans have different issues on the devices (they disappear), so moving `fontVariant` to the top-level makes sense here. Changelog: [Android][Fixed] - Minimize EditText Spans 8/N: CustomStyleSpan Reviewed By: javache Differential Revision: D44297384 fbshipit-source-id: ed4c000e961dd456a2a8f4397e27c23a87defb6e |
||
|
|
3b07e7e9be |
Minimize EditText Spans 7/9: Avoid temp list (#36576)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36576 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This change addresses some minor CR feedback and removes the temporary list of spans in favor of applying them directly. Changelog: [Internal] Reviewed By: javache Differential Revision: D44295190 fbshipit-source-id: bd784e2c514301d45d0bacd8ee6de5c512fc565c |
||
|
|
7f1009000b |
Minimize EditText Spans 6/9: letterSpacing (#36548)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36548 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This change lets us set `letterSpacing` on the EditText instead of using our custom span. Changelog: [Android][Fixed] - Minimize EditText Spans 6/N: letterSpacing Reviewed By: rshest Differential Revision: D44240777 fbshipit-source-id: 9bd10c3261257037d8cacf37971011aaa94d1a77 |
||
|
|
54cc78aa05 |
Minimize EditText Spans 5/9: Strikethrough and Underline (#36544)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36544 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This change makes us apply strikethrough and underline as paint flags to the underlying EditText, instead of just the spans. We then opt ReactUnderlineSpan and ReactStrikethroughSpan into being strippable. This does actually create visual behavior changes, where child text will inherit any underline or strikethrough of the root EditText (including if the child specifies `textDecorationLine: "none"`. The new behavior is consistent with both iOS and web though, so it seems like more of a bugfix than a regression. Changelog: [Android][Fixed] - Minimize Spans 5/N: Strikethrough and Underline Reviewed By: rshest Differential Revision: D44240778 fbshipit-source-id: d564dfc0121057a5e3b09bb71b8f5662e28be17e |
||
|
|
b164055130 |
Minimize EditText Spans 4/9: ReactForegroundColorSpan (#36545)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36545 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This adds ReactForegroundColorSpan to the list of spans eligible to be stripped. Changelog: [Android][Fixed] - Minimize Spans 4/N: ReactForegroundColorSpan Reviewed By: javache Differential Revision: D44240780 fbshipit-source-id: d86939cc2d7ed9116a4167026c7d48928fc51757 |
||
|
|
3cdcbe7e72 |
Minimize EditText Spans 3/9: ReactBackgroundColorSpan (#36547)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36547 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This adds `ReactBackgroundColorSpan` to the list of spans eligible to be stripped. Changelog: [Android][Fixed] - Minimize Spans 3/N: ReactBackgroundColorSpan Reviewed By: javache Differential Revision: D44240782 fbshipit-source-id: 2ded1a1687a41cf6d5f83e89ffadd2d932089969 |
||
|
|
485b8ef156 |
Minimize EditText Spans 2/9: Make stripAttributeEquivalentSpans generic (#36546)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36546 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. This change generalizes `stripAttributeEquivalentSpans()` to allow plugging in different spans. Changelog: [Internal] Reviewed By: rshest Differential Revision: D44240781 fbshipit-source-id: 89005266020f216368e9ad9ce382699bd8db85a8 # Conflicts: # ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java |
||
|
|
11755c1d69 |
Minimize EditText Spans 1/9: Fix precedence (#36543)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36543 This is part of a series of changes to minimize the number of spans committed to EditText, as a mitigation for platform issues on Samsung devices. See this [GitHub thread]( https://github.com/facebook/react-native/issues/35936#issuecomment-1411437789) for greater context on the platform behavior. We cache the backing EditText span on text change to later measure. To measure outside of a TextInput we need to restore any spans we removed. Spans may overlap, so base attributes should be behind everything else. The logic here for dealing with precedence is incorrect, and we should instead accomplish this by twiddling with the `SPAN_PRIORITY` bits. Changelog: [Android][Fixed] - Minimize Spans 1/N: Fix precedence Reviewed By: javache Differential Revision: D44240779 fbshipit-source-id: f731b353587888faad946b8cf1e868095cdeced3 |
||
|
|
ccb9366575 |
Fix measurement of uncontrolled TextInput after edit
Summary: D42721684 (https://github.com/facebook/react-native/commit/be69c8b5a77ae60cced1b2af64e48b90d9955be5) left a pretty bad bug when using Fabric for Android. I missed that in Fabric specifically, on edit we will cache the Spannable backing the EditText for use in future measurement. Because we've stripped the sizing spans, Spannable measurement has incorrect font size, and the TextInput size will change (collapsing) after the first edit. This effectively breaks any uncontrolled TextInput which does not have explicit dimensions set. Changelog: [Android][Fixed] - Fix measurement of uncontrolled TextInput after edit Reviewed By: sammy-SC Differential Revision: D43158407 fbshipit-source-id: 51602eab06c9a50e2b60ef0ed87bdb4df025e51e |
||
|
|
87611d4143 | Fix test e2e script (#37081) | ||
|
|
91a3a548e2 | [0.68.6] Bump version numbers v0.68.6 | ||
|
|
2990a1b4b8 |
Mitigation for Samsung TextInput Hangs (#35967)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/35967 In https://github.com/facebook/react-native/issues/35936 we observed that the presence of AbsoluteSizeSpan may lead to hangs when using the Grammarly keyboard on Samsung. This mitigation makes it so that we do not emit this span in any case where it is sufficient to rely on already set EditText textSize. In simple cases, tested on two devices, it causes typing into the TextInput to no longer hang. This does not fully resolve the issue for TextInputs which meaningfully use layout-effecting spans (or at least font size), such as non-uniform text size within the input. We instead just try to reduce to minimum AbsoluteSizeSpan possible. Testing the first commit was able to resolve hangs in some simpler inputs tested, by me and cortinico. Changelog: [Android][Fixed] - Mitigation for Samsung TextInput Hangs Reviewed By: cortinico Differential Revision: D42721684 fbshipit-source-id: e0388dfb4617f0217bc1d0b71752c733e10261dd |
||
|
|
a0ae706fab |
Remove PAT_TOKEN and PAT_USERNAME from CircleCI (#35808)
Summary: This is a cleanup change needed after the CircleCI security incident. We should be using the `Authorization: Bearer` header to trigger `rn-diff-purge` instead of using username & password authentication. Source: https://docs.github.com/rest/reference/repos#create-a-repository-dispatch-event ## Changelog [INTERNAL] - Remove PAT_TOKEN and PAT_USERNAME from CircleCI Pull Request resolved: https://github.com/facebook/react-native/pull/35808 Test Plan: I've tested this locally with: ``` curl -X POST https://api.github.com/repos/react-native-community/rn-diff-purge/dispatches \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: Bearer [...]" \ -d "{\"event_type\": \"publish\", \"client_payload\": { \"version\": \"test.test.test\" }}" ``` and the run was succesfully fired by react-native-bot: https://github.com/react-native-community/rn-diff-purge/actions/runs/3894079133 Reviewed By: lunaleaps Differential Revision: D42456065 Pulled By: cortinico fbshipit-source-id: 475e9ca80760522cc08bad37d85c5af6727922d3 |
||
|
|
0b6e5b4f91 |
Update fingerprint for SSH deploy key (#35791)
Summary: Rotating a private SSH key we had left to rotate. ## Changelog [INTERNAL] - Update fingerprint for SSH deploy key Pull Request resolved: https://github.com/facebook/react-native/pull/35791 Test Plan: n/a Reviewed By: cipolleschi Differential Revision: D42413025 Pulled By: cortinico fbshipit-source-id: 571f304e8cc2dad19c41e5413ed3c7d4c078ba60 # Conflicts: # .circleci/config.yml |
||
|
|
b12a7f9e68 | [0.68.5] Bump version numbers v0.68.5 | ||
|
|
edcb3ca996 | Force dependencies resolution to minor series for 0.68 | ||
|
|
b55518c4bf | [0.68.4] Bump version numbers v0.68.4 | ||
|
|
40a3ae3613 | Bump react-native-codegen to 0.0.18 | ||
|
|
782e0bff4a |
Add support Promise.allSettled out of box (#34544)
Summary: Issue: https://github.com/facebook/react-native/issues/30236 [General] [Added] - Added support `Promise.allSettled` Pull Request resolved: https://github.com/facebook/react-native/pull/34544 Test Plan: Release notes [`promise@8.2.0`](https://github.com/then/promise/releases/tag/8.2.0) ```tsx typeof Promise.allSettled // function ``` Reviewed By: motiz88 Differential Revision: D39170057 Pulled By: jacdebug fbshipit-source-id: 72467285e1ad82510ca8fe3d5f347ec8ae286823 |
||
|
|
e22ed7d676 |
fix: Correctly resolve classes with FindClass(..) (#34533)
Summary: `JNIEnv`'s `FindClass(..)` function takes the classes in the standard `foo/bar/Baz` class specification (unless they're special, like arrays). Specifying them with `Lfoo/bar/Baz;` results in a `ClassNotFoundException` being raised -- which is especially unhelpful when intending to re-throw an exception. The docs for `JNIEnv#FindClass(..)` can be found [here][jnienv]. [jnienv]: https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#:~:text=The%20name%20argument,java/lang/String%22 ## Changelog [Android] [Fixed] - Correctly resolve classes with FindClass(..) Pull Request resolved: https://github.com/facebook/react-native/pull/34533 Test Plan: No exact test plan. However, if an exception is thrown during the rendering process, a fatal `ClassNotFoundException` is raised, rather than having the error be passed up to the `ReactNativeManager`. Fixes: facebook/yoga#1120 Reviewed By: amir-shalem Differential Revision: D39133326 Pulled By: jacdebug fbshipit-source-id: 86283b7d21aed49ed0e9027b2aef85f0108cdf9a |
||
|
|
4575ef516f |
Fix codegen trying to parse .d.ts files (#34439)
Summary: With react-native 0.70-rc.3 and new arch, codegen may fail if it encounters `.d.ts` files because specs may appear to be unused. ## Changelog [General] [Fixed] - Codegen should ignore `.d.ts` files Pull Request resolved: https://github.com/facebook/react-native/pull/34439 Test Plan: See repro in https://github.com/microsoft/react-native-test-app/pull/1052. The build will fail without manually patching this in. If you prefer to use your own test app, try adding [react-native-safe-area-context](https://github.com/th3rdwave/react-native-safe-area-context) as a dependency. Reviewed By: cipolleschi Differential Revision: D38826388 Pulled By: cortinico fbshipit-source-id: eb7c9be2d49286bae86b2428862fbf20f6f32ca5 |
||
|
|
4f7eb6197f |
prevent from publishing dimensions change event when app changes state (#34014)
Summary: This fix solves a problem very well evaluated [here](https://github.com/Expensify/App/issues/2727) as well as this [one](https://github.com/facebook/react-native/issues/29290). The issue is that when the app goes to background, in landscape mode, the RCTDeviceInfo code triggers an orientation change event that did not physically happen. Due to that, we get swapped values returned when going back to the app. I debugged the react-native code, and to me it seems that react native publishes the orientation change event one extra time when switching the state of the app to 'inactive'. Here is what is happening: 1. iPad is in landscape. 2. We move the app to inactive state. 3. Native Code queues portrait orientation change (no such change happened physically), and immediately after it triggers landscape change (same as we had in point 1). 4. We restore the app to active state. 5. The app receives two queued orientation change events, one after another. 6. The quick transition between portrait and landscape happens even though it never went back to portrait. Fresh `react-native init` app repro case can be found here: https://github.com/lbaldy/issue-34014-repro Video presenting the issue (recorded while working on: https://github.com/Expensify/App/issues/2727 ): https://www.youtube.com/watch?v=nFDOml9M8w4 <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [iOS] [Fixed] - Fix the way the orientation events are published, to avoid false publish on orientation change when app changes state to inactive Pull Request resolved: https://github.com/facebook/react-native/pull/34014 Test Plan: 1. Make sure you have a working version of E/App. 2. Open App/src/components/withWindowDimensions.js and update the constructor by changing this line: `this.onDimensionChange = _.debounce(this.onDimensionChange.bind(this), 100);` to `this.onDimensionChange = this.onDimensionChange.bind(this);` 3. Open the NewExpensify.xcodeproj in xCode. 4. Open the RCTDeviceInfo.mm file and replace it's contents with the file from this PR. 5. Select your device of choice (I suggest starting with iPad mini) and run the app though xCode. 6. From this point you can move to the test scenarios described below. Reproduction + Fix test video (Test 1): https://youtu.be/jyzoNHLYHPo Reproduction + Fix test video (Test 2): https://youtu.be/CLimE-Fba-g **Test 1:** 1. Launch app in portrait, open chat - no sidebar visible. 7. Switch to landscape - sidebar shows. 8. Put app to background. 9. Put app back to foreground - make sure the side menu doesn't flicker. **Test 2:** 1. Launch app in portrait, open chat - no sidebar visible. 2. Switch to landscape - sidebar shows. 3. Put app to background. Switch orientation back to portrait. 4. Put app back to foreground - make sure the side menu hides again as it should be in portrait. Reproduction + Fix test video (Test 3, Test 4): https://youtu.be/EJkUUQCiLRg iPad mini test 1 applies. Scenario 2 does not as the screen is too wide in both orientations and iPad pro shows sidebar always. **Test 3:** 1. launch the app. 2. Make sure you're in landscape mode. 3. See split screen with some other app. Make sure the side bar is visible. 4. Play with the size of the view, resize it a bit. When the view shrinks it should hide the sidebar, when it grows it should show it. 10. Move the app to background and back to foreground, please observe there are no flickers. **Test 4:** 1. Launch the app. 2. Make sure you're in landscape mode. 3. Make the multitasking view and make Expensify app a slide over app. 4. Move back to fullscreen/split screen. Make sure the menu is shown accordingly 5. Move the app to background and back to foreground, please observe there are no flickers. Non reg with and without the fix video: https://youtu.be/kuv9in8vtbk Please perform standard smoke tests on transformation changes. Reviewed By: cipolleschi Differential Revision: D37239891 Pulled By: jacdebug fbshipit-source-id: e6090153820e921dcfb0d823e0377abd25225bdf |
||
|
|
36153e2557 | [0.68.3] Bump version numbers v0.68.3 | ||
|
|
d2d244cb8f | [LOCAL] align pods version config with the rest of the repo | ||
|
|
af9225ec5f |
Let's not build reactnativeutilsjni shared library (#34345)
Co-authored-by: Sparsha Saha |
||
|
|
4555fc7865 |
Added additional builder method receiving arguments for using jsc or hermes to correctly decide which DSO to load at app startup. (#33952)
Summary:
The current implementation of **getDefaultJSExecutorFactory** relies solely on try catch to load the correct .so file for jsc or hermes based on the project configuration.
Relying solely on try catch block and loading jsc even when project is using hermes can lead to launch time crashes especially in monorepo architectures and hybrid apps using both native android and react native.
So we can make use of an additional **ReactInstanceManager :: setJsEngineAsHermes** method that accepts a Boolean argument from the host app while building ReactInstanceManager which can tell which library to load at startup in **ReactInstanceManagerBuilder** which will now have an enhanced getDefaultJSExecutorFactory method that will combine the old logic with the new one to load the dso files.
The code snippet in **ReactInstanceManager** for adding a new setter method:
```
/**
* Sets the jsEngine as JSC or HERMES as per the setJsEngineAsHermes call
* Uses the enum {link JSInterpreter}
* param jsEngine
*/
private void setJSEngine(JSInterpreter jsEngine){
this.jsEngine = jsEngine;
}
/**
* Utility setter to set the required JSEngine as HERMES or JSC
* Defaults to OLD_LOGIC if not called by the host app
* param hermesEnabled
* hermesEnabled = true sets the JS Engine as HERMES and JSC otherwise
*/
public ReactInstanceManagerBuilder setJsEngineAsHermes(boolean hermesEnabled){
if(hermesEnabled){
setJSEngine(JSInterpreter.HERMES);
}
else{
setJSEngine(JSInterpreter.JSC);
}
return this;
}
```
The code snippet for the new logic in **ReactInstanceManagerBuilder**:
1) Setting up the new logic:
Adding a new enum class :
```
public enum JSInterpreter {
OLD_LOGIC,
JSC,
HERMES
}
```
A setter getting boolean value telling whether to use hermes or not and calling a private setter to update the enum variable.
```
/**
* Sets the jsEngine as JSC or HERMES as per the setJsEngineAsHermes call
* Uses the enum {link JSInterpreter}
* param jsEngine
*/
private void setJSEngine(JSInterpreter jsEngine){
this.jsEngine = jsEngine;
}
/**
* Utility setter to set the required JSEngine as HERMES or JSC
* Defaults to OLD_LOGIC if not called by the host app
* param hermesEnabled
* hermesEnabled = true sets the JS Engine as HERMES and JSC otherwise
*/
public ReactInstanceManagerBuilder setJsEngineAsHermes(boolean hermesEnabled){
if(hermesEnabled){
setJSEngine(JSInterpreter.HERMES);
}
else{
setJSEngine(JSInterpreter.JSC);
}
return this;
}
```
2) Modifying the getDefaultJSExecutorFactory method to incorporate the new logic with the old one:
```
private JavaScriptExecutorFactory getDefaultJSExecutorFactory(
String appName, String deviceName, Context applicationContext) {
// Relying solely on try catch block and loading jsc even when
// project is using hermes can lead to launch-time crashes especially in
// monorepo architectures and hybrid apps using both native android
// and react native.
// So we can use the value of enableHermes received by the constructor
// to decide which library to load at launch
// if nothing is specified, use old loading method
// else load the required engine
if (jsEngine == JSInterpreter.OLD_LOGIC) {
try {
// If JSC is included, use it as normal
initializeSoLoaderIfNecessary(applicationContext);
JSCExecutor.loadLibrary();
return new JSCExecutorFactory(appName, deviceName);
} catch (UnsatisfiedLinkError jscE) {
if (jscE.getMessage().contains("__cxa_bad_typeid")) {
throw jscE;
}
HermesExecutor.loadLibrary();
return new HermesExecutorFactory();
}
} else if (jsEngine == JSInterpreter.HERMES) {
HermesExecutor.loadLibrary();
return new HermesExecutorFactory();
} else {
JSCExecutor.loadLibrary();
return new JSCExecutorFactory(appName, deviceName);
}
}
```
### **Suggested changes in any Android App's MainApplication that extends ReactApplication to take advantage of this fix**
```
builder = ReactInstanceManager.builder()
.setApplication(this)
.setJsEngineAsHermes(BuildConfig.HERMES_ENABLED)
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
```
where HERMES_ENABLED is a buildConfigField based on the enableHermes flag in build.gradle:
`def enableHermes = project.ext.react.get("enableHermes", true)
`
and then
```
defaultConfig{
if(enableHermes) {
buildConfigField("boolean", "HERMES_ENABLED", "true")
}
else{
buildConfigField("boolean", "HERMES_ENABLED", "false")
}
}
```
Our app was facing a similar issue as listed in this list: **https://github.com/facebook/react-native/issues?q=is%3Aissue+is%3Aopen+DSO**. Which was react-native trying to load jsc even when our project used hermes when a debug build was deployed on a device using android studio play button.
This change can possibly solve many of the issues listed in the list as it solved ours.
## Changelog
[GENERAL] [ADDED] - An enum JSInterpreter in com.facebook.react package:
```
/**
* An enum that specifies the JS Engine to be used in the app
* Old Logic uses the legacy code
* JSC/HERMES loads the respective engine using the revamped logic
*/
public enum JSInterpreter {
OLD_LOGIC,
JSC,
HERMES
}
```
[GENERAL] [ADDED] - An enum variable storing the default value of Js Engine loading mechanism in ReactInstanceManagerBuilder:
```
private JSInterpreter jsEngine = JSInterpreter.OLD_LOGIC;
```
[GENERAL] [ADDED] - A new setter method and a helper method to set the js engine in ReactInstanceManagerBuilder:
```
/**
* Sets the jsEngine as JSC or HERMES as per the setJsEngineAsHermes call
* Uses the enum {link JSInterpreter}
* param jsEngine
*/
private void setJSEngine(JSInterpreter jsEngine){
this.jsEngine = jsEngine;
}
/**
* Utility setter to set the required JSEngine as HERMES or JSC
* Defaults to OLD_LOGIC if not called by the host app
* param hermesEnabled
* hermesEnabled = true sets the JS Engine as HERMES and JSC otherwise
*/
public ReactInstanceManagerBuilder setJsEngineAsHermes(boolean hermesEnabled){
if(hermesEnabled){
setJSEngine(JSInterpreter.HERMES);
}
else{
setJSEngine(JSInterpreter.JSC);
}
return this;
}
```
[GENERAL] [ADDED] - Modified **getDefaultJSExecutorFactory** method
```
private JavaScriptExecutorFactory getDefaultJSExecutorFactory(
String appName, String deviceName, Context applicationContext) {
// Relying solely on try catch block and loading jsc even when
// project is using hermes can lead to launch-time crashes especially in
// monorepo architectures and hybrid apps using both native android
// and react native.
// So we can use the value of enableHermes received by the constructor
// to decide which library to load at launch
// if nothing is specified, use old loading method
// else load the required engine
if (jsEngine == JSInterpreter.OLD_LOGIC) {
try {
// If JSC is included, use it as normal
initializeSoLoaderIfNecessary(applicationContext);
JSCExecutor.loadLibrary();
return new JSCExecutorFactory(appName, deviceName);
} catch (UnsatisfiedLinkError jscE) {
if (jscE.getMessage().contains("__cxa_bad_typeid")) {
throw jscE;
}
HermesExecutor.loadLibrary();
return new HermesExecutorFactory();
}
} else if (jsEngine == JSInterpreter.HERMES) {
HermesExecutor.loadLibrary();
return new HermesExecutorFactory();
} else {
JSCExecutor.loadLibrary();
return new JSCExecutorFactory(appName, deviceName);
}
}
```
Pull Request resolved: https://github.com/facebook/react-native/pull/33952
Test Plan:
The testing for this change might be tricky but can be done by following the reproduction steps in the issues related to DSO loading here: https://github.com/facebook/react-native/issues?q=is%3Aissue+is%3Aopen+DSO
Generally, the app will not crash anymore on deploying debug using android studio if we are removing libjsc and its related libraries in **packagingOptions** in build.gradle and using hermes in the project.
It can be like:
```
packagingOptions {
if (enableHermes) {
exclude "**/libjsc*.so"
}
}
```
Reviewed By: lunaleaps
Differential Revision: D37191981
Pulled By: cortinico
fbshipit-source-id: c528ead126939f1d788af7523f3798ed2a14f36e
|
||
|
|
989546f97e |
Use monotonic clock for performance.now() (#33983)
Summary: In https://github.com/facebook/react-native/pull/32695, the `Performance.now()` implementation changed to use unix epoch timestamps instead of a monotonic clock. This is problematic, because it means that performance measurements get skewed if the device clock changes between two measurements. With this change, the clock is now monotonic (and the implementation stays consistent between platforms). More details and repro steps can be found in [this issue](https://github.com/facebook/react-native/issues/33977) Closes https://github.com/facebook/react-native/issues/33977 ## Changelog [General] [Fixed] - Use monotonic clock for performance.now() Pull Request resolved: https://github.com/facebook/react-native/pull/33983 Test Plan: Run on iOS and Android: ``` const now = global.performance.now() console.log(`${Platform.OS}: ${now}`) ``` Reviewed By: JoshuaGross, cipolleschi Differential Revision: D37066999 Pulled By: dmitryrykun fbshipit-source-id: 298547bf39faea1b025c17ff2d2e1a03f929865b |
||
|
|
ec3688f95a |
Logging a soft error when ReactRootView has an id other than -1 instead of crashing the app in hybrid apps. (#33133)
Summary: As per commit: https://github.com/facebook/react-native/commit/4f3b17412018a10f9293247c802598d2b94a844b which states that "React Native requires that the RootView id be managed entirely by React Native, and will crash in addRootView/startSurface if the native View id isn't set to NO_ID." This behaviour can not be guaranteed in **hybrid** apps that have a native android layer over which ReactRootViews are added and the native views need to have ids on them in order to work. **The control of views can jump back and forth between native android and react-native (fabric). As the ReactRootView is added to ViewGroups (or layouts) in Android Fragments and Activities, they contain ids on their views which might get passed down to the reactRootView by features like DataBinding** Hence this can cause unnecessary crashes at runtime for hybrid apps even when they are not changing the id of the reactRootView object they are adding to their ViewGroups. Our app is a hybrid app that uses both native android and react-native on different screens and on one such screen that has a Fragment adding a ReactRootView to its FrameLayout to render native android views to render in ReactNative, this crash occurs on pressing the back button as well as on unlocking the screen while staying on the same screen. The app was running fine on more than a 100 million devices on React Native 0.63.4 but after updating to 0.67.2, that features this commit, it crashes on the very first device it was tested on. Refer to the issue: https://github.com/facebook/react-native/issues/33121 for more information on the crash The fragment in which this issues arises is like this: ```binding.frameLayout.addView(getReactRootView())``` where getReactRootView() is like this: ``` private var mReactRootView: ReactRootView? = null private var mReactInstanceManager: ReactInstanceManager? = null mReactRootView = ReactRootView(context) if (activity != null) { val application = activity?.application if (application is MainApplication) { mReactInstanceManager = application.reactInstanceManager } } fun getReactRootView():View?{ return mReactRootView } ``` So converting this to a soft exception such that pure react-native devs can still see the error while hybrid apps continue to run without crashes. ### Snippet of the change: ``` if (getId() != View.NO_ID) { ReactSoftExceptionLogger.logSoftException( TAG, new IllegalViewOperationException( "Trying to attach a ReactRootView with an explicit id already set to [" + getId() + "]. React Native uses the id field to track react tags and will overwrite this" + " field. If that is fine, explicitly overwrite the id field to View.NO_ID.")); } ``` ## Changelog [GENERAL] [ADDED] - A ReactSoftException log instead of a direct exception being thrown: ``` if (getId() != View.NO_ID) { ReactSoftExceptionLogger.logSoftException( TAG, new IllegalViewOperationException( "Trying to attach a ReactRootView with an explicit id already set to [" + getId() + "]. React Native uses the id field to track react tags and will overwrite this" + " field. If that is fine, explicitly overwrite the id field to View.NO_ID.")); } ``` [GENERAL] [REMOVED]- Directly throwing an exception even when the code is not responsible for this issue: ``` if (getId() != View.NO_ID) { throw new IllegalViewOperationException( "Trying to attach a ReactRootView with an explicit id already set to [" + getId() + "]. React Native uses the id field to track react tags and will overwrite this" + " field. If that is fine, explicitly overwrite the id field to View.NO_ID."); } ``` Pull Request resolved: https://github.com/facebook/react-native/pull/33133 Test Plan: This crash is hard to reproduce but when it occurs, this is the only way to fix it. If any app used to crash with this exact error, it will no longer crash but show an error log in Logcat for developers to be informed about the issue. Reviewed By: ShikaSD Differential Revision: D34304212 Pulled By: cortinico fbshipit-source-id: f0eaeef2e905a6e0587df088b43cc49cabda397a |
||
|
|
25e2cbb441 | [LOCAL] change ruby version for source | ||
|
|
1fad3af37c |
Update script from prepublish (deprecated) to prepack (#34198)
Summary: Currently `react-native-codegen` uses `prepublish` to pre-build before publishing. Moving to `prepare` as `prepublish` is deprecated and not invoked anymore: https://docs.npmjs.com/cli/v8/using-npm/scripts#life-cycle-scripts ## Changelog [Internal][Fixed] - [codegen] Update script from prepublish (deprecated) to prepack Pull Request resolved: https://github.com/facebook/react-native/pull/34198 Test Plan: Tested locally with: ``` cd packages/react-native-codegen/ && rm -rf lib && npm publish --dry-run --foreground-scripts ``` output is: ``` > react-native-codegen@0.70.1 prepare > yarn run build yarn run v1.22.18 $ yarn clean && node scripts/build.js --verbose $ rm -rf lib react-native-codegen........................................................... • src/__tests__/__snapshots__/SchemaValidator-test.js.snap (ignore) • src/__tests__/SchemaValidator-test.js (ignore) • src/cli/combine/combine-js-to-schema-cli.js ⇒ lib/cli/combine/combine-js-to-schema-cli.js • src/cli/combine/combine-js-to-schema.js ⇒ lib/cli/combine/combine-js-to-schema.js • src/cli/generators/generate-all.js ⇒ lib/cli/generators/generate-all.js • src/cli/parser/parser-cli.js ⇒ lib/cli/parser/parser-cli.js • src/cli/parser/parser.js ⇒ lib/cli/parser/parser.js • src/cli/parser/parser.sh ⇒ lib/cli/parser/parser.sh (copy) • src/CodegenSchema.js ⇒ lib/CodegenSchema.js • src/generators/__test_fixtures__/fixtures.js ⇒ lib/generators/__test_fixtures__/fixtures.js • src/generators/__tests__/RNCodegen-test.js (ignore) • src/generators/components/__test_fixtures__/fixtures.js ⇒ lib/generators/components/__test_fixtures__/fixtures.js • src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorH-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateEventEmitterCpp-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateEventEmitterH-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GeneratePropsJavaPojo-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateShadowNodeCpp-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateTests-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderH-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderObjCpp-test.js.snap (ignore) • src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap (ignore) • src/generators/components/__tests__/GenerateComponentDescriptorH-test.js (ignore) • src/generators/components/__tests__/GenerateComponentHObjCpp-test.js (ignore) • src/generators/components/__tests__/GenerateEventEmitterCpp-test.js (ignore) • src/generators/components/__tests__/GenerateEventEmitterH-test.js (ignore) • src/generators/components/__tests__/GeneratePropsCpp-test.js (ignore) • src/generators/components/__tests__/GeneratePropsH-test.js (ignore) • src/generators/components/__tests__/GeneratePropsJavaDelegate-test.js (ignore) • src/generators/components/__tests__/GeneratePropsJavaInterface-test.js (ignore) • src/generators/components/__tests__/GeneratePropsJavaPojo-test.js (ignore) • src/generators/components/__tests__/GenerateShadowNodeCpp-test.js (ignore) • src/generators/components/__tests__/GenerateShadowNodeH-test.js (ignore) • src/generators/components/__tests__/GenerateTests-test.js (ignore) • src/generators/components/__tests__/GenerateThirdPartyFabricComponentsProviderH-test.js (ignore) • src/generators/components/__tests__/GenerateThirdPartyFabricComponentsProviderObjCpp-test.js (ignore) • src/generators/components/__tests__/GenerateViewConfigJs-test.js (ignore) • src/generators/components/CppHelpers.js ⇒ lib/generators/components/CppHelpers.js • src/generators/components/GenerateComponentDescriptorH.js ⇒ lib/generators/components/GenerateComponentDescriptorH.js • src/generators/components/GenerateComponentHObjCpp.js ⇒ lib/generators/components/GenerateComponentHObjCpp.js • src/generators/components/GenerateEventEmitterCpp.js ⇒ lib/generators/components/GenerateEventEmitterCpp.js • src/generators/components/GenerateEventEmitterH.js ⇒ lib/generators/components/GenerateEventEmitterH.js • src/generators/components/GeneratePropsCpp.js ⇒ lib/generators/components/GeneratePropsCpp.js • src/generators/components/GeneratePropsH.js ⇒ lib/generators/components/GeneratePropsH.js • src/generators/components/GeneratePropsJavaDelegate.js ⇒ lib/generators/components/GeneratePropsJavaDelegate.js • src/generators/components/GeneratePropsJavaInterface.js ⇒ lib/generators/components/GeneratePropsJavaInterface.js • src/generators/components/GeneratePropsJavaPojo/index.js ⇒ lib/generators/components/GeneratePropsJavaPojo/index.js • src/generators/components/GeneratePropsJavaPojo/PojoCollector.js ⇒ lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js • src/generators/components/GeneratePropsJavaPojo/serializePojo.js ⇒ lib/generators/components/GeneratePropsJavaPojo/serializePojo.js • src/generators/components/GenerateShadowNodeCpp.js ⇒ lib/generators/components/GenerateShadowNodeCpp.js • src/generators/components/GenerateShadowNodeH.js ⇒ lib/generators/components/GenerateShadowNodeH.js • src/generators/components/GenerateTests.js ⇒ lib/generators/components/GenerateTests.js • src/generators/components/GenerateThirdPartyFabricComponentsProviderH.js ⇒ lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js • src/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js ⇒ lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js • src/generators/components/GenerateViewConfigJs.js ⇒ lib/generators/components/GenerateViewConfigJs.js • src/generators/components/JavaHelpers.js ⇒ lib/generators/components/JavaHelpers.js • src/generators/modules/__test_fixtures__/fixtures.js ⇒ lib/generators/modules/__test_fixtures__/fixtures.js • src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap (ignore) • src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap (ignore) • src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap (ignore) • src/generators/modules/__tests__/__snapshots__/GenerateModuleJavaSpec-test.js.snap (ignore) • src/generators/modules/__tests__/__snapshots__/GenerateModuleJniCpp-test.js.snap (ignore) • src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap (ignore) • src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap (ignore) • src/generators/modules/__tests__/GenerateModuleCpp-test.js (ignore) • src/generators/modules/__tests__/GenerateModuleH-test.js (ignore) • src/generators/modules/__tests__/GenerateModuleHObjCpp-test.js (ignore) • src/generators/modules/__tests__/GenerateModuleJavaSpec-test.js (ignore) • src/generators/modules/__tests__/GenerateModuleJniCpp-test.js (ignore) • src/generators/modules/__tests__/GenerateModuleJniH-test.js (ignore) • src/generators/modules/__tests__/GenerateModuleMm-test.js (ignore) • src/generators/modules/GenerateModuleCpp.js ⇒ lib/generators/modules/GenerateModuleCpp.js • src/generators/modules/GenerateModuleH.js ⇒ lib/generators/modules/GenerateModuleH.js • src/generators/modules/GenerateModuleJavaSpec.js ⇒ lib/generators/modules/GenerateModuleJavaSpec.js • src/generators/modules/GenerateModuleJniCpp.js ⇒ lib/generators/modules/GenerateModuleJniCpp.js • src/generators/modules/GenerateModuleJniH.js ⇒ lib/generators/modules/GenerateModuleJniH.js • src/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js ⇒ lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js • src/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js ⇒ lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js • src/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js ⇒ lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js • src/generators/modules/GenerateModuleObjCpp/index.js ⇒ lib/generators/modules/GenerateModuleObjCpp/index.js • src/generators/modules/GenerateModuleObjCpp/serializeMethod.js ⇒ lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js • src/generators/modules/GenerateModuleObjCpp/source/serializeModule.js ⇒ lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js • src/generators/modules/GenerateModuleObjCpp/StructCollector.js ⇒ lib/generators/modules/GenerateModuleObjCpp/StructCollector.js • src/generators/modules/GenerateModuleObjCpp/Utils.js ⇒ lib/generators/modules/GenerateModuleObjCpp/Utils.js • src/generators/modules/Utils.js ⇒ lib/generators/modules/Utils.js • src/generators/RNCodegen.js ⇒ lib/generators/RNCodegen.js • src/generators/Utils.js ⇒ lib/generators/Utils.js • src/parsers/flow/components/__test_fixtures__/failures.js ⇒ lib/parsers/flow/components/__test_fixtures__/failures.js • src/parsers/flow/components/__test_fixtures__/fixtures.js ⇒ lib/parsers/flow/components/__test_fixtures__/fixtures.js • src/parsers/flow/components/__tests__/__snapshots__/component-parser-test.js.snap (ignore) • src/parsers/flow/components/__tests__/component-parser-test.js (ignore) • src/parsers/flow/components/commands.js ⇒ lib/parsers/flow/components/commands.js • src/parsers/flow/components/events.js ⇒ lib/parsers/flow/components/events.js • src/parsers/flow/components/extends.js ⇒ lib/parsers/flow/components/extends.js • src/parsers/flow/components/index.js ⇒ lib/parsers/flow/components/index.js • src/parsers/flow/components/options.js ⇒ lib/parsers/flow/components/options.js • src/parsers/flow/components/props.js ⇒ lib/parsers/flow/components/props.js • src/parsers/flow/components/schema.js ⇒ lib/parsers/flow/components/schema.js • src/parsers/flow/errors.js ⇒ lib/parsers/flow/errors.js • src/parsers/flow/index.js ⇒ lib/parsers/flow/index.js • src/parsers/flow/modules/__test_fixtures__/failures.js ⇒ lib/parsers/flow/modules/__test_fixtures__/failures.js • src/parsers/flow/modules/__test_fixtures__/fixtures.js ⇒ lib/parsers/flow/modules/__test_fixtures__/fixtures.js • src/parsers/flow/modules/__tests__/__snapshots__/module-parser-snapshot-test.js.snap (ignore) • src/parsers/flow/modules/__tests__/module-parser-e2e-test.js (ignore) • src/parsers/flow/modules/__tests__/module-parser-snapshot-test.js (ignore) • src/parsers/flow/modules/errors.js ⇒ lib/parsers/flow/modules/errors.js • src/parsers/flow/modules/index.js ⇒ lib/parsers/flow/modules/index.js • src/parsers/flow/modules/schema.js ⇒ lib/parsers/flow/modules/schema.js • src/parsers/flow/modules/utils.js ⇒ lib/parsers/flow/modules/utils.js • src/parsers/flow/utils.js ⇒ lib/parsers/flow/utils.js • src/parsers/schema/index.js ⇒ lib/parsers/schema/index.js • src/parsers/typescript/components/__test_fixtures__/failures.js ⇒ lib/parsers/typescript/components/__test_fixtures__/failures.js • src/parsers/typescript/components/__test_fixtures__/fixtures.js ⇒ lib/parsers/typescript/components/__test_fixtures__/fixtures.js • src/parsers/typescript/components/__tests__/__snapshots__/typescript-component-parser-test.js.snap (ignore) • src/parsers/typescript/components/__tests__/typescript-component-parser-test.js (ignore) • src/parsers/typescript/components/commands.js ⇒ lib/parsers/typescript/components/commands.js • src/parsers/typescript/components/events.js ⇒ lib/parsers/typescript/components/events.js • src/parsers/typescript/components/extends.js ⇒ lib/parsers/typescript/components/extends.js • src/parsers/typescript/components/index.js ⇒ lib/parsers/typescript/components/index.js • src/parsers/typescript/components/options.js ⇒ lib/parsers/typescript/components/options.js • src/parsers/typescript/components/props.js ⇒ lib/parsers/typescript/components/props.js • src/parsers/typescript/components/schema.js ⇒ lib/parsers/typescript/components/schema.js • src/parsers/typescript/errors.js ⇒ lib/parsers/typescript/errors.js • src/parsers/typescript/index.js ⇒ lib/parsers/typescript/index.js • src/parsers/typescript/modules/__test_fixtures__/failures.js ⇒ lib/parsers/typescript/modules/__test_fixtures__/failures.js • src/parsers/typescript/modules/__test_fixtures__/fixtures.js ⇒ lib/parsers/typescript/modules/__test_fixtures__/fixtures.js • src/parsers/typescript/modules/__tests__/__snapshots__/typescript-module-parser-snapshot-test.js.snap (ignore) • src/parsers/typescript/modules/__tests__/typescript-module-parser-e2e-test.js (ignore) • src/parsers/typescript/modules/__tests__/typescript-module-parser-snapshot-test.js (ignore) • src/parsers/typescript/modules/errors.js ⇒ lib/parsers/typescript/modules/errors.js • src/parsers/typescript/modules/index.js ⇒ lib/parsers/typescript/modules/index.js • src/parsers/typescript/modules/schema.js ⇒ lib/parsers/typescript/modules/schema.js • src/parsers/typescript/modules/utils.js ⇒ lib/parsers/typescript/modules/utils.js • src/parsers/typescript/utils.js ⇒ lib/parsers/typescript/utils.js • src/SchemaValidator.js ⇒ lib/SchemaValidator.js [ OK ] ✨ Done in 2.27s. npm notice npm notice 📦 react-native-codegen@0.70.1 npm notice === Tarball Contents === npm notice 383B README.md npm notice 3.2kB lib/cli/combine/combine-js-to-schema-cli.js npm notice 1.8kB lib/cli/combine/combine-js-to-schema-cli.js.flow npm notice 2.5kB lib/cli/combine/combine-js-to-schema.js npm notice 1.3kB lib/cli/combine/combine-js-to-schema.js.flow npm notice 1.5kB lib/cli/generators/generate-all.js npm notice 1.4kB lib/cli/generators/generate-all.js.flow npm notice 1.7kB lib/cli/parser/parser-cli.js npm notice 386B lib/cli/parser/parser-cli.js.flow npm notice 777B lib/cli/parser/parser.js npm notice 811B lib/cli/parser/parser.js.flow npm notice 483B lib/cli/parser/parser.sh npm notice 222B lib/CodegenSchema.js npm notice 8.8kB lib/CodegenSchema.js.flow npm notice 1.8kB lib/generators/__test_fixtures__/fixtures.js npm notice 1.9kB lib/generators/__test_fixtures__/fixtures.js.flow npm notice 43.6kB lib/generators/components/__test_fixtures__/fixtures.js npm notice 44.0kB lib/generators/components/__test_fixtures__/fixtures.js.flow npm notice 5.7kB lib/generators/components/CppHelpers.js npm notice 6.4kB lib/generators/components/CppHelpers.js.flow npm notice 2.0kB lib/generators/components/GenerateComponentDescriptorH.js npm notice 2.3kB lib/generators/components/GenerateComponentDescriptorH.js.flow npm notice 9.3kB lib/generators/components/GenerateComponentHObjCpp.js npm notice 10.3kB lib/generators/components/GenerateComponentHObjCpp.js.flow npm notice 6.3kB lib/generators/components/GenerateEventEmitterCpp.js npm notice 7.2kB lib/generators/components/GenerateEventEmitterCpp.js.flow npm notice 6.5kB lib/generators/components/GenerateEventEmitterH.js npm notice 7.4kB lib/generators/components/GenerateEventEmitterH.js.flow npm notice 4.0kB lib/generators/components/GeneratePropsCpp.js npm notice 4.3kB lib/generators/components/GeneratePropsCpp.js.flow npm notice 23.4kB lib/generators/components/GeneratePropsH.js npm notice 26.1kB lib/generators/components/GeneratePropsH.js.flow npm notice 9.4kB lib/generators/components/GeneratePropsJavaDelegate.js npm notice 10.0kB lib/generators/components/GeneratePropsJavaDelegate.js.flow npm notice 7.1kB lib/generators/components/GeneratePropsJavaInterface.js npm notice 7.8kB lib/generators/components/GeneratePropsJavaInterface.js.flow npm notice 2.0kB lib/generators/components/GeneratePropsJavaPojo/index.js npm notice 2.1kB lib/generators/components/GeneratePropsJavaPojo/index.js.flow npm notice 4.0kB lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js npm notice 4.7kB lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow npm notice 7.2kB lib/generators/components/GeneratePropsJavaPojo/serializePojo.js npm notice 7.5kB lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow npm notice 2.0kB lib/generators/components/GenerateShadowNodeCpp.js npm notice 2.2kB lib/generators/components/GenerateShadowNodeCpp.js.flow npm notice 2.8kB lib/generators/components/GenerateShadowNodeH.js npm notice 3.1kB lib/generators/components/GenerateShadowNodeH.js.flow npm notice 5.3kB lib/generators/components/GenerateTests.js npm notice 5.9kB lib/generators/components/GenerateTests.js.flow npm notice 2.5kB lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js npm notice 2.7kB lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow npm notice 2.6kB lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js npm notice 2.8kB lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow npm notice 13.4kB lib/generators/components/GenerateViewConfigJs.js npm notice 14.0kB lib/generators/components/GenerateViewConfigJs.js.flow npm notice 2.7kB lib/generators/components/JavaHelpers.js npm notice 3.2kB lib/generators/components/JavaHelpers.js.flow npm notice 47.0kB lib/generators/modules/__test_fixtures__/fixtures.js npm notice 47.2kB lib/generators/modules/__test_fixtures__/fixtures.js.flow npm notice 8.4kB lib/generators/modules/GenerateModuleCpp.js npm notice 7.3kB lib/generators/modules/GenerateModuleCpp.js.flow npm notice 8.5kB lib/generators/modules/GenerateModuleH.js npm notice 7.0kB lib/generators/modules/GenerateModuleH.js.flow npm notice 16.8kB lib/generators/modules/GenerateModuleJavaSpec.js npm notice 15.6kB lib/generators/modules/GenerateModuleJavaSpec.js.flow npm notice 14.9kB lib/generators/modules/GenerateModuleJniCpp.js npm notice 13.9kB lib/generators/modules/GenerateModuleJniCpp.js.flow npm notice 4.7kB lib/generators/modules/GenerateModuleJniH.js npm notice 4.9kB lib/generators/modules/GenerateModuleJniH.js.flow npm notice 9.5kB lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js npm notice 7.9kB lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow npm notice 9.1kB lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js npm notice 7.6kB lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow npm notice 720B lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js npm notice 836B lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js.flow npm notice 6.4kB lib/generators/modules/GenerateModuleObjCpp/index.js npm notice 6.6kB lib/generators/modules/GenerateModuleObjCpp/index.js.flow npm notice 14.6kB lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js npm notice 13.1kB lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow npm notice 2.9kB lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js npm notice 3.6kB lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow npm notice 6.8kB lib/generators/modules/GenerateModuleObjCpp/StructCollector.js npm notice 5.4kB lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow npm notice 549B lib/generators/modules/GenerateModuleObjCpp/Utils.js npm notice 673B lib/generators/modules/GenerateModuleObjCpp/Utils.js.flow npm notice 848B lib/generators/modules/Utils.js npm notice 1.3kB lib/generators/modules/Utils.js.flow npm notice 7.1kB lib/generators/RNCodegen.js npm notice 8.4kB lib/generators/RNCodegen.js.flow npm notice 647B lib/generators/Utils.js npm notice 700B lib/generators/Utils.js.flow npm notice 14.1kB lib/parsers/flow/components/__test_fixtures__/failures.js npm notice 14.1kB lib/parsers/flow/components/__test_fixtures__/failures.js.flow npm notice 27.8kB lib/parsers/flow/components/__test_fixtures__/fixtures.js npm notice 27.9kB lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow npm notice 2.6kB lib/parsers/flow/components/commands.js npm notice 2.9kB lib/parsers/flow/components/commands.js.flow npm notice 6.2kB lib/parsers/flow/components/events.js npm notice 6.6kB lib/parsers/flow/components/events.js.flow npm notice 1.2kB lib/parsers/flow/components/extends.js npm notice 1.6kB lib/parsers/flow/components/extends.js.flow npm notice 8.1kB lib/parsers/flow/components/index.js npm notice 6.5kB lib/parsers/flow/components/index.js.flow npm notice 1.8kB lib/parsers/flow/components/options.js npm notice 2.1kB lib/parsers/flow/components/options.js.flow npm notice 13.1kB lib/parsers/flow/components/props.js npm notice 13.8kB lib/parsers/flow/components/props.js.flow npm notice 2.1kB lib/parsers/flow/components/schema.js npm notice 1.3kB lib/parsers/flow/components/schema.js.flow npm notice 738B lib/parsers/flow/errors.js npm notice 849B lib/parsers/flow/errors.js.flow npm notice 5.7kB lib/parsers/flow/index.js npm notice 3.7kB lib/parsers/flow/index.js.flow npm notice 5.3kB lib/parsers/flow/modules/__test_fixtures__/failures.js npm notice 5.4kB lib/parsers/flow/modules/__test_fixtures__/failures.js.flow npm notice 15.4kB lib/parsers/flow/modules/__test_fixtures__/fixtures.js npm notice 15.4kB lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow npm notice 8.6kB lib/parsers/flow/modules/errors.js npm notice 9.5kB lib/parsers/flow/modules/errors.js.flow npm notice 25.7kB lib/parsers/flow/modules/index.js npm notice 21.8kB lib/parsers/flow/modules/index.js.flow npm notice 416B lib/parsers/flow/modules/schema.js npm notice 557B lib/parsers/flow/modules/schema.js.flow npm notice 595B lib/parsers/flow/modules/utils.js npm notice 830B lib/parsers/flow/modules/utils.js.flow npm notice 4.4kB lib/parsers/flow/utils.js npm notice 5.1kB lib/parsers/flow/utils.js.flow npm notice 428B lib/parsers/schema/index.js npm notice 526B lib/parsers/schema/index.js.flow npm notice 12.9kB lib/parsers/typescript/components/__test_fixtures__/failures.js npm notice 13.0kB lib/parsers/typescript/components/__test_fixtures__/failures.js.flow npm notice 28.1kB lib/parsers/typescript/components/__test_fixtures__/fixtures.js npm notice 28.1kB lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow npm notice 3.1kB lib/parsers/typescript/components/commands.js npm notice 3.0kB lib/parsers/typescript/components/commands.js.flow npm notice 7.0kB lib/parsers/typescript/components/events.js npm notice 7.4kB lib/parsers/typescript/components/events.js.flow npm notice 1.3kB lib/parsers/typescript/components/extends.js npm notice 1.6kB lib/parsers/typescript/components/extends.js.flow npm notice 8.2kB lib/parsers/typescript/components/index.js npm notice 6.6kB lib/parsers/typescript/components/index.js.flow npm notice 1.8kB lib/parsers/typescript/components/options.js npm notice 2.1kB lib/parsers/typescript/components/options.js.flow npm notice 19.4kB lib/parsers/typescript/components/props.js npm notice 18.0kB lib/parsers/typescript/components/props.js.flow npm notice 2.1kB lib/parsers/typescript/components/schema.js npm notice 1.3kB lib/parsers/typescript/components/schema.js.flow npm notice 738B lib/parsers/typescript/errors.js npm notice 849B lib/parsers/typescript/errors.js.flow npm notice 5.8kB lib/parsers/typescript/index.js npm notice 3.9kB lib/parsers/typescript/index.js.flow npm notice 4.7kB lib/parsers/typescript/modules/__test_fixtures__/failures.js npm notice 4.7kB lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow npm notice 18.8kB lib/parsers/typescript/modules/__test_fixtures__/fixtures.js npm notice 18.8kB lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow npm notice 8.6kB lib/parsers/typescript/modules/errors.js npm notice 9.5kB lib/parsers/typescript/modules/errors.js.flow npm notice 26.8kB lib/parsers/typescript/modules/index.js npm notice 22.9kB lib/parsers/typescript/modules/index.js.flow npm notice 416B lib/parsers/typescript/modules/schema.js npm notice 557B lib/parsers/typescript/modules/schema.js.flow npm notice 595B lib/parsers/typescript/modules/utils.js npm notice 830B lib/parsers/typescript/modules/utils.js.flow npm notice 4.6kB lib/parsers/typescript/utils.js npm notice 5.3kB lib/parsers/typescript/utils.js.flow npm notice 1.4kB lib/SchemaValidator.js npm notice 1.6kB lib/SchemaValidator.js.flow npm notice 1.4kB package.json npm notice === Tarball Details === npm notice name: react-native-codegen npm notice version: 0.70.1 npm notice filename: react-native-codegen-0.70.1.tgz npm notice package size: 168.4 kB npm notice unpacked size: 1.3 MB npm notice shasum: 10bf591db802342bd5ac38352821ad6452ba4b52 npm notice integrity: sha512-KXRXARscSO4mt[...]WCnuO5sLFEYQg== npm notice total files: 167 npm notice + react-native-codegen@0.70.1 ``` Reviewed By: dmitryrykun Differential Revision: D37851965 Pulled By: cortinico fbshipit-source-id: 4d8c80831691e5f671c234bc3a1678ccb7435ff4 |
||
|
|
72e1eda073 | [0.68.2] Bump version numbers v0.68.2 | ||
|
|
dfda480a98 | Bump used version of react-native-codegen to 0.0.17 | ||
|
|
a5ddc2e165 | Bump react-native-codegen to 0.0.17 | ||
|
|
62ef6f5fa1 |
[Main][Windows] Working around Long paths limitation on Windows (#33707)
Co-authored-by: Aleš Pergl <alespergl@users.noreply.github.com> Co-authored-by: Ales Pergl <alpergl@microsoft.com> |
||
|
|
b5f1b26a8f | [0.68.1] Bump version numbers v0.68.1 | ||
|
|
48113b5635 |
Merge pull request #33628 from fortmarek/fix/yarn-lock-gradle-plugin
Update yarn.lock with the new react-native-gradle-plugin version |
||
|
|
faaf2560cd | Update yarn.lock with the new react-native-gradle-plugin version | ||
|
|
387ee70e72 |
Use NDK 23 only for Windows users. (#33611)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33611 Bumping the NDK to 23 to prevent build failures due to the NDK using longer paths. Changelog: [Android] [Fixed] - Use NDK 23 only for Windows users. Reviewed By: motiz88 Differential Revision: D35547459 fbshipit-source-id: 4e44c0b5fd8d1c559b04fb43eb4eeadc13943394 |
||
|
|
3fd3fe04da |
react-native-gradle-plugin should not depend on react-native-codegen NPM package
Summary: This adds an unnecessary dependency between two NPM package which can be avoided. See https://github.com/reactwg/react-native-releases/discussions/17#discussioncomment-2452813 for context. Changelog: [Internal] [Changed] - react-native-gradle-plugin should not depend on react-native-codegen NPM package Reviewed By: dmitryrykun Differential Revision: D35279729 fbshipit-source-id: f18f79809f115f28203ac0a843fafead63528904 |
||
|
|
fdd7848454 |
Replaced windowsAwareYarn with windowsAwareCommandLine for node calls (#33530)
Summary: It is not necessary to call node via yarn. Instead with this commit node is called directly (windows aware). This enables builds on systems that don't have yarn installed. Fixes https://github.com/facebook/react-native/issues/33525 ## Changelog [Android] [Fixed] - Don't require yarn for codegen tasks Pull Request resolved: https://github.com/facebook/react-native/pull/33530 Test Plan: 1. react-native init test 2. cd test 3. enable newArchEnabled=true (gradle.properties) 4. enable enableHermes: true (build.gradle) 5. react-native run-android (when the yarn is not installed on the system) (I have not tested or verified if this works on windows build machines) Reviewed By: sshic Differential Revision: D35279376 Pulled By: cortinico fbshipit-source-id: 430e4a7bcdec7d5377efac747f6b935d634451cc |
||
|
|
1f48b7b0a2 |
Bump React Native Gradle plugin to 0.0.6 (#33581)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33581 We currently have some code on the RN Gradle Plugin that we need to ship. There are both bugfixes needed for RN 0.68.1 and for the current nightly (therefore needed for RN 0.69). I've verified that this works on a fresh RN 0.68.0 install with `npm pack` and triggering a build on a fresh setup from app template, with newArchEnabled set to true. Changelog: [Android] [Changed] - Bump React Native Gradle plugin to 0.0.6 Reviewed By: rubennorte Differential Revision: D35439444 fbshipit-source-id: 662b2211c44b261e3e3c9cddc946107cfb495c79 |
||
|
|
6268836c74 |
Improve support for Android users on M1 machine (#33588)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33588 Currently users on M1 machine can't use the New Architecture correctly as they will get build failures when building the native code. This Diff fixes it by automatically recognizing the host architecture and switching to NDK 24 if user is runnign on `aarch64` Changelog: [Android] [Fixed] - Improve support for Android users on M1 machine Reviewed By: mdvacca Differential Revision: D35468252 fbshipit-source-id: b73f5262b9408f04f3ae4fd26458a4d17c1ec29a |
||
|
|
9efcaffe17 |
Pin use-subscription to < 1.6.0 (#33541)
Summary: Starting with 1.6.0 this package relies on react 18 which is currently not supported by rn See https://github.com/facebook/react/blob/main/packages/use-subscription/package.json#L18 Fixes https://github.com/facebook/react-native/issues/33540 ## Changelog [General] [Fixed] - Pin use-subscription to < 1.6.0 Pull Request resolved: https://github.com/facebook/react-native/pull/33541 Test Plan: Run `yarn` in the following directories: `xplat/js/RKJSModules` `xplat/js/react-native-github` (Identified from jest test) `xplat/js/public` (Identified from yarn-validate) `js1 build buckfiles` (From diff signals) Reviewed By: yungsters Differential Revision: D35333789 Pulled By: ryancat fbshipit-source-id: bdb6232ccd2c5cece397f781609af2de7d36c5ff |
||
|
|
8400590abe |
Template: Specify abiFilters if enableSeparateBuildPerCPUArchitecture is not set.
Summary: As users can toggle `enableSeparateBuildPerCPUArchitecture` to create a split APK, once that is off, the `-PreactNativeArchitecture` is not correctly considered when building the local module. This will make sure that, if users have `enableSeparateBuildPerCPUArchitecture` set to `false`, their app is building the local `app_modules` only for the requested architectures. Practically, users invoking with `--active-arch-only` might experience a build failure if they have a fully clean environment (would be forced to do a full build before using `--active-arch-only`). This addresses this scenario. Changelog: [Android] [Fixed] - Template: Specify abiFilters if enableSeparateBuildPerCPUArchitecture is not set. Reviewed By: ShikaSD Differential Revision: D35250700 fbshipit-source-id: 4e555888636cf182495fab2b4a562d93a70b9e66 |
||
|
|
a5c44e622e |
Fix dynamic_cast (RTTI) by adding key function to ShadowNodeWrapper and related classes (#33500)
Summary: This PR fixes RTTI (run-time type information) for ShadowNodeWrapper and ShadowNodeListWrapper classes, i.e., calls to dynamic_cast and dynamic_pointer_cast that are called via JSI's getHostObject calls. The fix is simply to add a so-called "key function" in a form of virtual destructor. Key functions needs to be a virtual non-pure and non-inlined functions that points the compiler as to which library contains the vtable/type information for a given class (see https://itanium-cxx-abi.github.io/cxx-abi/abi.html#vague-vtable and https://developer.android.com/ndk/guides/common-problems#rttiexceptions_not_working_across_library_boundaries) Without the "key function", calls to dynamic_cast for ShadowNodeWrapper instances won't work across library boundaries because the class will have separate definitions in each separate library, therefore objects created in one of those libraries won't be recognized as the same type by the other library. This has been a problem in reanimated and gesture-handler libraries where we call `object.getHostObject<ShadowNodeWrapper>(rt)` (this is a method from JSI) in order to access ShadowNode instance from a handle we have in JS. I think, this issue is going to be relevant to more libraries that cope with view instances. In this scenario, we have a separate library, say "libreanimated.so" that calls to `getHostObject` which is an inline function that calls `dynamic_cast` for the `ShadowNodeWrapper` class. On the other hand, the instances of `ShadowNodeWrapper` are created by the code from `libreact_render_uimanager.so`. Because of that `dynamic_cast` fails even though it is called on instance of `ShadowNodeWrapper` because the class has separate vtable/type info: one in `libreanimated.so` and one in `libreact_render_uimanager.so` (by "fails" I mean that it actually returns `nullptr`). This problem has been documented here: https://developer.android.com/ndk/guides/common-problems#rttiexceptions_not_working_across_library_boundaries where the solution is for the class to have a so-called "key function". The key function makes it so that compiler sees that one of the implementation for a given class is missing and therefore can safely assume that a vtable/type info for a given class is embedded into some library we link to. This change adds a virtual destructor that is declared in the header file but defined in file that gets compiled as a part of `libreact_render_uimanager`. As a result, the compiler only creates one vtable/type info and calls to dynamic_cast works as expected in all libraries for `ShadowNodeWrapper` and `ShadowNodeListWrapper` classes. This issue would only surface on Android, because on iOS all libraries by default are bundled together via Pods, whereas on Android each library is loaded separately using dynamic loading. ## Changelog [Fabric][Android specific] - Fix dynamic_cast (RTTI) for ShadowNodeWrapper and similar classes when accessed by third-party libraries. Pull Request resolved: https://github.com/facebook/react-native/pull/33500 Test Plan: 1. In order to test this you need to add a library that'd include `<react/renderer/uimanager/primitives.h>` (i.e. use this branch of reanimated library: https://github.com/software-mansion/react-native-reanimated/tree/fabric) 2. After compiling the app inspect libreact_render_uimanager.so and libreanimated.so artifacts with `nm` tool 3. Notice that symbols like `vtable for facebook::react::ShadowNodeWrapper` and `typeinfo for facebook::react::ShadowNodeWrapper` are only present in the former and not in the latter library (before this change you'd see them both) Reviewed By: ShikaSD Differential Revision: D35143600 Pulled By: javache fbshipit-source-id: 5fb25a02365b99a515edc81e5485a77017c56eb8 |
||
|
|
44ee801c29 |
Merge pull request #33582 from mganandraj/NewArchWinBuild
Building new architecture sources on Windows |
||
|
|
5a8033df98 |
Fix for building new architecture sources on Windows
On Windows there are limits on number of character in file paths and in command lines Ref: https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#Path-Length-Limits NDK allows circumventing command line limits using response(RSP) files as inputs using NDK_APP_SHORT_COMMANDS flag. Windows can support long file paths if configured through registry or by prefixing all file paths with a special character sequence The latter requires changes in NDK. And there are tools in NDK (AR) which is not able to handle long paths (>256) even after setting the registry key. The new architecutre source tree is too deep, and the object file naming conventions in NDK makes the matters worse, by producing incredibly long file paths. Other solutions such as symlinking source code etc. didn't work as expected, and makes the build scripts complicated and hard to manage. This change temporarily works around the issue by placing the temporary build outputs as short a path as possible within the project path. Changelog: [Android] [Fixed] - Fix for building new architecture sources on Windows |