| #
a61b5e5a |
| 30-Jun-2023 |
Kudo Chien <[email protected]> |
[dev-client][updates] fix ios use_frameworks build errors (#23218)
# Why
fix ios use_frameworks with expo-dev-client and expo-updates
fixes #23190
close ENG-9158
# How
- [dev-launcher][d
[dev-client][updates] fix ios use_frameworks build errors (#23218)
# Why
fix ios use_frameworks with expo-dev-client and expo-updates
fixes #23190
close ENG-9158
# How
- [dev-launcher][dev-menu] remove bridging headers. bridging headers are only supported in app projects as far as i know.
- [dev-launcher][dev-menu] remove double quoted imports
- [manifests][updates-interface] remove the swift generated header copying to PODS_ROOT. if we did that, xcode will have ambiguous imports that import from non-module header.
# Test Plan
- ci passed
- versioned expo go
- bare-expo
- sdk49 project + use_frameworks! static
show more ...
|
| #
adae5ee7 |
| 30-Jun-2023 |
Kudo Chien <[email protected]> |
[dev-launcher][templates] enable network inspector default (#23185)
# Why
original network inspector by default does not support the case for bare project upgrade from sdk < 49. we should assume
[dev-launcher][templates] enable network inspector default (#23185)
# Why
original network inspector by default does not support the case for bare project upgrade from sdk < 49. we should assume `EX_DEV_CLIENT_NETWORK_INSPECTOR` are not in templates.
# How
fine tune the logic of `EX_DEV_CLIENT_NETWORK_INSPECTOR` to assume it's true even not specified.
# Test Plan
- [x] expect network inspector is enabled when EX_DEV_CLIENT_NETWORK_INSPECTOR=true
- [x] expect network inspector is enabled when EX_DEV_CLIENT_NETWORK_INSPECTOR is undefined
- [x] expect network inspector is disabled when EX_DEV_CLIENT_NETWORK_INSPECTOR=false
show more ...
|
| #
57b8f373 |
| 23-Jun-2023 |
Kudo Chien <[email protected]> |
[dev-launcher] fix compatibility issue with reanimated (#23057)
# Why
fix compatibility issue with reanimated on ios
# How
- reanimated has a [method swizzling to call `reanimated::REAIniti
[dev-launcher] fix compatibility issue with reanimated (#23057)
# Why
fix compatibility issue with reanimated on ios
# How
- reanimated has a [method swizzling to call `reanimated::REAInitializer` when setup bridge](https://github.com/software-mansion/react-native-reanimated/blob/79d0e5baf4e7aea9bbf27a798472e8c42b6527da/ios/native/RCTAppDelegate%2BReanimated.mm). we didn't go through this when dev-launcher create a new bridge. this pr tries to setup reanimated if there is reanimated dependency.
- remove unused `ExpoDevLauncherBridgeDelegateHandler`
# Test Plan
- test bare-expo with `BOOL useDevClient = YES` in **AppDelegate.mm**
- fabric-tester
show more ...
|
| #
e3d19369 |
| 20-Jun-2023 |
Gabriel Donadel Dall'Agnol <[email protected]> |
[dev-launcher][dev-menu][ios] Add support for Fabric (#22184)
# Why
Closes ENG-7955
This PR adds dev-launcher support for the new architecture.
# How
- Updates `expo-dev-launcher` an
[dev-launcher][dev-menu][ios] Add support for Fabric (#22184)
# Why
Closes ENG-7955
This PR adds dev-launcher support for the new architecture.
# How
- Updates `expo-dev-launcher` and `expo-dev-menu` podspecs to support
`NEW_ARCH_ENABLED` flags
- Add `EXDevLauncherBridgeDelegate` class that inherits from
`RCTAppDelegate` and is responsible for creating the root view and
bridge
- Replace `DevMenuRCTCxxBridgeDelegate`with `DevMenuRCTAppDelegate`
- Fix `EXDevLauncherBridgeDelegate` not able to relaunch DevLauncher
- Add `ExpoDevLauncherBridgeDelegateHandler` to handle opening apps from
`ExpoDevLauncherReactDelegateHandler`
- Update `openDevMenuFromReactNative` to ensure the DevMenu is closed
before opening the react-native dev menu
# Test Plan
Run `fabric-tester` and `bare-expo` on iOS
<table>
<tr><th>fabric-tester</th><th>bare-expo</th></tr>
<tr>
<td>
<video
src="https://github.com/expo/expo/assets/11707729/1176f862-4459-4a39-8c11-16f73b2dfe46"/>
</td>
<td>
<video
src="https://github.com/expo/expo/assets/11707729/5f603af5-d970-4144-ade6-0943b829d225"
/>
</td>
</tr>
</table>
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
---------
Co-authored-by: Kudo Chien <[email protected]>
show more ...
|
| #
c0a96678 |
| 07-Jun-2023 |
Kudo Chien <[email protected]> |
Upgrade react-native 0.72.0-rc.5 (#22588)
# Why
upgrade react-native 0.72 for sdk 49
close ENG-8011
# How
- bump package versions
- `react-native 0.71.3 -> 0.72.0-rc.5`
- `metro-reac
Upgrade react-native 0.72.0-rc.5 (#22588)
# Why
upgrade react-native 0.72 for sdk 49
close ENG-8011
# How
- bump package versions
- `react-native 0.71.3 -> 0.72.0-rc.5`
- `metro-react-native-babel-preset 0.73.9 -> 0.76.5`
- [bare-expo][templates][fabric-tester] migrate template base on [upgrade-helper](https://react-native-community.github.io/upgrade-helper/?from=0.71.7&to=0.72.0-rc.5)
- [expo-template-tabs] remove the metro version overrides for expo-router.
- [core][dev-laucher][dev-menu][media-library][screen-orientation][splash-screen][updates-interface][updates] add the `install_modules_dependencies` to support new architecture + use_frameworks!
- [core][autolinking] fix some new architecture error on ios
- [react-native-lab] update our fork to 0.72.0-rc.5 based
- [go][tools] fix **react-native-lab/react-native/packages/react-native** path move because of react-native's repo monorepo changes
- [go][android] fix gradle 8 errors
- [go][ios] add `RCT_REMOTE_PROFILE=0` to fix the `RCT_ENABLE_INSPECTOR needs to be set to fulfill RCT_REMOTE_PROFILE` build error
- [ncl] remove `ProgressViewIOS` / `ProgressBarAndroid` since they are deprecated/removed in 0.72
- [dev-menu][dev-launcher] rebuild bundles
# Note
- react-native-web is not bumped because of the [issue](https://github.com/necolas/react-native-web/issues/2523), so it's still react-native-web@~0.18.10.
- currently disable ci typecheck for @expo/cli because of upstream metro typescript support. i'll have another pr to fix those errors.
- updates e2e ci on android is broken at [here](https://github.com/expo/expo/blob/fada3d764957779fbfc3d7b723d185db1d933d95/packages/expo-updates/e2e/fixtures/Updates.e2e.ts#L518). i doubt if that's related to the react scheduler change. i'd disabled the failed test case.
- the react-native upstream [migrated away the `@types/jest`](https://github.com/facebook/react-native/pull/36068). i was afraid that will be a breaking change to the existing jest test code since it requires the explicit `@jest/globals` import. i didn't do this in this upgrade.
# Test Plan
- ✅ fabric-tester (without expo-dev-client)
- ✅ ci passed. there are some errors which are known:
- updates e2e on android: as mentioned above
- ios expo go on eas build: versioned expo go are broken on eas build m1 worker. this is also happening on main.
- android client: no space left on the ubuntu worker. this is also happening on main.
- ✅ bare-expo
- ✅ unversioned expo go + ncl
---------
Co-authored-by: Tomasz Sapeta <[email protected]>
show more ...
|
| #
6f74b01f |
| 02-Mar-2023 |
Kudo Chien <[email protected]> |
[dev-server][dev-launcher] inspector network on ios (#21265)
# Why
close ENG-7464
close ENG-7492
# How
- [dev-server] enable more devtools features rather than v8only
- [dev-launcher] int
[dev-server][dev-launcher] inspector network on ios (#21265)
# Why
close ENG-7464
close ENG-7492
# How
- [dev-server] enable more devtools features rather than v8only
- [dev-launcher] intercept `URLSession` requests and send CDP network events through metro-inspector-proxy to devtools
# Test Plan
bare-expo + `useDevClient = YES` in AppDelegate.mm (this is to enable dev-launcher)
show more ...
|
| #
84f418d7 |
| 17-Jan-2023 |
Kudo Chien <[email protected]> |
[1/3] upgrade react-native 0.71 (#20799)
# Why
upgrade react-native 0.71 for sdk 48
close ENG-7192
# How
- update package versions
- `react: 18.1.0 -> 18.2.0`
- `react-native 0.70.5
[1/3] upgrade react-native 0.71 (#20799)
# Why
upgrade react-native 0.71 for sdk 48
close ENG-7192
# How
- update package versions
- `react: 18.1.0 -> 18.2.0`
- `react-native 0.70.5 -> 0.71.0`
- `react-dom: 18.1.0 -> 18.2.0`
- `react-test-renderer: 18.1.0 -> 18.2.0`
- `react-native-web: 0.18.9 -> 0.18.10`
- `babel-plugin-react-native-web: 0.18.9 -> 0.18.10`
- `metro-react-native-babel-preset: 0.72.3 -> 0.73.5`
- upgrade three project templates based on [upgrade-helper](https://react-native-community.github.io/upgrade-helper/?from=0.70.6&to=0.71.0)
- bare-expo
- expo-template-bare-minimum
- fabric-tester (this is based on `npx expo prebuild --clean --no-install --template /path/to/expo-template-bare-minimum.tgz`) so it includes some inconsistent changes
- [@expo/config-plugins]: support 0.71 template transform. the `namespace` in build.gradle and the files in `release` build variants
- [fbjni] upgrade 0.3.0 to align 0.71 (also ndk version)
- [expo-updates] move the `EX_UPDATES_NATIVE_DEBUG` `bundleInDebug` setup to templates. unfortunately, because RNGP setups the task dependencies pretty early. the original setup in expo-updates build.gradle is too late. note that the change doesn't reference any files from templates to expo-updates package. somehow it's not tightly coupled.
- [native-tests / expo-modules-test-core / expo-modules-autolinking] fix ios unit test build error because jsc now in a dedicated podspec. in theory, the ios native unit test could now run on hermes as well.
- for other details, please check commit histories one by one.
# Test Plan
- bare-expo ios / android
- fabric ios / android
- ci passed (except ios)
- test-suite ios is broken for unknown reasons. it breaks only on github actions and hermes. for nightlies testing, i also [changed it to jsc](https://github.com/expo/expo/blob/1e029c89c4247802cc4880e27e116a6b4c71c502/tools/src/commands/SetupReactNativeNightly.ts#L287-L293) to make ci green. i'll try to follow up and investigate the root cause.
show more ...
|
| #
c88b85cf |
| 14-Sep-2022 |
Tomasz Sapeta <[email protected]> |
[ios] Bump deployment target to 13.0 (#18873)
|
| #
aa3bb5e3 |
| 21-Jun-2022 |
Bartłomiej Klocek <[email protected]> |
[ios][tools][ci] Redesign iOS unit tests (#17634)
# Why
iOS Unit Test CI job had several issues:
- Fastlane is being run for each package separately, so it's restarting the simulator each time.
[ios][tools][ci] Redesign iOS unit tests (#17634)
# Why
iOS Unit Test CI job had several issues:
- Fastlane is being run for each package separately, so it's restarting the simulator each time. This makes the job slower and moreover, test results are scattered across all fastlane logs.
- Some tests are being run on bare-expo, others on the client project.
- Packages to be tested need to be defined manually in podfile
- Some dev-client tests aren't being run at all (bug in expotools)
# How
Basically, running tests once from a single xcscheme is faster and clearer than doing it separately for each package.
- Applied some autolinking + fastlane changes from #16993 and https://github.com/expo/expo/commit/0e0c1e3db71535002e56453ff6004b06e2836c8e - now we have `use_expo_modules_tests!` for autolinking only test packages.
- Created (`expo init -t bare`) a new `apps/native-tests` app which has no JS code, but only native iOS project with a single test-only scheme (`NativeTests.xcscheme`)
> It might be possible to integrate it as a separate test target in bare-expo instead of creating a new app
- Created a custom fastlane action `generate_test_scheme`, which takes that NativeTests scheme as a template and automatically finds test targets (named `PodspecName-Unit-Tests`, generated by CocoaPods during `pod install`) and generates a `NativeTests_generated` scheme aggregating all these targets. Package filtering is also supported.
- Created a new ios lane `:unit_tests` which uses that action to generate the scheme and then run tests, adopted the `et ios-native-unit-tests` command to use this lane.
- Fixed expotools not recognizing the `expo-dev-launcher` podspec, because it was in the package root instead of the `ios/` subdir.
- Got rid of `React-hermes` test spec dependencies. They're not needed anymore. JS engine for `apps/native-tests` is set to JSC.
- Added `FASTLANE_SKIP_UPDATE_CHECK=1` to the CI env to prevent fastlane from spamming.
One drawback of this approach is that we now have to maintain another app, another podfile etc
show more ...
|
| #
0fb6c935 |
| 07-Jun-2022 |
Douglas Lowder <[email protected]> |
[dev-client][iOS] autodetect launcher packager (#17712)
|
| #
b41c14cc |
| 02-Apr-2022 |
Kudo Chien <[email protected]> |
[android][ios] Upgrade to react-native 0.68 (#16532)
# Why
targeting react-native 0.68 in sdk 45 even though it's rc now.
# How
- [x] upgrade package.json
- [x] migrate bare-expo
- [x] mi
[android][ios] Upgrade to react-native 0.68 (#16532)
# Why
targeting react-native 0.68 in sdk 45 even though it's rc now.
# How
- [x] upgrade package.json
- [x] migrate bare-expo
- [x] migrate expo-template-bare-minimum
- [x] migrate bare-sandbox
❗️ reanimated build error because our previous integration is broken on AGP 7. solution in [the pr](https://github.com/software-mansion/react-native-reanimated/pull/3113). since the pr is not landed yet, i have a [temporarily workaround to patch reanimated](https://github.com/expo/expo/pull/16532/commits/8e5662bec377ea11edc21ec6114c39f6580cb56a).
# Test Plan
- android bare-expo launch test
- ios bare-expo launch test
show more ...
|
| #
7ebbee02 |
| 14-Feb-2022 |
Eric Samelson <[email protected]> |
[updates-interface][updates][dev-launcher] add EXUpdatesControllerRegistry (#16230)
|
| #
55a0565e |
| 14-Feb-2022 |
Eric Samelson <[email protected]> |
[expo-dev-launcher] ReactDelegate-based automatic setup (#16190)
|
| #
402679ca |
| 20-Jan-2022 |
Kudo Chien <[email protected]> |
Upgrade to react-native 0.66 (#15914)
# Why
follow up https://github.com/expo/expo/pull/15817#discussion_r781366360
after we use the react-native from npm, the react-native version we used in ex
Upgrade to react-native 0.66 (#15914)
# Why
follow up https://github.com/expo/expo/pull/15817#discussion_r781366360
after we use the react-native from npm, the react-native version we used in expo-go is decoupled with other stuffs. that makes us upgrade react-native easier.
# How
1. update versions in package.json
2. sync changes from [react-native-upgrade-helper](https://react-native-community.github.io/upgrade-helper/?from=0.64.2&to=0.66.4)
3. `RCTComponentData` changed its designated initializer in react-native 0.65. to make it compatible with older version, i introduced the `EXComponentDataCompatibleWrapper` class to support different versions.
4. [react-native-lab] to fix expo-go build error, we should patch react-native to use the codegen library from its repo but not from node_modules: https://github.com/expo/react-native/pull/29.
# Test Plan
- CI passed
- bare-expo build & launch test
- unversioned expo-go build & launch test
show more ...
|
| #
d1194e24 |
| 16-Dec-2021 |
Łukasz Kosmaty <[email protected]> |
[dev-client] Move podspecs to the root directory (#15580)
# Why
The decision to move `dev-menu` and `dev-launcher` podspecs to the `ios` directory wasn't great.
Thanks to https://github.com/exp
[dev-client] Move podspecs to the root directory (#15580)
# Why
The decision to move `dev-menu` and `dev-launcher` podspecs to the `ios` directory wasn't great.
Thanks to https://github.com/expo/expo/pull/15578, we will be able to leave podspecs in the root directory.
Why this is handy:
> It's very hard to resources between iOS and Android when you can't point to local files located above the podspec file. Unfortunately, cocoapods in that place doesn't support paths that aren't in the same directory as podspec. Moreover, it will reduce migration headaches. Currently, users have in theirs Podfiles references to pod pointed to the package directory.
It also fixes a compilation error in the `bare-expo` - cannot find `devmenu.com.th3rdwave.safeareacontext.SafeAreaContextPackage`.
# How
- Moved podspecs
- Moved vendored code outside of the ios folder
- Removed unused xcproj
- Ensured that our modules can't be linked by RN
# Test Plan
- bare-expo ✅
show more ...
|
| #
283f41f2 |
| 02-Nov-2021 |
Łukasz Kosmaty <[email protected]> |
[dev-launcher][ios] Add more tests (#14955)
# Why
The second part of https://linear.app/expo/issue/ENG-1783/unit-tests-for-ios.
Adds more unit tests to the `expo-dev-launcher` package.
# How
[dev-launcher][ios] Add more tests (#14955)
# Why
The second part of https://linear.app/expo/issue/ENG-1783/unit-tests-for-ios.
Adds more unit tests to the `expo-dev-launcher` package.
# How
- Added support for `Quick` and `Nimble`.
- Added more unit tests.
# Test Plan
- run all tests ✅
show more ...
|
| #
9886c0aa |
| 28-Sep-2021 |
Kudo Chien <[email protected]> |
[expo-modules][ios] Fix errors from use_frameworks in Podfile (#14523)
# Why
close [ENG-1772](https://linear.app/expo/issue/ENG-1772/regression-test-for-use-frameworks-in-podfile)
fixes #13920
[expo-modules][ios] Fix errors from use_frameworks in Podfile (#14523)
# Why
close [ENG-1772](https://linear.app/expo/issue/ENG-1772/regression-test-for-use-frameworks-in-podfile)
fixes #13920
# How
- error: `The 'App' target has transitive dependencies that include static binaries`
declare `static_framework = true` in podspec. since all expo-modules ship in either source code or static xcframework, it should make sense to add `static_framework` declaration and solve this kind of errors.
- error: generated swift runtime header not found
fix like this because in framework mode, generated headers are inside module.
```diff
+#if __has_include(<ExpoModulesCore/ExpoModulesCore-Swift.h>)
+// For cocoapods framework, the generated swift header will be inside ExpoModulesCore module
+#import <ExpoModulesCore/ExpoModulesCore-Swift.h>
+#else
#import "ExpoModulesCore-Swift.h"
+#endif
```
- error: [gl] `<cassert>` import not found
this is supported in c++, thus rename to objc++ .mm files.
- error: [gl] `BLOCK_SAFE_RUN` inconsistent left/right operands types
this is side effect after renaming expo-gl files as .mm. fixed by explicitly cast as void.
- error: [core] undefined symbols in linking time, e.g. `EXRegisterModule`
this is side effect after renaming expo-gl files as .mm. fixed by export symbols by `extern "C"`, otherwise c++ will have different name mangling between c.
- rename `expo-image` pod to `EXImage`
- error: `Include of non-modular header inside framework module`
adding `DEFINES_MODULES` for cocoapods to create modulemap file. for external dependency like firebase, ignore the error by adding `CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES`
- error: expo-constant's app.config and expo-updates' app.manifest not found
in use_frameworks mode, the path is the same with non framework mode. `/$UNLOCALIZED_RESOURCES_FOLDER_PATH` is unnecessary.
- error: [barcode-scanner] ZXingObjC podspec GCC_PREPROCESSOR_DEFINITIONS does not export to EXBarCodeScanner and cause headers not found
add these defines explicitly
- [templates] add missing `react_native_post_install` from react-native 0.64 upgrade
- error: `Cycle inside FBReactNativeSpec; building could produce unreliable results. This usually can be resolved by moving the shell script phase '[CP-User] Generate Specs' so that it runs before the build phase that depends on its outputs.`
workaround by moving `FBReactNativeSpec` build phase script order.
Co-authored-by: Tomasz Sapeta <[email protected]>
# Test Plan
## prebuilt xcframework test
```sh
expo init -t /path/to/expo/templates/expo-template-bare-minimum sdk43
cd sdk43
# add `s.static_framework = true` for each `node_modules/expo-*/ios/*.podspec`
cd ios
# add `use_frameworks!` to Podfile
rm -rf Pods && pod install
cd ..
expo run:ios
expo run:ios --configuration Release
```
## regression for all expo-modules
```sh
expo init -t /path/to/expo/templates/expo-template-bare-minimum sdk43
cd sdk43
yarn add file:/path/to/expo/packages/expo-* # add all expo-modules one-by-one
# test non framework mode
expo run:ios
expo run:ios --configuration Release
# test framework mode
cd ios
# add `use_frameworks!` to Podfile
rm -rf Pods && pod install
cd ..
expo run:ios
expo run:ios --configuration Release
```
show more ...
|
| #
000f47c7 |
| 21-Sep-2021 |
Eric Samelson <[email protected]> |
[expo-dev-client] add expo-manifests dependency (#14461)
|
| #
e0f87bcd |
| 06-Aug-2021 |
Łukasz Kosmaty <[email protected]> |
[dev-menu] Add basic tests (#13845)
# Why
Part of ENG-1610.
# How
Added basic infrastructure for unit and UI tests for dev-menu and also created a couple of tests.
# Test Plan
- bare-
[dev-menu] Add basic tests (#13845)
# Why
Part of ENG-1610.
# How
Added basic infrastructure for unit and UI tests for dev-menu and also created a couple of tests.
# Test Plan
- bare-expo
show more ...
|
| #
35437569 |
| 03-Aug-2021 |
Eric Samelson <[email protected]> |
[expo-dev-launcher] add EXDevLauncherURLHelperTests (#13890)
|
| #
6a3c3e02 |
| 29-Jul-2021 |
Eric Samelson <[email protected]> |
[expo-dev-launcher] interpret URLs that return a JSON content-type as manifest URLs (#13825)
|
| #
8748ad50 |
| 29-Jul-2021 |
Eric Samelson <[email protected]> |
[expo-dev-launcher][ios] add basic unit test setup (#13824)
|
| #
a33e587b |
| 31-May-2021 |
Eric Samelson <[email protected]> |
[expo-dev-launcher][ios] add ability to load published projects via expo-updates (#13087)
|
| #
d5087a6c |
| 20-May-2021 |
Łukasz Kosmaty <[email protected]> |
[dev-launcher] Fix app hanging on the splash screen on iOS. (#12971)
# Why
Closes ENG-1133.
I noticed that the app contains a weird file called `ip.txt`.
When you build your app with the eas,
[dev-launcher] Fix app hanging on the splash screen on iOS. (#12971)
# Why
Closes ENG-1133.
I noticed that the app contains a weird file called `ip.txt`.
When you build your app with the eas, it’ll contain an IP of the builder - that IP will be outside of your network.
Unfortunately, RN tries to ping this address:
https://github.com/facebook/react-native/blob/b67dc01d1d52a9d12a1b9c807f6f89dd8490131a/React/Base/RCTBundleURLProvider.mm#L105-L108
https://github.com/facebook/react-native/blob/b67dc01d1d52a9d12a1b9c807f6f89dd8490131a/React/Base/RCTBundleURLProvider.mm#L112-L115
We can't just remove this file, cause it's responsible for WebSocket connection with bundler. So we need to establish this connection single-handedly.
# How
Firstly, I ignored the `ip.txt` file by swizzling the `guessPackagerHost` method from `RCTBundleURLProvider` (https://github.com/expo/react-native/blob/85f6d8f2b00f72ee18cedef2052471ae16c34e26/React/Base/RCTBundleURLProvider.m#L96-L112).
After that, the app won't be stuck on the splash screen anymore, but the WebSocket connection won't be available either.
To fix the socket connection, I chose a similar solution to the one from our fork (https://github.com/expo/react-native/blob/85f6d8f2b00f72ee18cedef2052471ae16c34e26/React/DevSupport/RCTPackagerConnection.mm#L151-L164) - set the URL in `EXDevLauncherController`. Sadly there is one more caveat - to do it, we need to have access to the `_mutex` variable from the `RCTPackagerConnection` class (https://github.com/expo/react-native/blob/85f6d8f2b00f72ee18cedef2052471ae16c34e26/React/DevSupport/RCTPackagerConnection.mm#L40). This variable is private and comes from cpp. Normally, we could use `valueForKey` to get such a variable, but not in that case (`valueForKey` will crash because it's coming from cpp!). The other solution that I found is to use `object_getInstanceVariable`. This function isn't normally available. To use it, you need to disable ARC. So that's what I did (only for one file).
I confirmed that the socket connection is working and the `RCTReconnectingWebSocket` is released (ensured that we don't have any leaks).
# Test Plan
- bare-expo ✅
show more ...
|
| #
acc256e5 |
| 11-May-2021 |
Łukasz Kosmaty <[email protected]> |
[dev-launcher][ios] Add error screen (#12848)
# Why
Closes ENG-918
# How
- Created a native error view similar to the one in Expo Go on Android.
- Created an `RCTRedBox` interface by copin
[dev-launcher][ios] Add error screen (#12848)
# Why
Closes ENG-918
# How
- Created a native error view similar to the one in Expo Go on Android.
- Created an `RCTRedBox` interface by coping the `RCTRedBox.h`.
- Replaced the RCTRedBox by swizzling methods in RCTCxxBridge - I don't like this. However, I didn't find anything else.
> Note:
Currently, we don't present the stack trace in the error view. This feature will be implemented later.
# Test Plan
- bare-expo ✅
show more ...
|