[menu][Android] Rewrite safe area view using new API (#21609)
[dev-launcher][iOS] Migrate to new modules API (#22319)# 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 Re
[dev-launcher][iOS] Migrate to new modules API (#22319)# 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 EXDevLauncher 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/235227186-5d5ebcd7-7739-4af5-86e9-1d156304e582.png" /> </td> <td> <img src="https://user-images.githubusercontent.com/11707729/235227365-bb1deb30-ccf4-45b2-8416-0f6992bf5135.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). --------- Co-authored-by: Gabriel Donadel <[email protected]>
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] 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 ✅
Fix expo-dev-menu not compiling in iOS native unit tests (#21137)
[dev-menu] Update vendored reanimated to `2.14.4` (#21082)# Why Updates vendored reanimated module to `2.14.4` # How Run and adjust the output of: ``` et vendor -c "[dev-menu] reanimated
[dev-menu] Update vendored reanimated to `2.14.4` (#21082)# Why Updates vendored reanimated module to `2.14.4` # How Run and adjust the output of: ``` et vendor -c "[dev-menu] reanimated" ``` # Test Plan - NCL with bare-expo - JSC ✅ - Hermes ✅
[2/3] upgrade react native 0.71 (#20832)# Why follow up #20799 for react-native 0.71 upgrade. this pr aims for jest upgrade and fix all broken tests. close ENG-7192 # How - upgrade packag
[2/3] upgrade react native 0.71 (#20832)# Why follow up #20799 for react-native 0.71 upgrade. this pr aims for jest upgrade and fix all broken tests. close ENG-7192 # How - upgrade packages - `jest: ^26.0.24 -> ^29.2.1` - `jest-watch-typeahead: 0.6.4 -> 2.2.1` - `@types/jest: ^26.0.24 -> ^29.2.1` - `babel-jest: ^26.6.3 -> ^29.2.1` - `@jest/create-cache-key-function: ^27.0.1 -> ^29.2.1` - `@babel/preset-env: ^7.12.9 -> ^7.14.0` - `eslint: ^8.20.0 -> ^8.29.0` - add `jest-environment-jsdom` because new jest does not include it by default - [core] fix `SyntheticPlatformEmitter` type error. originally it refers to `react-native/Libraries/EventEmitter/RCTDeviceEventEmitter` internal file which has incorrect type setup in 0.71. we could use the `react-native.DeviceEventEmitter` instead. - [expo-linking]: remove the deprecated `Linking.removeEventListener` (which is also removed from upstream) - [firebase-recaptcha] remove broken web test because firebase ESM which is not supported by jest. this pr simply remove the test case because the package is deprecated. - [jest-expo-enzyme] remove this package and move to [the archived repo](https://github.com/expo/jest-expo-enzyme). enzyme cannot upgrade to jest 29. - remove `@types/react-native` and the versioned cli package check. because 0.71 ships the types directly. - [ncl] workaround `@react-native-community/slider`, `@react-native-segmented-control/segmented-control`, and `@react-native-masked-view/masked-view` type errors in the `react-native-71-fix.d.ts`. - for other details, please check the commit histories one by one. # Test Plan - ci passed - for test-suite ios ci error, i've mentioned in #20799
[modules] Fix incompatible issue for react-native 0.71 (#20470)# Why sdk 48 may come next year and react-native 0.71 may be released this year. it's good to have react-native 0.71 support for ou
[modules] Fix incompatible issue for react-native 0.71 (#20470)# Why sdk 48 may come next year and react-native 0.71 may be released this year. it's good to have react-native 0.71 support for our modules. if users want to upgrade 0.71, they could change their project to be a bare project for the early preview. # How - [core][av][gl] because 0.71 doesn't serve android aar along with npm package, the aar extraction from `node_modules/react-native/android/**/*.aar` will break on 0.71. 0.71 also ships modules with prefab support. it's good to rewrite the gradle/cmake files to link with prefab modules. that would reduce much complexity. however, to be backward compatible with 0.70, i moved most logic to `ExpoModulesCorePlugin.applyLegacyReactNativeLibsExtractionPlugin` and `legacy/CMakeLists.txt`. so that we could be backward compatible and easily remove the isolated code after we drop sdk 47 support. - [dev-launcher] add 0.71 sources because new parameter to `DevSupportManagerBase` - [core][dev-menu] fix ios build errors for jsc because 0.71 moved the header to `<React-jsc/JSCRuntime.h>` - [core][autolinking] integrate the `RCTAppDelegate` with our `EXAppDelegateWrapper`. that would simply the install-expo-modules migration where we only need the change `RCTAppDelegate -> EXAppDelegateWrapper` in AppDelegate.h. however, integrate RCTAppDelegate comes with some issues from expo-modules-core. [this commit](https://github.com/expo/expo/pull/20470/commits/2959477c5782f5d3ef770fbe72b04c1770bc566b) changes many code and i'll try to explain here: - RCTAppDelegate is in `React-RCTAppDelegate` pod, which does not define module. we define module for it in our patch system in autolinking. - defines `RCT_NEW_ARCH_ENABLED` as RCTAppDelegate - in new architecture mode, RCTAppDelegate comes with [more cxx dependencies](https://github.com/facebook/react-native/blob/03b17d9af7e4e3ad3f9ec078b76d0ffa33a3290e/Libraries/AppDelegate/RCTAppDelegate.h#L12-L18) for fabric. that's why we should add more header search paths and also move to EXAppDelegateWrapper.mm. # Test Plan - [x] ci passed - [x] bare-expo build and launch - [x] bare-expo nightlies build and launch - [x] fabric-tester build and launch - [x] fabric-tester nighties build and launch (should apply [the patch to fabric-tester](https://gist.github.com/Kudo/417a5159cb01a400ecee22ad4985d287)) - [x] rn 0.71-rc4 project build and launch (could apply [the patches](https://gist.github.com/Kudo/7448c733f12e700c7fbed76251fa3553) for testing) - [x] rn 0.71-rc4 project (new architecture) build and launch ([this pr](https://github.com/facebook/react-native/pull/35661) for react-native is required) - [x] rn 0.71-rc4 project (use_frameworks!) build and launch
[menu] Bump reanimated to `2.10.0` (#19428)# Why Closes ENG-6573. The current version of reanimated doesn't work with RN 0.70. So, I've bumped it to `2.10.0`. # How - Used our vendored sc
[menu] Bump reanimated to `2.10.0` (#19428)# Why Closes ENG-6573. The current version of reanimated doesn't work with RN 0.70. So, I've bumped it to `2.10.0`. # How - Used our vendored script to bump rea version. # Test Plan - bare-expo - hermes - rn 0.70.2 ✅ - bare-expo - jsc - rn 0.70.2 ✅
[menu] Fix compilation error when compileSdkVersion is set to 33 (#19271)# Why Fixes https://github.com/expo/expo/issues/18658. A better version of https://github.com/expo/expo/pull/18861. Clo
[menu] Fix compilation error when compileSdkVersion is set to 33 (#19271)# Why Fixes https://github.com/expo/expo/issues/18658. A better version of https://github.com/expo/expo/pull/18861. Closes ENG-6440. # How Use the same fix as it was introduced to the gesture handler codebase: https://github.com/software-mansion/react-native-gesture-handler/blob/1e6de08f589466c86a0e790ec47b80fa18de5193/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt#L62 # Test Plan - npx create-expo-app my-app - cd my-app - expo install expo-dev-client - expo prebuild - Set compileSDKVersion and targetSDKVersion to 33 in app/build.gradle - build using Android Studio - run expo start --dev client - run a to open on android
[client][iOS] Prebuild `react-native-gesture-handler` (#18680)# Why Prebuilding the `react-native-gesture-handler` Part of ENG-5410. # How Similar to https://github.com/expo/expo/pull/186
[client][iOS] Prebuild `react-native-gesture-handler` (#18680)# Why Prebuilding the `react-native-gesture-handler` Part of ENG-5410. # How Similar to https://github.com/expo/expo/pull/18679. # Test Plan - run `et vendor -c "[dev-menu] gesture-handler" --only-prebuild` ✅ - build bare-expo ✅
[client][iOS] Prebuild `react-native-safe-area-context` (#18679)# Why Prebuild the `react-native-safe-area-context` on iOS. Part of ENG-5410. # How - Used a pre-building script. - Create
[client][iOS] Prebuild `react-native-safe-area-context` (#18679)# Why Prebuild the `react-native-safe-area-context` on iOS. Part of ENG-5410. # How - Used a pre-building script. - Created a custom podspec uses to build vendored code. - Adjusted vendored script. # Test Plan - run `et vendor -c "[dev-menu] safe-area-context"` ✅ - build bare-expo ✅
[menu][iOS] Fix `PanGestureHandler` does not get active when it has a `simultaneousHandlers` (#18657)Co-authored-by: Expo Bot <[email protected]>
[menu] Fix the duplicated `DevMenuRNGestureHandlerStateManager.h` output file error (#18562)# Why Fixes https://github.com/expo/expo/issues/18397. # How Removed duplicated header file.
[menu] Fix the duplicated `DevMenuRNGestureHandlerStateManager.h` output file error (#18562)# Why Fixes https://github.com/expo/expo/issues/18397. # How Removed duplicated header file. # Test Plan - compile bare-expo and https://github.com/mlecoq/expoBuildIssue/tree/sdk46
[dev-menu][iOS] Fix compatibility with the `react-native-reanimated` (#18306)# Why Fixes https://exponent-internal.slack.com/archives/C1QP38NQ5/p1658285715794409. # How Prefixed all shared
[dev-menu][iOS] Fix compatibility with the `react-native-reanimated` (#18306)# Why Fixes https://exponent-internal.slack.com/archives/C1QP38NQ5/p1658285715794409. # How Prefixed all shared headers. # Test Plan - bare-expo ✅ - new app with reanimated (both platform) ✅
[dev-menu] Fix vendored reanimated (#18253)# How I forgot to replace one place where reanimated tries to load so file -> https://github.com/software-mansion/react-native-reanimated/blob/f2151b5d
[dev-menu] Fix vendored reanimated (#18253)# How I forgot to replace one place where reanimated tries to load so file -> https://github.com/software-mansion/react-native-reanimated/blob/f2151b5d663852f254584b16272e8d20e2f9539f/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java#L13. # Test Plan - bare-expo ✅ - expo init --template=expo-template-blank@sdk-46 ✅
[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 ✅
[menu] Fix integration between reanimated and gesture handler (#17878)# Why Fixes integration between reanimated and gesture handler. For instance, `useAnimatedGestureHandler` wasn't working in
[menu] Fix integration between reanimated and gesture handler (#17878)# Why Fixes integration between reanimated and gesture handler. For instance, `useAnimatedGestureHandler` wasn't working in the `dev-menu`. # How It turned out that we have a different module installation order. In the bare RN app, the reanimated will be installed before the gesture handler. Unfortunately, in the dev menu, the gesture handler will be installed first, cause we're using the `extraModulesForBridge` to attach vendored modules. That breaks the integration between rea and GH. GH requires reanimated to be installed in advance. # Test Plan - bare-expo ✅
[dev-menu] Update `react-native-gesture-handler` to `2.1.2` (#16371)# Why Closes ENG-3990. # How Run and adjust our vendoring script for version `2.1.2` of reanimated. Migrate from gesture
[dev-menu] Update `react-native-gesture-handler` to `2.1.2` (#16371)# Why Closes ENG-3990. # How Run and adjust our vendoring script for version `2.1.2` of reanimated. Migrate from gesture handler root view to the root view component. # Test Plan - run `bare-expo` and check if the menu works - iOS ✅ - Android ✅
[dev-menu] Update apollo client & fix `undefined is not a function`
[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 ✅
[dev-launcher] update RN app (#15343)
[dev-client] Use the new autolinking instead of the one from RN (#15379)# Why Closes ENG-2317 Closes ENG-1695 # How - Moved `podspec` to `ios` directory (required by our auto-linking). -
[dev-client] Use the new autolinking instead of the one from RN (#15379)# Why Closes ENG-2317 Closes ENG-1695 # How - Moved `podspec` to `ios` directory (required by our auto-linking). - Restructured `expo-dev-menu` codebase on ios to work with a new location of `podspec`. - `dependecies.js` is exporting an empty object. - Added `expo` as a dependency of `dev` packages. - Changed how modules are exported on Android (This will be refactored in the future, but for now this should be good enough). # Test Plan - bare-expo ✅ - fresh app with `expo-updates installed ✅
[dev-menu] vendor react-native-safe-area-context (#15382)
12