[menu][iOS] Migrate to new modules API (#22263)# Why In order to add support for Fabric to expo-dev-client and related libraries we must migrate all related modules to the new API Related to
[menu][iOS] Migrate to new modules API (#22263)# Why In order to add support for Fabric to expo-dev-client and related libraries we must migrate all related modules to the new API Related to ENG-7955 # How Migrate ExpoDevMenu classes to use the new modules API # Test Plan Run dev client through bare expo <table> <tr> <td> <img src="https://user-images.githubusercontent.com/11707729/234351876-9402cba1-686a-4575-b2e7-6319e9c50439.png" /> </td> <td> <img src="https://user-images.githubusercontent.com/11707729/234351912-f60b5e59-f9b5-4358-9402-ac5e91794bb7.png" /> </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 `npx expo prebuild` & EAS Build (eg: updated a module plugin).
show more ...
[menu][ios] Rewrite safe area view using new API (#22174)# Why In order to add support for Fabric to expo-dev-client and related libraries we must migrate all non-fabric compatible libraries to
[menu][ios] Rewrite safe area view using new API (#22174)# Why In order to add support for Fabric to expo-dev-client and related libraries we must migrate all non-fabric compatible libraries to the new API Related to ENG-7955 # How Rewrite safe area view using new API # Test Plan Run dev client through bare expo  # 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).
[client] Remove vendored gesture handler (#21502)# Why Removes vendored gesture handler. Another step to support Fabric by the dev-client. > Note: To support fabric in the dev-client, we nee
[client] Remove vendored gesture handler (#21502)# Why Removes vendored gesture handler. Another step to support Fabric by the dev-client. > Note: To support fabric in the dev-client, we need to rewrite the safe area context, but that won't be difficult, because that module is pretty straightforward and we can use our API to support both renderers. # How - Removed vendored code. - Mocked functions required by react-navigation. - Disabled gesture in the stack navigator. The swipe gesture won't longer close a screen, but I think it's something that we can sacrifice. Also, most of our screens are rendered inside the bottom tab navigator. # Test Plan - bare-expo on both platforms ✅ - ensures that the stack navigator works correctly ✅
[menu][iOS] Fix `test_if_vendored_modules_are_available`
[menu] Reimplement the bottom sheet using native languages (#21268)# Why Closes ENG-7280. Reimplemented the bottom sheet using native languages and removed reanimated from vendored modules. B
[menu] Reimplement the bottom sheet using native languages (#21268)# Why Closes ENG-7280. Reimplemented the bottom sheet using native languages and removed reanimated from vendored modules. By doing that we improve the build speed. # How - On Android, I've used the material design bottom sheet. We may want to copy the implementation from the original repo to ours to avoid extra dependency. - On iOS, I've copied the implementation from https://github.com/applidium/OverlayContainer. I managed to test a couple of different libraries and that one works the best with RN. # Test Plan - bare-expo on both platforms ✅
[dev-client] cleanup unused native code (#18405)
[dev-menu] Update `react-native-reanimated` to `2.9.1` (#18182)# Why Closes ENG-5411. Closes ENG-5685. # How Run: ``` et vendor -c "[dev-menu] reanimated" ``` and adjust the vendoring
[dev-menu] Update `react-native-reanimated` to `2.9.1` (#18182)# Why Closes ENG-5411. Closes ENG-5685. # How Run: ``` et vendor -c "[dev-menu] reanimated" ``` and adjust the vendoring script. # Test Plan - bare-expo with NCL ✅ - bare-expo with sandbox ✅
[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
[dev-menu] update initial props on android and ios (#16271)
[dev-launcher][dev-menu] move queryDevSessions into react app (#16276)
[dev-menu] Fix cannot find 'DevMenuExpoSessionDelegate' in scope
[dev-client] Fix iOS unit tests (#16221)### Why Fixes iOS unit tests.
[expo-dev-launcher][expo-dev-menu] fix failing iOS unit tests (#15796)
[expotools][gh] run dev client iOS unit tests in CI (#15795)
[ios] Fix lint issues in Swift files (#15640)
[expo-dev-menu][expo-dev-menu-interface] add deviceId parameter to dev sessions query (#15539)
[dev-menu][ios] Add more unit tests (#14941)# Why The first part of https://linear.app/expo/issue/ENG-1783/unit-tests-for-ios. Adds more unit tests to the `expo-dev-menu` package. # How -
[dev-menu][ios] Add more unit tests (#14941)# Why The first part of https://linear.app/expo/issue/ENG-1783/unit-tests-for-ios. Adds more unit tests to the `expo-dev-menu` package. # How - Added removed test target to BareExpo. - Added support for `Quick` and `Nimble`. - Added more unit tests. # Test Plan - run all tests ✅
[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