Commit Graph
3243 Commits
Author SHA1 Message Date
Nicola Corti 0645c38014 [0.64.4] Bump version numbers 2022-11-07 00:07:42 +00:00
Lorenzo Sciandra eef9542c66 Revert "[0.64.4] Bump version numbers"
This reverts commit 172301a3ee.
2022-11-06 23:45:17 +00:00
Nicola Corti 172301a3ee [0.64.4] Bump version numbers 2022-11-06 23:37:18 +00:00
Luna Wei 98b804a09f [0.64.3] Bump version numbers 2021-11-04 14:10:33 -07:00
Brent KellyandLuna Wei fc5cf54d6d Addressing various issues with the Appearance API (#28823) (#29106)
Summary:
This PR fixes a few issues with the Appearance API (as noted here https://github.com/facebook/react-native/issues/28823).

1. For the Appearance API to work correctly on Android you need to call `AppearanceModule.onConfigurationChanged` when the current Activity goes through a configuration change. This was being called in the RNTester app but not in `ReactActivity` so it meant the Appearance API wouldn't work for Android in newly generated RN projects (or ones upgraded to the latest version of RN).

2. The Appearance API wasn't working correctly for brownfield scenarios on Android. It's possible to force an app light or dark natively on Android by calling `AppCompatDelegate.setDefaultNightMode()`. The Appearance API wasn't picking up changes from this function because it was using the Application context instead of the current Activity context.

3. The Appearance API wasn't working correctly for brownfield scenarios on iOS. Just like on Android its possible to force an app light or dark natively by setting `window.overrideUserInterfaceStyle`. The Appearance API didn't work with this override because we were overwriting `_currentColorScheme` back to default as soon as we set it.

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

### Fixed

https://github.com/facebook/react-native/issues/28823

* [Android] [Fixed] - Appearance API now works on Android
* [Android] [Fixed] - Appearance API now works correctly when calling `AppCompatDelegate.setDefaultNightMode()`
* [iOS] [Fixed] - Appearance API now works correctly when setting `window.overrideUserInterfaceStyle`

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

Test Plan: Ran RNTester on iOS and Android and verified the Appearance examples still worked [correctly.](url)

Reviewed By: hramos

Differential Revision: D31284331

Pulled By: sota000

fbshipit-source-id: 45bbe33983e506eb177d596d33ddf15f846708fd
2021-11-04 12:36:17 -07:00
Lorenzo Sciandra 757bb75fbf [0.64.2] Bump version numbers 2021-06-03 18:18:33 +01:00
Lorenzo Sciandra f7ce3f0d85 [LOCAL] auto-generated files 2021-06-03 16:11:55 +01:00
Lorenzo Sciandra 787567a150 [0.64.1] Bump version numbers 2021-05-05 10:44:53 +01:00
Mike Grabowski ace025d2cb [0.64.0] Bump version numbers 2021-03-12 19:21:31 +01:00
Mike Grabowski 138fdbceda fix: restore refresh control fix 2021-03-11 21:43:02 +01:00
Janic DuplessisandMike Grabowski 7f3f80fc94 Fix RefreshControl layout when removed from window (#31024)
Summary:
Since iOS 14 refresh control is sometimes visible when it shouldn't. It seems to happen when it is removed and added back to the window. This repros easily when using react-native-screens with react-navigation tabs. Inactive tabs are detached from the window to save resources.

Calling endRefreshing when refresh control is added to the window fixes the layout. It will also be called on first mount where it is not necessary, but should be a no-op and didn't cause any issues. I also decided to call it for all ios versions, although it is only needed on iOS 14+ to avoid forking behavior more.

## Changelog

[iOS] [Fixed] - Fix RefreshControl layout when removed from window

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

Test Plan:
Before:

https://user-images.githubusercontent.com/2677334/108666197-93ea5a80-74a4-11eb-839b-8a4916967bf8.mov

After:

https://user-images.githubusercontent.com/2677334/108666223-9ea4ef80-74a4-11eb-8489-4e5d257299c8.mov

Reviewed By: shergin

Differential Revision: D26590759

Pulled By: PeteTheHeat

fbshipit-source-id: b8c06068a24446b261cbeb88ff166289724031f1
2021-03-11 21:39:22 +01:00
Mike Grabowski 1aa4f47e2f [0.64.0-rc.4] Bump version numbers 2021-03-01 20:37:57 +01:00
Mike Grabowski 14db556963 fix: React Native CodeGen integration for 0.64-stable (#31027) 2021-03-01 14:15:26 +01:00
Mike Grabowski e846740d38 [0.64.0-rc.3] Bump version numbers 2021-02-05 22:36:37 +01:00
Janic DuplessisandMike Grabowski 5ada078578 Make codegen more reliable on iOS (#30792)
Summary:
This addesses a few issues I noticed while migrating my app to the new build-time codegen on iOS.

1. I noticed random failures because of codegen on iOS. This is mostly due to the fact the codegen output files are not specified in the xcode script. The only reason it works relatively fine currently is because the codegen output is inside the input files directory. This has the side effect of causing files to be regenerated every build, then causes all core modules to be recompiled which adds up a significant amount of time to rebuilds. To fix this I added the generated files to the script phase output and moved the FBReactNativeSpec dir outside of the codegen source (Libraries). I moved it to the React directory as this seemed to make sense and is where a lot of iOS files are as well as the core modules. Note this might require internal changes. This removes the circular dependency between our build phase input and output so consecutive builds can be cached properly.

2. Add `set -o pipefail` to the xcode script, this helped propagate errors properly to xcode because of the `| tee` pipe so it fails at the script phase and not later with a header not found error. Also add `2>&1` to pipe stderr to stdout so errors are also captured in the log file.

3. Add the `-l` flag to the bash invocation to help finding the yarn binary. With my setup yarn is added to the system PATH in my user .profile. Adding this file will cause bash to source the user environment which xcode scripts does not by default. I think this will help with most setups.

4. If yarn is not found the `command -v yarn` would make the script exit without any output because of the -e flag. I made a change to ignore the return code and check later if YARN_BINARY is set and have an explicit error message if not.

[iOS] [Fixed] - Make codegen more reliable on iOS

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

Test Plan:
Tested various project states to make sure the build always succeeds in RN tester:

- Simulate fresh clone, remove all ignored files, install pods, build
- Build, delete FBReactNativeSpec generated files, build again
- Build, build again, make sure FBReactNativeSpec is cached and not rebuilt
- Make the script fail and check that xcode shows the script error logs properly

![image](https://user-images.githubusercontent.com/2677334/105891571-c8badd00-5fde-11eb-839c-259d8e448523.png)

Note: Did not test fabric

Reviewed By: fkgozali

Differential Revision: D26104213

Pulled By: hramos

fbshipit-source-id: e18d9a0b9ada7c0c2e608d29ffe88087f04605b4
2021-02-02 20:56:46 +01:00
empyricalandMike Grabowski 224c85a0ba Update iOS Fabric-related files to compile on OSS (#29810)
Summary:
Original PR contents:

This pull request updates the Podspecs and associated build scripts, and some source files so they build on OSS. RNTester now compiles with `fabric_enabled` again.

The following changes have been made:

 * Various spots that were pointing to the old `ReactCommon/fabric` location have now been updated to `ReactCommon/react/renderer`
 * Files that were attempting to use internal FB header `FBRCTFabricComponentsPlugins.h` were changed to use `RCTFabricComponentsPlugins.h`
 * `RCTFabricComponentsPlugins` in OSS was updated to include the `Image` fabric component (thanks tsapeta)
 * Replaced old `generate-rncore.sh` build script with new `generate-rncore.js` script which does not require `flow-node` and uses the `react-native-codegen` API directly, so there is no longer any need for an interim `schema-rncore.json` file.
 * Updated Yoga podspec which wasn't fully synced with changes from the main Yoga repo
 * Updated Fabric podspec with additional needed subspecs

Additions to PR by hramos:
* Replaced use of generate-rncore scripts with the original generate-native-modules-specs.sh script, which is now generate-specs.sh and supports both codegen for Native Modules and Components now (TurboModules/Fabric).
* Codegen now runs at build time as part of the Xcode build pipeline instead of as part of `pod install`. The build script is injected by the FBReactNativeSpec pod, as the pod is part of both Fabric and non-Fabric builds.

[General] [Fixed] - RNTester compiles with `fabric_enabled` again

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

Test Plan:
RNTester now compiles and runs in the simulator again when `fabric_enabled` is set to `true`.

```
cd xplat/js/react-native-github/packages/rn-tester
USE_FABRIC=1 pod install
open RNTesterPods.xcworkspace
```

Reviewed By: fkgozali

Differential Revision: D24058507

Pulled By: hramos

fbshipit-source-id: 8b2ea3694e6cb9aa23f83f087e2995fd4320e2bb
2021-02-01 16:35:21 +01:00
Mike Grabowski 1eb7d4aef7 [0.64.0-rc.2] Bump version numbers 2020-12-18 18:01:59 +01:00
Koichi NagaokaandMike Grabowski a99676ed6c Fix cannot working Modal's onDismiss. (#29882)
Summary:
Fixes: https://github.com/facebook/react-native/issues/29455

Modal's onDismiss is not called on iOS.
This issue occurred the commit https://github.com/facebook/react-native/commit/bd2b7d6c0366b5f19de56b71cb706a0af4b0be43 and was fixed the commit https://github.com/facebook/react-native/commit/27a3248a3b37410b5ee6dda421ae00fa485b525c.
However, the master and stable-0.63 branches do not have this modified commit applied to them.

## Changelog

<!-- 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] - Modal's onDismiss prop will now be called successfully.

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

Test Plan:
Tested on iOS with this change:

1. Set function Modal's onDismiss prop.
1. Set Modal's visible props is true. (show Modal)
1. Set Modal's visible props is false. (close Modal)
1. The set function in onDismiss is called.

Reviewed By: shergin

Differential Revision: D24648412

Pulled By: hramos

fbshipit-source-id: acf28fef21420117c845d3aed97e47b5dd4e9390
2020-12-01 17:11:26 +01:00
grabbou d197e95893 [0.64.0-rc.1] Bump version numbers 2020-11-25 12:48:36 +01:00
Mike Grabowski 0117077b95 [0.64.0-rc.0] Bump version numbers 2020-11-23 16:41:42 +01:00
Luke WalczakandMike Grabowski 017dc45c62 Add possibility to disable buttons in action sheet ios (#28979)
Summary:
_**Fixed**_ version of [the previous PR](https://github.com/facebook/react-native/pull/28792) after reverting [changes](https://github.com/facebook/react-native/commit/c8d678abcf93fd3f6daf4bebfdf25937995c1fdf#commitcomment-39299254)

----

I've noticed that currently there is no option to disable button within the `ActionSheetIOS`. It can be really useful and decided to extend the API to support that functionality.

I added a new option called `disabledButtonsIndices` to `ActionSheetIOS` which is an array of button indices which should be disabled.

`ActionSheetIOS` documentation - PR https://github.com/facebook/react-native-website/pull/1898

## Changelog

[iOS] [Added] - Add disableButtonsIndices option to ActionSheetIOS component

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

Test Plan:
1. Run the `RNTester`
2. Choose `ActionSheetIOS`
3. Check the fourth example `Show Action Sheet with disabled buttons`
4. `Option 1` and `Option 2` should be disabled

screenshot | gif
 --- | ---
<img width="493" alt="Screenshot 2020-04-30 at 15 16 22" src="https://user-images.githubusercontent.com/22746080/80739025-1ec52780-8b16-11ea-8b1c-30bb40ad8c99.png"> | <img src="https://user-images.githubusercontent.com/22746080/80739043-24227200-8b16-11ea-8bcb-af25eb57baac.gif" width="493" />

Reviewed By: sammy-SC

Differential Revision: D21727497

Pulled By: PeteTheHeat

fbshipit-source-id: 749b6c623eb8a44fe2bd96829ce89be5310e2368
2020-11-23 13:34:14 +01:00
Mike GrabowskiandFacebook GitHub Bot c95ee5ac18 feat: Enable Hermes to work on iOS (#29914)
Summary:
This PR makes it possible to build iOS applications with Hermes. Note that it doesn't work with `use_frameworks!` just yet.

Fixes https://github.com/facebook/react-native/issues/27845 (by downgrading iOS deployment target for RCT-Folly to 9.0)
Fixes https://github.com/facebook/react-native/issues/28810 (as above)

Checklist:
- [x] Adjust release scripts to create Hermes bytecode bundle
- [x] Release new Hermes npm package that includes iOS files (unreleased right now, if you want to try locally, you have to clone Hermes and `yarn link` its master to this project)
- [x] Test on a new React Native application in both Debug and Release (Device)
- [x] Test on an RNTester application in both Debug and Release (Device)
- [x] Add missing `i386` to Hermes framework and enable Bitcode
- [x] Inspect CI failures for possible regressions
- [x] Resolve Folly issue as reported https://github.com/facebook/react-native/issues/27845 and https://github.com/facebook/react-native/issues/28810
- [x] Release new Hermes and test against it that everything works

## Changelog

[IOS] [FEATURE] - Enable Hermes on iOS
[INTERNAL] - Upgrade to CocoaPods 1.10.0 to resolve Xcode 12.0 issues
[INTERNAL] - Upgrade to Xcode 12.0 on the CircleCI
[INTERNAL] - Fix building RNTester in Release mode
[INTERNAL] - Fix build-time errors of `libevent` with `use_frameworks!`
[INTERNAL] - Introduce `USE_HERMES` variable and test all RNTester configurations on the CI
[INTERNAL] - Do not fetch CocoaPods repository since we're using CDN anyway

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

Test Plan:
Turn on `hermes_enabled` to true in your `Podfile`, install pods, and run the iOS application. Your app should be running Hermes now.

Preview: (note "Engine: Hermes")

<img width="395" alt="Screenshot 2020-09-09 at 19 22 32" src="https://user-images.githubusercontent.com/2464966/92631584-d7c01d80-f2d1-11ea-9b40-33d73db96a53.png">

Reviewed By: hramos

Differential Revision: D24684845

Pulled By: cpojer

fbshipit-source-id: 900cbe3bf9398a6fd4a773d552899a001bf5146b
2020-11-03 01:14:38 -08:00
Valentin SherginandFacebook GitHub Bot 97d6f2e6a9 Fabric: touchesShouldCancelInContentView now always returns YES
Summary:
Historically, `UIScrollView`s in React Native do not cancel touches started on `UIControl`-based views (as normal iOS `UIScrollView`s do).
This diff implements this behavior.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: JoshuaGross

Differential Revision: D24661106

fbshipit-source-id: 1fb98d62f9e1528f11e7699d460aaefcec534e97
2020-10-31 16:23:29 -07:00
Valentin SherginandFacebook GitHub Bot d7b3daa643 Fabric: Removing RCTExperimentSetSyncPerformanceFlag
Summary:
Cleaning up an old experiment, it was `static true` for a couple of months already.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: JoshuaGross

Differential Revision: D24642808

fbshipit-source-id: 50ba955490d848a9c1698e1c6d0c296e833386f3
2020-10-30 15:45:21 -07:00
Peter ArganyandFacebook GitHub Bot 192e821fbd Hook up logTaggedMarkerWithInstanceKey to performance logger [2/n]
Summary:
This re-uses the same logic as `logTaggedMarker` for `logTaggedMarkerWithInstanceKey`. When no instanceKey specified, use 0.

Changelog: [Internal]

Differential Revision: D24607919

fbshipit-source-id: 4a29e5ece9a5462eb1163185d26370ee873f1412
2020-10-30 14:05:11 -07:00
Peter ArganyandFacebook GitHub Bot 4308f9f835 Add new ReactMarkers for bridgeless mode [1/n]
Summary:
These are new markers that will be placed around initializing an RCTInstance.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D24607905

fbshipit-source-id: 8e83a2476e2ae878c523217aeb5a3b4bfc5bf911
2020-10-30 14:05:11 -07:00
Samuel SuslaandFacebook GitHub Bot 0217c14a11 Implement ScrollView.keyboardDismissMode
Summary: Changelog: [internal]

Reviewed By: shergin

Differential Revision: D24648120

fbshipit-source-id: 718be95dc87217fa6745535a3760ec23cc390444
2020-10-30 08:51:33 -07:00
Samuel SuslaandFacebook GitHub Bot 96ecad4341 Trigger garbage collection when the app receive memory warning
Summary:
Changelog: [internal]

The condition inside `[RCTCxxBridge handleMemoryWarning]` was preventing JS VM from handling memory pressure if React Native was loading. This seems incorrect as loading only occurs once at the startup but memory pressure event occurs mostly after React Native was initialised. Therefore, JS VM wasn't handling memory pressure events.

Reviewed By: shergin

Differential Revision: D24646724

fbshipit-source-id: 7b4420fe675261e434c3427c8ad366ba0086a453
2020-10-30 08:18:58 -07:00
Peter ArganyandFacebook GitHub Bot ab21d7320e Fix crash in RCTEventEmitter
Summary:
According to the crash, RCTEventEmitter is being asked to emit events before RN is set up {emoji:1f928}. Neither the bridge, nor bridgeless mode is ready to send events.

In this scenario, drop the events on the floor instead of crashing.
Changelog: [Internal]

Reviewed By: naftaly

Differential Revision: D24634701

fbshipit-source-id: 933e5dfd15e5ee7c2215489305c71de46e78a9e5
2020-10-29 22:07:09 -07:00
Valentin SherginandFacebook GitHub Bot aead26dddd Fabric: Assert if props in updateProps:oldProps: is nullptr
Summary: Just an assert.

Reviewed By: JoshuaGross

Differential Revision: D24600634

fbshipit-source-id: 0be765d79bc71b232f559c6f821444f37462feef
2020-10-28 19:40:16 -07:00
Samuel SuslaandFacebook GitHub Bot 07d090dbc6 Implement ScrollView.scrollToOverflowEnabled
Summary:
Changelog: [internal]

Add missing implementation of [scrollToOverflowEnabled](https://reactnative.dev/docs/scrollview#scrolltooverflowenabled).

Reviewed By: JoshuaGross

Differential Revision: D24536893

fbshipit-source-id: a540b9b5b302404cc0a431f666bba269da849c50
2020-10-28 06:44:38 -07:00
Kevin GozaliandFacebook GitHub Bot e9116519c8 Codegen iOS: use the codegen target from Libraries just like for Android
Summary:
To unify with Android, this uses the target off the same BUCK file.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D24522269

fbshipit-source-id: 5aa0c08962890b884081faeb1ec801aebec9c2dd
2020-10-26 22:02:05 -07:00
Samuel SuslaandFacebook GitHub Bot 41c788a2b4 Make sure opacity and transform are applied in native animation
Summary:
Changelog: [internal]

Problem:

`props.transform` gets out of sync with `self.layer.transform`.

To avoid writing out value of transform matrix, in the follow example I will only consider identity matrix and non-identity matrix. It is sufficient to demonstrate the point.

1. View is reused with transform being something besides identity. This causes `props.transform` and `self.layer.transform` to be non-identity.
2. View is taken from pool and animated with transform set to non-identity.
3. React JS props arrive and set `view.props` to identity but `self.layer.transform` stays unchanged because it is managed by native animation. This is the point where `props.transform` and `self.layer.transform` get out of sync.
4. Native animation wants to set transform to identity to finish the animation. But inside `[RCTViewComponentView updateProps:oldProps:]` `self.layer.transform` does not get set because current `view.props` is already identity.

Solution:
After native animation layer calls `[RCTViewComponentView updateProps:oldProps:]`, verify that values were set. If they weren't, set them directly without depending on `[RCTViewComponentView updateProps:oldProps:]`.

Reviewed By: JoshuaGross

Differential Revision: D24538442

fbshipit-source-id: ba8c59c5c9bb751306118bd1c7f0ccd9d0fb7fba
2020-10-26 15:39:24 -07:00
Samuel SuslaandFacebook GitHub Bot e75a0dc265 Force scroll event inside scrollViewDidEndScrollingAnimation and scrollTo
Summary:
Changelog: [internal]

`onScroll` event needs to be fired when scroll view ends the scrolling animation and when scrollTo is called.
This is how Paper does it and client code might depend on it.

Reviewed By: JoshuaGross

Differential Revision: D24527189

fbshipit-source-id: bdec099f16b3d8c97686975a1f769db4d2c0d832
2020-10-24 12:02:08 -07:00
Samuel SuslaandFacebook GitHub Bot 1d1cbc93c2 Prevent ScrollTo view command from scrolling outside of content view
Summary:
Changelog: [internal]

ScrollTo command needs to clamp the value in order to not scroll out of content view of scroll view. Paper does the same thing.

Reviewed By: JoshuaGross

Differential Revision: D24526992

fbshipit-source-id: 47c48ecb01f4ae40791306016dd7847079263128
2020-10-24 12:02:07 -07:00
Samuel SuslaandFacebook GitHub Bot ae418b83c0 Fix crash when blurring image
Summary:
Changelog: [internal]

Copy `blurRadius` into a variable instead of accessing it through a reference which might not exist when the block is dispatched.

Reviewed By: cpojer

Differential Revision: D24472850

fbshipit-source-id: 936ef671255ae0e825e1d2dfda9649824b63d297
2020-10-22 01:48:55 -07:00
Héctor RamosandFacebook GitHub Bot 9218e0c2e6 iOS: Generate FBReactNativeSpec ObjC++ files at build time
Summary:
Removes the generated FBReactNativeSpec files from source control.

## Generating FBReactNativeSpec files

The files will be generated automatically by CocoaPods when the `RNTesterPods` Xcode workspace is generated:

```
cd packages/rn-tester
pod install
```

The spec files can be re-generated by invoking the script directly:
```
./scripts/generate-native-modules-specs.sh
```

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D24261167

fbshipit-source-id: acb7ac856e5e519932e4f587f79e24f49cd84a91
2020-10-21 20:47:09 -07:00
Samuel SuslaandFacebook GitHub Bot 5333ad8a61 Add unit tests for RCTComponentViewRegistry
Summary:
Changelog: [internal]

Adds unit tests for `RCTComponentViewRegistry`.

Reviewed By: shergin

Differential Revision: D24391419

fbshipit-source-id: e8adb641361c3e1394f652a1819f196d2402f493
2020-10-21 10:49:43 -07:00
Samuel SuslaandFacebook GitHub Bot 36b0f7d19b Fix controller <TextInput> on iOS when inputting in Chinese/japanese
Summary:
Changelog: [internal]

Solution copied over from https://github.com/facebook/react-native/commit/892212bad2daadd373f4be241e4cd9889b0a1005#diff-0874427511e8753d0037472fffbe6d7ee014d831e254d4b3c12ffb1dd8ce27c9

Reviewed By: JoshuaGross

Differential Revision: D24429166

fbshipit-source-id: 3c0588ac774041a9fd6d1b6685d94c5658f754b2
2020-10-20 15:56:56 -07:00
Valentin SherginandFacebook GitHub Bot c642afd97d Fabric: Making _propKeysManagedByAnimated to preserve previous prop keys
Summary:
The previous implementation always replaced the prop set on every props update coming from Animated. Now, we merge the new set of props with the previous one.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D24370751

fbshipit-source-id: 779272d47c776cc42071d3c93d06443b6c96a877
2020-10-19 19:21:22 -07:00
Valentin SherginandFacebook GitHub Bot 28e9528c4d Fabric: QE for Preemptive views allocation feature
Summary:
Fabric has a feature that preallocates views before mounting even need them. We never tested the impact of this feature thought. This diff adds a way to enable/disable it and run an experiment.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: JoshuaGross

Differential Revision: D24355612

fbshipit-source-id: fefd653e57232044cd7b28b160e12a4ef85dbb8b
2020-10-16 17:56:58 -07:00
Keion AnvaripourandFacebook GitHub Bot 34c405462f Add HERMES_BYTECODE_VERSION to JS bundle requestUrl
Summary:
Changelog:
[General][Added] - Adds the Hermes runtime bytecode version number to the JS bundle requestURL. This allows Metro with Bytecode to work with prebuilt binaries.

Reviewed By: cpojer

Differential Revision: D24327852

fbshipit-source-id: e8ee8db4f9b01f0500ab9dd851b5818c4adf3303
2020-10-16 16:39:43 -07:00
Valentin SherginandFacebook GitHub Bot fe8cd5cf3e Fabric: Lazy initialization of RCTSurfaceTouchHandler on the main thread
Summary:
RCTSurfaceTouchHandler is not a thread-safe object and must be used (and initialized) on the main thread. Therefore we need to move the initialization to `view` method which is guaranteed to be called on the main thread.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D24290776

fbshipit-source-id: fc1f2f157599aff6fca053451f89bf7cca3c812a
2020-10-15 10:47:11 -07:00
Ramanpreet NaraandFacebook GitHub Bot 5a57a538c9 Split NativeAsyncStorage into NativeAsyncLocalStorage and NativeAsyncSQLiteDBStorage
Summary:
Although the interface for both NativeModules is the same, we'd like to enforce 1 `TurboModuleRegistry.get` call per NativeModule spec file. Therefore this diff splits the one spec into two.

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D24325260

fbshipit-source-id: f18718e4235b7b8ccbfc44a7e48571ecf483a36c
2020-10-15 08:49:28 -07:00
Ramanpreet NaraandFacebook GitHub Bot 82187bfb6b Dispatch events even when there are no listeners
Summary:
## Rationale
For every 1 call to RCTNetworking.sendRequest, we execute 6 calls to RCTNetworking.addListener. This is followed by at least one call to RCTNetworking.removeListeners. Aside from incrementing and decrementing the `_listeners` integer, these two methods accomplish nothing else: RCTNetworking doesn't implement the `startObserving` and `stopObserving` methods.

This diff makes RCTEventEmitter dispatch events without looking at the listeners integer. In the future, this will allow us to stop making these ~8 unnecessary NativeModule calls for every Network request we send.

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D24272560

fbshipit-source-id: 7996eba5abfa4669a89c43a3ffa536c0faa214a8
2020-10-14 21:05:38 -07:00
Lulu WuandFacebook GitHub Bot ea93151f21 Make RCTEventDispatcher TurboModule-compatible
Summary:
This diff ended up being a bit more complicated than I anticipated, since the source files in `ReactInternal` were depending on `RCTEventDispatcher`. I made the following changes:
1. Make `RCTEventDispatcher` a `protocol`, keep it in `ReactInternal`.
2. Rename the `RCTEventDispatcher` NativeModule to `RCTEventDispatcherModule`, make it conform to the `RCTEventEmitter` `protocol`, and move it to `CoreModules`.
3. Where necessary, replace categories of `RCTEventDispatcher` with functions.

Changelog:
[iOS][Added] - Make RCTEventDispatcher TurboModule-comaptible

Reviewed By: fkgozali

Differential Revision: D18439488

fbshipit-source-id: b3da15c29459fddf884519f33b0c3b8c036b5539
2020-10-14 02:40:10 -07:00
Scott KyleandFacebook GitHub Bot 42d232901c Fix ASAN crash in RCTMessageThread
Summary:
This should fix a race condition uncovered by ASAN build that results in `m_shutdown` being referenced after destruction.

This mirrors a similar fix made in react-native-macos: https://github.com/microsoft/react-native-macos/commit/ea7767a211e5d1e5b18171c79404553b712539c7

Changelog: [Internal]

Reviewed By: shergin

Differential Revision: D24263156

fbshipit-source-id: 5fb1e7053c107dfb7050242fce8fcf0435e5592c
2020-10-13 15:37:52 -07:00
Peter ArganyandFacebook GitHub Bot ccc4f0153d Fabric Picker Native Command support
Summary:
This adds support for a controlled  `<Picker/>` component .

Changelog: [iOS][Fabric] Fabric Picker support

Reviewed By: sammy-SC

Differential Revision: D24005475

fbshipit-source-id: c50e9918f74f6ef5cdfbfe67cb6c132c12d64916
2020-10-13 11:19:29 -07:00
Peter ArganyandFacebook GitHub Bot 51e8e0b7e1 Fabric Picker styling support
Summary:
This adds support for `<Picker style={}/>` prop for text styling. It reuses most of conversion logic from BaseText. This means that it actually supports more styles than Paper Picker supported. (Paper picker only supported ~4 styles, this supports everything that Text supports, so 10+ styles).

The only tricky thing is that Picker supports multiple ways of setting text color. Both

      <Picker
        itemStyle={{color: '#008BD0'}} >
        <Picker.Item label="Java" value="java" />
        <Picker.Item label="JavaScript" value="js" />
      </Picker>

and

      <Picker>
        <Picker.Item label="Java" value="java" color={'#008BD0'} />
        <Picker.Item label="JavaScript" value="js" />
      </Picker>

technically work in Paper. I've decided to maintain this behaviour (since there's lots of product code callsites to both options).

Changelog: [iOS][Fabric] Fabric Picker support

Reviewed By: sammy-SC

Differential Revision: D23980319

fbshipit-source-id: e469a837e28af0ad97cf0e171df26ee19adff3ab
2020-10-13 11:19:29 -07:00
Peter ArganyandFacebook GitHub Bot 251d5e1bbe Fabric Picker onChange event
Summary:
Implements `onChange` prop for `<Picker/>`.

Changelog: [iOS][Fabric] Fabric Picker support

Reviewed By: sammy-SC

Differential Revision: D23975689

fbshipit-source-id: 7aa81c203d420a8971e4309911a41ecfd377a318
2020-10-13 11:19:29 -07:00