Commit Graph
2574 Commits
Author SHA1 Message Date
zhongwuzw 4ab9da134c Fixes iOS packager connection not work (#25803)
Summary:
Macro `ENABLE_PACKAGER_CONNECTION` invalid because of `__has_include` can't find the header now. Leads to packager connection not work anymore.

## Changelog

[iOS] [Fixed] - Fixes iOS packager connection not work
Pull Request resolved: https://github.com/facebook/react-native/pull/25803

Test Plan:
1. Init a new project.
2. Run and input `curl http://localhost:8081/reload` in terminal. Reload operation can execute.

Differential Revision: D16458384

Pulled By: TheSavior

fbshipit-source-id: 27e7e02b5666a2131e995accd34e4da7bad42335
2019-07-24 11:18:17 -07:00
Min ho Kim 84f5ebe4f9 Fix typos (#25770)
Summary:
Fix typos mostly in comments and some string literals.

## Changelog

[General] [Fixed] - Fix typos
Pull Request resolved: https://github.com/facebook/react-native/pull/25770

Differential Revision: D16437857

Pulled By: cpojer

fbshipit-source-id: ffeb4d6b175e341381352091134f7c97d78c679f
2019-07-23 03:23:11 -07:00
David Vacca 2992518b2e Deprecate UIManagerModule.removeSubviewsFromContainerWithID
Summary:
The method UIManagerModule.removeSubviewsFromContainerWithID will not be part of fabric. This diff deprecates it to avoid future usage before the migration.
This can not be removed, as it is currently used from React-VR

Reviewed By: shergin

Differential Revision: D16420687

fbshipit-source-id: a06810cabb434e35e5a371444114db2633a35a29
2019-07-22 15:39:01 -07:00
David Vacca a863949413 Deprecate UIManagerModule.replaceExistingNonRootView
Summary:
The method UIManagerModule.replaceExistingNonRootView will not be part of fabric. This diff deprecates it to avoid future usage before the migration.
This can not be removed, as it is currently used from React-VR

Reviewed By: shergin

Differential Revision: D16420685

fbshipit-source-id: c534e2ee6371698638751f1482bb619db1569733
2019-07-22 15:39:00 -07:00
Peter Argany 7d15a6be2c Remove all calls to bridge.imageLoader [1/N]
Summary: We no longer want to access RCTImageLoader from the bridge category. Instead, let's use the `moduleForClass` API.

Reviewed By: shergin

Differential Revision: D16389113

fbshipit-source-id: c638f4b9851698afc53aaaa2b302d21cc19f76e7
2019-07-22 11:13:51 -07:00
Samuel Susla 61b6c851c5 UIManager no longer triggers RCTLogError
Summary: Demote "Unable to find module UIManager" red box error to a warning

Reviewed By: fkgozali

Differential Revision: D16417458

fbshipit-source-id: ae70dffe419580f852db684a2665ccba2038da24
2019-07-22 07:47:41 -07:00
Peter Argany 97d3d59077 Comments & category cleanup
Summary: Been reading a lot of code comments getting familiar with Fabric & TM, just fixing a few typos and removing an unused bridge category method.

Reviewed By: shergin

Differential Revision: D16371581

fbshipit-source-id: bf0cc9c873c60e37124dc715c92d7f105e54e42f
2019-07-20 10:41:46 -07:00
Eli White 6f09dc03bf Support View Manager Commands
Summary: Supporting View Manager Commands on the new UIManager in Fabric. This is needed for things like scrollTo on ScrollView.

Reviewed By: JoshuaGross

Differential Revision: D16175575

fbshipit-source-id: a74effdf7e47b56a150a4e3fb6c4d787659e0250
2019-07-19 11:54:44 -07:00
Samuel Susla ec2bf94266 Fix incorrect information in comment
Summary: `RCTActivityIndicatorViewComponentView` is a component for `ActivityIndicator` not for `ShimmeringView`.

Reviewed By: cpojer

Differential Revision: D16360505

fbshipit-source-id: d6f7685eea24060c9e1b43d5782a65396d6c375e
2019-07-18 11:15:58 -07:00
Valentin Shergin f003b931b4 Fabric: Workaround in ScrollView that communicates the fact that the view was unmounted
Summary:
See the comment in the code.
As part of proper fix of it, we also should remove a line in RCTScrollView that nulls the delegate.

Reviewed By: mdvacca

Differential Revision: D16296050

fbshipit-source-id: 54a4c6c60de4bd97c5cfb44652b5dc26852c540c
2019-07-17 11:20:52 -07:00
Valentin Shergin 509667e25a Fabric: Implementation of ScrollView.contentInset
Summary: Trivial.

Reviewed By: mdvacca

Differential Revision: D16296051

fbshipit-source-id: 2ab16cf94cbd14d6389a4cd8d9c68567fc5ee82c
2019-07-17 11:20:52 -07:00
Valentin Shergin bf38cf1be9 Fabric: Additional checks for _eventEmitter being null in ScrollView
Summary:
I finally convinced that we need to add this everywhere.
iOS internals can call those methods at any moment (which is happening in coming diffs), so we cannot predict `_eventEmitter` being not null.

Reviewed By: mdvacca

Differential Revision: D16296052

fbshipit-source-id: 34447c2b5af4117d75930d68593d60bace119bbd
2019-07-17 11:20:51 -07:00
Dan Abramov 93aab84699 Remove the escape hatch
Summary: I originally added `forceFullRefresh` as an escape hatch in case Fast Refresh is too unreliable. In practice we haven't seen any major issues with it. Since this option is already very obscure, I'm just removing it.

Reviewed By: shergin

Differential Revision: D16286632

fbshipit-source-id: c3dc44cffd459912e194e273acf868f3380c64cc
2019-07-17 06:29:25 -07:00
Jeff Thomas 9645328606 Lazily create RCTVersion dict
Summary:
^

No need for a constructor here.

Reviewed By: fkgozali

Differential Revision: D15056802

fbshipit-source-id: 32a2c541e5c1fa6336b7f6f2131772198740626c
2019-07-12 16:51:28 -07:00
Kevin Gozali 79a7828b91 deprecate iOS .xcodeproj (#25583)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/25583

We now use CocoaPods for better maintainability.

Reviewed By: hramos

Differential Revision: D16193719

fbshipit-source-id: 26382f2da4eaba14a71771540b587fdc80b41108
2019-07-11 12:02:39 -07:00
Kevin Gozali 549c46975e iOS: suppress nullability completeness warning in TM generated spec file
Summary: For now, suppress this warning - they are harmless.

Reviewed By: mdvacca

Differential Revision: D16198994

fbshipit-source-id: b167d0e98bbc4abcd0461d50f01f364d8d560aec
2019-07-11 12:02:39 -07:00
Kevin Gozali 725e034128 TM iOS: Run RCTPlatform methods on the main queue
Summary:
This module expects to compute main queue stuffs inside getConstants(), mark it so. This address crashes when running tests:

```
Main Thread Checker: UI API called on a background thread: -[UIApplication keyWindow]
PID: 88318, TID: 22602153, Thread name: com.facebook.react.JavaScript, Queue name: com.apple.root.default-qos.overcommit, QoS: 0
Backtrace:
4   RNTester                            0x0000000100beece8 RCTKeyWindow + 72
5   RNTester                            0x0000000100beeee4 RCTForceTouchAvailable + 148
6   RNTester                            0x0000000100c0b54d -[RCTPlatform getConstants] + 109
```

Sample CI failure: https://circleci.com/gh/facebook/react-native/101079

Reviewed By: PeteTheHeat

Differential Revision: D16198720

fbshipit-source-id: 272eaccf5027d0bf5b2838ed9623ae079fac148e
2019-07-11 12:02:39 -07:00
David Vacca 458c06b8e7 Back out "[RN][iOS] Remove definition of viewIsDescendantOf method in RN iOS code"
Summary:
Adding viewIsDescendantOf back again, more context https://github.com/facebook/react-native/commit/9ae7f0c7dac732c8c2f2253699f7bcf04943e98b
This method might no not be implemented in Fabric

Reviewed By: fkgozali

Differential Revision: D16186406

fbshipit-source-id: 9cd4c9e20c01713d4e8608a54c6f54082067e27f
2019-07-10 20:56:39 -07:00
James Treanor 6ef91061e8 CocoaPods frameworks compatibility: Step 1 (#25496)
Summary:
This is the first step towards fixing https://github.com/facebook/react-native/issues/25349. These are the changes to the podspec to correctly update dependencies and build config that will cause any breaking change for users or libraries.

I am breaking these changes out from https://github.com/facebook/react-native/pull/25393 as suggested by fkgozali in https://github.com/facebook/react-native/pull/25393#issuecomment-508322884.

These are the changes:

- Made C++ headers in `React-Core` private by default so that ObjC files can import the module without failures.
- Reduced the number of `yoga` headers that are exposed for the same reason as above. As far as I can see this doesn't cause issues but we can find another solution if it does.
- Adding some missing dependencies to fix undefined symbols errors.
- Added `DoubleConversion` to `HEADER_SEARCH_PATHS` where it was missing.

## Changelog

[iOS] [Fixed] - Updated podspecs for improved compatibility with different install types.
Pull Request resolved: https://github.com/facebook/react-native/pull/25496

Test Plan:
Everything should work exactly as before. I have a branch on my [sample project](https://github.com/jtreanor/react-native-cocoapods-frameworks) here which points at this branch to show that it is still working `Podfile` to demonstrate this is fixed.

You can see that it works with these steps:

1. `git clone git@github.com:jtreanor/react-native-cocoapods-frameworks.git`
2. `git checkout podspec-updates`
3. `cd ios && pod install`
4. `cd .. && react-native run-ios`

The sample app will build and run successfully.

Reviewed By: mmmulani

Differential Revision: D16167346

Pulled By: fkgozali

fbshipit-source-id: 1917b2f8779cb172362a457fb3fce686c55056d3
2019-07-10 10:21:38 -07:00
Valentin Shergin fda3ca1311 Fabric: contentInsetAdjustmentBehavior=never for ScrollView
Summary: We have exactly same code in classic RCTScrollView component. We need that to not interfere with iOS automagical behaviours.

Reviewed By: sammy-SC

Differential Revision: D16160846

fbshipit-source-id: 5b5affcc64abe5e3204f619216412f9da5b03b78
2019-07-10 08:42:44 -07:00
Samuel Susla faf9130560 fabric: Migrate ModalHostView
Summary: Implements `ModalHostView` in Fabric.

Reviewed By: shergin

Differential Revision: D16090949

fbshipit-source-id: fe2c87063863e7f3c6c8dcc934a2cdb0b1aedaac
2019-07-08 03:56:31 -07:00
Valentin Shergin 06ce568155 Fabric: Use state in Paragraph component
Summary:
All props to Eric Lewis! cc ericlewis

This revert of revert of land of changes originally published in #24873 (with some slight fixes). The change removes usage of LocalData from the `<Text>` component.

After this change we only have ---one (maybe two)--- three components left using LocalData.

Reviewed By: mdvacca

Differential Revision: D15962376

fbshipit-source-id: 19f41109ce9d71ce30d618a45eb2b547a11f29a2
2019-07-07 22:46:21 -07:00
Yike Xue 169beaa7c2 remove duplicate lines in xplat/js/react-native-github/React/React.xcodeproj/project.pbxproj
Summary: D14477611. The duplicat line may cause the test failure in T46242216 : https://fburl.com/9svdqopu

Reviewed By: sammy-SC, cpojer

Differential Revision: D16082601

fbshipit-source-id: fbd4f4b1ffe6b08faff4b65d7fd44faffc611393
2019-07-04 14:36:28 -07:00
Kevin Gozali 987e5197f0 TM iOS: autogenerate plugins map based on FB build system
Summary: This adds internal script to automatically sync the plugins definition. For github consumption, the CoreModulesPlugins.* will stay checked in, nothing change.

Reviewed By: RSNara

Differential Revision: D16102352

fbshipit-source-id: 8f74ea9dde046183ae620682fd7e181b4cc95a94
2019-07-04 11:21:56 -07:00
Kevin Gozali 9c56be2721 TM iOS: Introduce OSS-compatible RCTCoreModulesClassProvider()
Summary: To look up TurboModule Class based on its name, this new function `RCTCoreModulesClassProvider()` can be used to find a TurboModule impl in the app. For now this is manually maintained and sync'ed with FB internal version. Only modules that live under React/CoreModules/ should be handled here.

Reviewed By: PeteTheHeat

Differential Revision: D16100291

fbshipit-source-id: 6b7556dec1fa83d1e081c7e8c0fe295187934274
2019-07-04 11:21:55 -07:00
Kevin Gozali 737b784b8c TM iOS: removed CoreModulesAppleHeader BUCK workaround
Summary:
We should be able to just use `header_path_prefix` and normal `glob(["**/*.h"])` patterns, and that should be compatible with the build system.
This also allows `RCTPlatform.mm` to import `"RCTPlatform.h"` directly without any namespace.

Reviewed By: RSNara

Differential Revision: D16096779

fbshipit-source-id: b17b79baf958f1e9a63085a928b64663cb29bbbb
2019-07-04 11:21:55 -07:00
Radosław Pietruszewski 3724810d21 Initial UIKitForMac support (#25427)
Summary:
This PR adds initial support for Project Catalyst a.k.a. UIKitForMac. This is not yet meant for production, but this is enough for RNTester to successfully compile and mostly work :)

Some APIs are not supported on the Mac -- e.g. telephony, and deprecated APIs are removed on Mac ���-- those had to be ifdef'd out via platform checks.

The biggest limitation right now is that I couldn't get Web Socket code to successfully compile, and so there are a lot of temporary platform checks  for that , and the RCTWebSocket.xcodeproj is marked as not supporting UIKitForMac. Again -- temporary, until someone with more knowledge knows how to fix this.

https://github.com/react-native-community/discussions-and-proposals/issues/131

## Changelog

[iOS] [Added] - Fixed compilation for macOS (Project Catalyst) -- not meant for production use yet
Pull Request resolved: https://github.com/facebook/react-native/pull/25427

Test Plan:
- Open RNTester/RNTester.xcodeproj with Xcode 10.2, run it like a normal iOS app -- make sure it compiles and runs correctly (no regression)
- Open the same project with Xcode 11 beta 2 (or higher) on macOS Catalina beta, select "My Mac" as device target, and run -- see that it actually compiles and runs. **Note** there are unfortunately some required steps:
   - change build configuration to Release (because packager doesn't work correctly yet)
   - change development team to yours if Xcode tells you to
   - go to RNTester project → Build phases → Link binary with libraries, and change `platforms` for `libRCTWebSocket.a` to `iOS` (without Mac compatibility). I can't commit that change because it breaks compatibility with earlier Xcode versions

The two extra steps for successful compile will disappear once web socket compilation for Catalyst is fixed

Reviewed By: mmmulani

Differential Revision: D16088263

Pulled By: sammy-SC

fbshipit-source-id: 9c0b932b048e50a8e0f336eaa0612851b1909cae
2019-07-04 10:30:33 -07:00
Kevin Gozali e883197807 Reland: [RN] iOS OSS: define plugin entries for OSS NativeModules
Summary: A reland of https://github.com/facebook/react-native/commit/f26ffbf5618d88b93fb84dd560303fe2e215cb2d

Reviewed By: sammy-SC

Differential Revision: D16091073

fbshipit-source-id: 09660ba987c3035333eac55e6bb94373fad9252b
2019-07-02 10:35:18 -07:00
Ben Blackburne b476ad78b5 Revert D16082484: [RN] iOS OSS: define plugin entries for OSS NativeModules
Differential Revision:
D16082484

Original commit changeset: 81d9f20b2041

fbshipit-source-id: 682476fccff7320de9ffd541b9a9ff3cae4da3bd
2019-07-02 00:14:26 -07:00
Kevin Gozali f26ffbf561 iOS OSS: define plugin entries for OSS NativeModules
Summary: This is an attempt to use internal iOS plugin system for NativeModules in github.

Reviewed By: RSNara

Differential Revision: D16082484

fbshipit-source-id: 81d9f20b20419e9613a2babdd56d0e037705bf4e
2019-07-01 20:33:34 -07:00
Kevin Gozali cde1a99940 TM iOS: Make RCTPlatform a TurboModule
Summary: First attempt to make RCTPlatform module implement the generated specs for TurboModule.

Reviewed By: PeteTheHeat

Differential Revision: D16001262

fbshipit-source-id: 24067c2840b9aa2be224c0c7c82fe7edc98d40d9
2019-07-01 15:20:02 -07:00
Kevin Gozali fde8a4cf93 TM iOS: Set up CocoaPods specs for the TM specs
Summary: This defines various sub specs to support building TurboModules that implement the codegen'ed specs.

Reviewed By: PeteTheHeat

Differential Revision: D16043221

fbshipit-source-id: 27ed532be929c11c8fe648632da8a72061cbc8b0
2019-07-01 15:20:01 -07:00
Kevin Gozali 020c11cc7b iOS Buck: Create CoreModules sub-target
Summary: Right now the entire RN core code lives inside one giant internal Buck target. This makes it hard to refactor the infra and to roll out TurboModules. For now, create a baseline for how RN core dir can be structured.

Reviewed By: PeteTheHeat

Differential Revision: D16001260

fbshipit-source-id: bba947e2fb75576a2e1f3f4c816575f1157dcb03
2019-07-01 15:20:01 -07:00
Valentin Shergin 98acbaa811 Fabric: Trivial local variable renaming in RCTSurfaceTouchHandler
Summary: It just makes the code much more readable.

Reviewed By: sammy-SC

Differential Revision: D16038432

fbshipit-source-id: db68dd38356660078bc94ec802fbdbb6c27ceead
2019-06-28 15:35:53 -07:00
Jonny Burger 3b88f07840 Remove asl_log (Fixes #25380) (#25382)
Summary:
By default absolutely everything gets logged twice (https://github.com/facebook/react-native/issues/25380).
This was introduced over 4 years ago here:

[React Native Log to ASL · facebook/react-native@d1b14ef · GitHub](https://github.com/facebook/react-native/commit/d1b14ef0627dc04847500faa7fef75fd3c22c900)

with the reason to support ASL.
With this PR the support for that will be removed but I believe this is justified because:

- the benefit of not having every log message twice far outweighs the benefit of having Apple System Log.
- ASL was superseded by "unified logging" (yellow box on https://developer.apple.com/documentation/os/logging).
- I assume that people who use asl_log is very small. There is also very little information about it on the internet

## Changelog

[iOS] [Fixed] - Logs would get printed twice
Pull Request resolved: https://github.com/facebook/react-native/pull/25382

Differential Revision: D16048052

Pulled By: cpojer

fbshipit-source-id: 51519570bbee79571e4ff63f433b9b70bcd55671
2019-06-28 01:38:40 -07:00
Valentin Shergin 348b1c9a62 Fabric: Proper way to set size and position for all views
Summary:
Apparently, settings `frame` and `transform` at the same view is UB and that's documented.

https://developer.apple.com/documentation/uikit/uiview/1622621-frame?language=objc

> Warning
> If the transform property is not the identity transform, the value of this property is undefined and therefore should be ignored.

Reviewed By: JoshuaGross

Differential Revision: D16038431

fbshipit-source-id: 9f282dfad97af293e5e70d3cdd849ae3e9c775c9
2019-06-27 15:45:16 -07:00
Valentin Shergin 828b40b5a5 Fabric: Fixed crash in RCTImageComponentView caused by dangling pointer
Summary: See the comment in the code.

Reviewed By: JoshuaGross

Differential Revision: D16031147

fbshipit-source-id: e165f423f5ee35d1ae5e667dba9ef8da7b9a388c
2019-06-27 15:45:15 -07:00
radex bd29112a69 Add TurboModules (jsireact) to Xcode project (#25031)
Summary:
TurboModules seem to be pretty much done, but there's no easy way to reference them on iOS side if you're linking the React project (the classic, non-CocoaPods way). So I added it.

Also updated RNTester (non-CP based) to compile TM samples

## Changelog

[iOS] [Added] - RCTTurboModule now available from RCTTurboModules.xcodeproj
Pull Request resolved: https://github.com/facebook/react-native/pull/25031

Test Plan:
~~1. Add `#import <jsireact/TurboCxxModule.h>` to a `.h` file on iOS project -- see if it compiles correctly~~

1. Open RNTester/RNTester.xcodeproj, compile, and see if TurboModule sample works

Reviewed By: hramos

Differential Revision: D16019600

Pulled By: fkgozali

fbshipit-source-id: 53c691f035a4e02abd7569840137705f3862be81
2019-06-27 13:02:03 -07:00
David Vacca 9ae7f0c7da Remove definition of viewIsDescendantOf method in RN iOS code
Summary: The viewIsDescendantOf method is not required anymore, deleting code in RN iOS

Reviewed By: JoshuaGross

Differential Revision: D16014665

fbshipit-source-id: fab63973cfa4340f4f8d91d8bce41defc81486e6
2019-06-26 18:47:13 -07:00
Eli White 0a34fb78ab RN iOS: Support View Manager Commands that are strings
Summary:
Right now JS triggers a view manager command with the following code:

```
UIManager.dispatchViewManagerCommand(
  nullthrows(this.scrollResponderGetScrollableNode()),
  UIManager.getViewManagerConfig('RCTScrollView').Commands.scrollTo,
  [x || 0, y || 0, animated !== false],
);
```

As we want to get rid of calls to UIManager, we need to stop looking for the integer defined in native from JavaScript. We will be changing methods like this to be:

```
UIManager.dispatchViewManagerCommand(
  nullthrows(this.scrollResponderGetScrollableNode()),
  'scrollTo',
  [x || 0, y || 0, animated !== false],
);
```

We need to support ints and Strings to be backwards compatible, but ints will be deprecated.

This is the same change as made for Android here: https://github.com/facebook/react-native/commit/3cae6fa950eed54bccccf61a28c0e85d5a004c6c

Reviewed By: PeteTheHeat

Differential Revision: D15983041

fbshipit-source-id: 6cb0f3001553d1f9d26e7e8fb5481e16fbca6847
2019-06-26 10:05:33 -07:00
Jonny Burger 759b67490e Remove log: Initializing <RCTCxxBridge: 0x7fded270fbf0> (#25381)
Summary:
When starting a React Native app, one gets to see the message in the image.
I propose to remove it, because it provides little information to the developer and is noisy.

![image](https://user-images.githubusercontent.com/1629785/60040707-dc42eb00-96b9-11e9-8dad-e771ff8cca5c.png)

```
Initializing <RCTCxxBridge: 0x7fded270fbf0> (parent: <RCTBridge: 0x600001b95570>, executor: (null))
```

## Changelog

[iOS] [Fixed] - Debug message was logging to the console
Pull Request resolved: https://github.com/facebook/react-native/pull/25381

Test Plan: -

Differential Revision: D15983841

Pulled By: cpojer

fbshipit-source-id: 27f7d25ee0c580640d03f0db9adcd3c2a205b270
2019-06-26 10:05:31 -07:00
Valentin Shergin 4b8d07ebf3 Fabric: Fixed another crash in RCTImageComponentView (nulled event emitter)
Summary: This fixes a crash happened in Image component caused by a race between recycling a component and image loading event are being delivered asynchronously.

Reviewed By: mdvacca

Differential Revision: D15977418

fbshipit-source-id: ac6f4b3d2b995af2afd56e551380a32d0f14ab15
2019-06-24 18:34:30 -07:00
Valentin Shergin 970bd2c69c Fabric: Fixed a crash in RCTImageComponentView
Summary: The app crashed on assert which was not actually legit. See the comment in the code.

Reviewed By: JoshuaGross

Differential Revision: D15976177

fbshipit-source-id: 612bbbd510187ffdc86369aa943d4b652b748694
2019-06-24 17:21:42 -07:00
Dan Abramov a52e6d1dbb Unify "Hot Reloading" and "Reload-on-Save" into "Fast Refresh"
Summary:
We have too many options in the Dev Menu, and they're really hard to pick from. They're also somewhat conflicting. This replaces two menu choices that have a similar purpose (faster iteration cycle) with one.

"Fast Refresh" tries to only update the affected modules, but falls back to doing a full reload if the update can't be handled by the React components.

If for some reason you prefer the "Reload-on-Save" behavior, please:

- Reach out to me so I can learn more about your use case.
- As a workaround, you can add `if (__DEV__) require.Refresh.forceFullRefresh = true` to your app's entry point to always do a full refresh.

Also note that I only removed the user-facing part of "Reload-on-Save". So if you have automation depending on it, that's gonna keep working.

I moved it above Systrace since it's a more generic feature.

As a total aside nit, I renamed "Enable Inspector" and "Disable Inspector" to "Show Inspector" and "Hide Inspector" because... that's what those options do, really.

Reviewed By: rickhanlonii

Differential Revision: D15958697

fbshipit-source-id: 20e856d56f661fe4d39b5ab47d8c44754bf70f67
2019-06-24 13:54:39 -07:00
Dan Abramov 1f04ff580d Make "Enable Hot Reloading" Instant
Summary:
As we saw in D15947985, and later traced down to D5623623, the `hot` option isn't used by Metro anymore. The relevant transforms _always_ run in DEV regardless of the option.

Given that, it doesn't make sense that enabling or disabling Hot Reloading forces a full refresh. This significantly raises the usage barrier because **currently, you might have to wait ~20 seconds (on a large app) to just start using Hot Reloading when you're already in the middle of some screen.** So you just end up not using it.

This diff changes enabling/disabling Hot Reloading to be _instant_.

Here's how it works:

1. Now we always send the necessary info to the client via the new `HMRClient.setup()` function. It creates a Metro HMR client instance, but only actually sets up the socket if Hot Reloading is on.

2. The "Enable Hot Reloading" menu no longer forces a reload. Instead, it calls `HMRClient.enable()` which lazily sets up a socket (at most once).

3. The "Disable Hot Reloading" menu also doesn't trigger a refresh now. Instead, it calls `HMRClient.disable()`. We don't actually tear down the socket here because it's a pain to deal with race conditions and such. Instead, we keep the connection — but we _ignore the updates_ that come in while we're disabled.

4. As a result, it is possible to enable and disable it many times during a single session. (Updates while disabled would be ignored — which has a risk of making your running app inconsistent — but I'd argue it's expected and is worth it. You can always save a particular file to force it to update once the mode is on.)

5. In order to support "ignoring" updates, Metro's `HMRClient` (not to be confused with RN's module) now supports a `shouldApplyUpdates` field. The RN module uses it to disable handling updates when the mode is off.

6. In case there is an error that makes hot reloading unavailable (such as the server disconnecting), we surface the error only if the mode is on. If the mode is off, we stash the error message in the `_hmrUnavailableReason` variable, and display it next time you try to enable Hot Reloading.

Reviewed By: rickhanlonii

Differential Revision: D15958160

fbshipit-source-id: 8256fc4d5c2c3f653a78edf13b8515a5671953e4
2019-06-24 09:48:56 -07:00
Samuel Susla df17ebfcfa Back out "[react-native][PR] [iOS] Add convert compatible of NSString for bridge message data"
Summary:
Original commit changeset: 4849a8e94141

# Problem:
This diff caused https://github.com/facebook/react-native/issues/25339.
It was converting non string values to strings whenever the conversion was available.

The original problem that this diff was trying to solve is described here -> https://twitter.com/estevao_lucas/status/1117572702083190785?s=215

# Solution introduced by this diff
This diff introduced a conversion. So for any value that was meant to be string but wasn't we would attempt to convert it. Which is not always wanted.

# Solution for problem in the twitter
I think we should improve the error message if incorrect type is being passed as a prop. However this isn't a problem if views are Flow typed.

Reviewed By: cpojer

Differential Revision: D15964298

fbshipit-source-id: 3d027a378561b87e7a9e89fc5e39dc6f359d8d22
2019-06-24 07:13:46 -07:00
Valentin Shergin 173a5cc222 Fabric: Removing unnecessary assert in RCTParagraphComponentView
Summary: This is strange why it's happening but it's not a reason to crash here. We will migrate the text component to State anyway, so we will fix the problem then.

Reviewed By: JoshuaGross

Differential Revision: D15951391

fbshipit-source-id: c1d1217fab1180f1eef84dfc2b2fd1ed0864b035
2019-06-21 16:04:50 -07:00
Kevin Gozali 01a42bc368 TM iOS: Prevent module cache invalidation race
Summary: There are still race condition during bridge invalidation. Some modules may be accessing other modules during invalidation, but it's racing with the TM manager clearing the cache.

Reviewed By: JoshuaGross

Differential Revision: D15947488

fbshipit-source-id: 3bd51382264f538a03ca565b0f099da40c3daadf
2019-06-21 15:54:01 -07:00
Dan Abramov a225d1aa5e Fix progress indication on iOS
Summary: We didn't update the header name. The ref was weak so it just didn't pull in the module.

Reviewed By: fkgozali

Differential Revision: D15944635

fbshipit-source-id: 8599c091a2265f807662c3deea4bd3c59e1a8aa8
2019-06-21 12:15:48 -07:00
Valentin Shergin fbbfeb6426 Fabric: Fixed ScrollView layout issue
Summary: We should not use `self.contentView` accessor to insert container views (views that might be used as a container for nested views) into component view otherwise it causes double applying of padding values.

Reviewed By: mdvacca

Differential Revision: D15862075

fbshipit-source-id: aad834aeca06f66b19c2f7bbaa0b58f937e66994
2019-06-17 19:18:57 -07:00