Apple TV support 1: podspec and code changes for commonly used modules (#24329)# Why First of a series of PRs to add Apple TV support for many (but not all) Expo SDK modules. This PR makes A
Apple TV support 1: podspec and code changes for commonly used modules (#24329)# Why First of a series of PRs to add Apple TV support for many (but not all) Expo SDK modules. This PR makes Apple TV able to compile for apps using `[email protected]` and ONLY the following modules: - expo - expo-application - expo-constants - expo-eas-client - expo-file-system - expo-font - expo-json-utils - expo-keep-awake - expo-manifests - expo-modules-core - expo-splash-screen - expo-structured-headers - expo-updates-interface - expo-updates # How - Add tvOS to podspecs - Native code changes wrapped in `#if TARGET_OS_TV` (for Objective C) or `#if os(tvOS)` (for Swift) - Import source for the `ASN1Decoder` Swift framework used by `expo-updates`, as the public podspec for that framework does not yet support tvOS # Test Plan - Manual testing with a template still in development - Existing CI for iOS should pass (nothing should be broken) # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
show more ...
[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
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]>
[expo-updates-interface][ios] convert to swift (#21646)# Why More swift conversions. # How Convert manually. # Test Plan Run all tests. # Checklist <!-- Please check the appro
[expo-updates-interface][ios] convert to swift (#21646)# Why More swift conversions. # How Convert manually. # Test Plan Run all tests. # 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).
[exupdates][ios] Convert controllers to swift (#21591)# Why This converts the entry points (controllers) to swift. # How Convert manually # Test Plan Build and run expo go, run all t
[exupdates][ios] Convert controllers to swift (#21591)# Why This converts the entry points (controllers) to swift. # How Convert manually # Test Plan Build and run expo go, run all tests. # 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).
[ios] Bump deployment target to 13.0 (#18873)
[expo-updates][iOS] Get downloaded update IDs (#17817)Why In order for the dev client to be able to indicate in the UI whether a particular update is available to load offline, we need to add a
[expo-updates][iOS] Get downloaded update IDs (#17817)Why In order for the dev client to be able to indicate in the UI whether a particular update is available to load offline, we need to add a method to the expo-updates-interface to let it see which updates are stored locally (in sqlite) and ready to load. It should be sufficient for this method to return a list of UUIDs for updates that have the READY status in sqlite. How New method ```objc - (void)storedUpdateIdsWithConfiguration:(NSDictionary *)configuration success:(EXUpdatesQuerySuccessBlock)successBlock error:(EXUpdatesErrorBlock)errorBlock; ``` is added to the interface for iOS. The implementation in `EXUpdatesDevLauncherController` calls into a new method in `EXUpdatesAppLauncherWithDatabase`, which uses a new query in `EXUpdatesDatabase` to retrieve READY update UUIDs. Test Plan New unit tests are added to the existing `EXUpdatesAppLauncherWithDatabaseTests` to verify the changes.
[updates-interface][updates][dev-launcher] add EXUpdatesControllerRegistry (#16230)
[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 ```
[ios] Bump deployment target to 12.0 (#14383)* drop ios 11 * update bare-sandbox * forgot some * add PR link to changelogs * Update packages/expo-cellular/CHANGELOG.md Co-authored-by
[ios] Bump deployment target to 12.0 (#14383)* drop ios 11 * update bare-sandbox * forgot some * add PR link to changelogs * Update packages/expo-cellular/CHANGELOG.md Co-authored-by: Expo CI <[email protected]> * et pod-install after rebase Co-authored-by: Expo CI <[email protected]>
[expo-dev-launcher][expo-updates] reset updates module state on each load (#13346)
[expo-updates-interface] rename iOS protocol to EXUpdatesExternalInterface (#13214)
[expo-updates-interface] make Update nullable in onSuccess callback (#13136)
[expo-updates-interface][ios] add podspec and EXUpdatesInterface protocol (#13088)# Why iOS counterpart to #13030. Will add Manifest types in a separate later PR, same as Android # How - a
[expo-updates-interface][ios] add podspec and EXUpdatesInterface protocol (#13088)# Why iOS counterpart to #13030. Will add Manifest types in a separate later PR, same as Android # How - add protocol and podspec - rename expo-updates' internal EXUpdatesInterface to EXUpdatesModuleInterface to prevent class name collision # Test Plan manual tests in later PRs # Checklist - [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.io and README.md). - [x] This diff will work correctly for `expo build` (eg: updated `@expo/xdl`). - [x] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin).