Apple TV support 2: add TV template, fix config plugin, add CI (#24411)
[expo-updates] Add fingerprintExperimental runtime version policy (#24126)# Why Manually handling runtimeVersions is a big pain for projects that uses native modules. This PR adds a new runtime
[expo-updates] Add fingerprintExperimental runtime version policy (#24126)# Why Manually handling runtimeVersions is a big pain for projects that uses native modules. This PR adds a new runtime policy that handles this automatically. See: https://discord.com/channels/695411232856997968/1142023605908156476/1142023605908156476 # How Using [expo-fingerprint](https://github.com/expo/expo/tree/main/packages/@expo/fingerprint#readme) to auto-generate a hash for the project. # Test Plan I made the changes locally on a working project and the build was successfully with expo prebuild. I checked the native files and the runtime version was set to the project hash. # Checklist - [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). --------- Co-authored-by: Expo Bot <[email protected]> Co-authored-by: Aman Mittal <[email protected]> Co-authored-by: Kudo Chien <[email protected]> Co-authored-by: Douglas Lowder <[email protected]>
show more ...
[config-types] Remove classic updates (#24066)
[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)Why --- Prettier 3 is out. Add support for it with this linter config. **Note for reviewer:** the first commit is the one with th
[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)Why --- Prettier 3 is out. Add support for it with this linter config. **Note for reviewer:** the first commit is the one with the actual changes. The rest of this PR are changes to get the linter passing (mostly autofix). How --- Update eslint-config-prettier and eslint-plugin-prettier. To address deprecation warnings, also update typescript-eslint/parser and typescript-eslint/eslint-plugin. Because of an update to typescript-eslint/parser, we need to suppress deprecation warnings (documented in a comment). Regenerated test snapshots. Due to the upgraded dependencies, typecasts and optional chaining are now auto-fixable by lint. This converts warnings into autofixes. Test Plan --- `yarn test` in the linter config. Run `expotools check --all --fix-lint --no-build --no-test --no-uniformity-check` to try this config on the whole repo. --------- Co-authored-by: Expo Bot <[email protected]>
[workspace] Bump TypeScript version to 5.1.3 (#23143)# Why Closes ENG-9088 # How Bump TypeScript to the latest, and rebuild all required SDK packages Had to update `typeRoots` inside `
[workspace] Bump TypeScript version to 5.1.3 (#23143)# Why Closes ENG-9088 # How Bump TypeScript to the latest, and rebuild all required SDK packages Had to update `typeRoots` inside `expo-module-scripts` due to a change in TypeScript 5.1 where it no longer walks up automatically looking in parent directories ([Release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-rc/#typeroots-are-consulted-in-module-resolution)) # Test Plan Ensure that `et cp -a` yields no errors, docs and tools build correctly, and that CI is green # 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).
refactor(config-plugins): add existing native files ignore option (#23165)# Why Part of ENG-8481 This option helps to align the entitlements more to what users would expect. With this, we ca
refactor(config-plugins): add existing native files ignore option (#23165)# Why Part of ENG-8481 This option helps to align the entitlements more to what users would expect. With this, we can fetch the entitlements without the native files, if the user has gitignored them. > Note, this is an opt-in and does not change the default behavior. # How - Added opt-in option `ignoreExistingNativeFiles` to `evalModsAsync` # Todo In EAS CLI, we already know if the user has ignored certain paths. With this feature, we can enable this option (with the proper warnings and opt-out if they need to). See: https://github.com/expo/eas-cli/pull/1906 # Test Plan See added tests. > **Note** > I created the glob mocks by using the vscode launch config, and added a breakpoint whenever an "unexpected" glob was used. By doing that through vscode, I could quickly find all globs that were executed for this test. See config below if you want to try it too. <details><summary>vscode launch config</summary> ```json { "configurations": [ { "name": "Test mods", "request": "launch", "runtimeArgs": ["jest", "--verbose", "withIosBaseMods"], "runtimeExecutable": "yarn", "cwd": "${workspaceFolder}/packages/@expo/config-plugins", "skipFiles": ["<node_internals>/**"], "type": "node", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" } ] } ``` </details> # 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).
[config-plugins][prebuild-config] remove deprecated package in AndroidManifext.xml (#23056)# Why seeing a gradle build warning from a sdk49 project after prebuild: ``` > Task :app:processDeb
[config-plugins][prebuild-config] remove deprecated package in AndroidManifext.xml (#23056)# Why seeing a gradle build warning from a sdk49 project after prebuild: ``` > Task :app:processDebugMainManifest package="com.sdk49" found in source AndroidManifest.xml: /Users/kudo/sdk49/android/app/src/main/AndroidManifest.xml. Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated. Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information. /Users/kudo/sdk49/android/app/src/debug/AndroidManifest.xml:21:9-30:20 Warning: provider#expo.modules.filesystem.FileSystemFileProvider@android:authorities was tagged at AndroidManifest.xml:21 to replace other declarations but no other declaration present ``` # How we have the filled the application id to **build.gradle** `namespace` in the `withPackageGradle` plugin already. this pr just removes the deprecated `withPackageManifest` plugin. # Test Plan - ci passed
[templates][config-plugins][dev-server] aligned hermesEnabled property (#21067)# Why react-native 0.71 introduces `hermesEnabled` gradle property which is conflict with the original `expo.jsEngi
[templates][config-plugins][dev-server] aligned hermesEnabled property (#21067)# Why react-native 0.71 introduces `hermesEnabled` gradle property which is conflict with the original `expo.jsEngine` in gradle.properties. this pr tries to align the `hermesEnabled` as upstream. close ENG-7228 # How deprecate `expo.jsEngine` in **gradle.properties** and use `hermesEnabled` instead. # Test Plan ci passed
feat(cli,router): support src/app directory in Expo Router (#22748)# Why - related https://github.com/expo/router/pull/629 <!-- Please describe the motivation for this PR, and link to releva
feat(cli,router): support src/app directory in Expo Router (#22748)# Why - related https://github.com/expo/router/pull/629 <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How <!-- How did you build this feature or fix this bug and why? --> # Test Plan <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # 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: Expo Bot <[email protected]>
Disable minimum frame duration by default (CADisableMinimumFrameDurationOnPhone) (#22751)# Why A lot of users would benefit from this functionality but aren't aware of its existence. This chang
Disable minimum frame duration by default (CADisableMinimumFrameDurationOnPhone) (#22751)# Why A lot of users would benefit from this functionality but aren't aware of its existence. This change will make `CADisableMinimumFrameDurationOnPhone` be set in the prebuild template by default. Users can overwrite the value with the following `app.json` configuration: ```json { "expo": { "ios": { "infoPlist": { "CADisableMinimumFrameDurationOnPhone": false } } } } ``` - It's unclear if this feature has any negative side-effects. --------- Co-authored-by: Expo Bot <[email protected]>
[@expo/config-plugins] Add comment to withUpdates to attempt to preempt bugs (#22737)
[config-plugins] mark target as signable/non-signable (#22454)# Why Part of a fix for https://github.com/expo/eas-cli/issues/1812. A user has a project with a framework target. EAS CLI expects
[config-plugins] mark target as signable/non-signable (#22454)# Why Part of a fix for https://github.com/expo/eas-cli/issues/1812. A user has a project with a framework target. EAS CLI expects him to set up credentials for that target. # How - `findApplicationTargetWithDependenciesAsync` is used in EAS CLI to find targets for which we need to set up credentials. - Framework targets are not signable. Mark them as non-signable. # Test Plan Added test case.
feat(config plugins): better support out of tree support (#22209)# Why Fix various validation issues when using `nexpo prebuild --platform windows --template https://github.com/microsoft/react
feat(config plugins): better support out of tree support (#22209)# Why Fix various validation issues when using `nexpo prebuild --platform windows --template https://github.com/microsoft/react-native-windows-samples/tree/main/samples/AppServiceDemo` <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How <!-- How did you build this feature or fix this bug and why? --> # Test Plan <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # 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: Expo Bot <[email protected]>
[docs] Update references to expo install/run to npx expo install/run (#22197)# Why We should point to `npx expo *` instead of just `expo *` everywhere # How Search/replace ---------
[docs] Update references to expo install/run to npx expo install/run (#22197)# Why We should point to `npx expo *` instead of just `expo *` everywhere # How Search/replace --------- Co-authored-by: Aman Mittal <[email protected]> Co-authored-by: Bartosz Kaszubowski <[email protected]>
[config-plugins][updates] Add support for config.updates.useClassicUpdates defaulting behavior (#22169)
fix(config-plugins): default to `['dangerous']` sort order when using unknown platforms (#22224)# Why Follow-up of #22201 # How When using arbitrary platforms, like `foobar`, the sort orde
fix(config-plugins): default to `['dangerous']` sort order when using unknown platforms (#22224)# Why Follow-up of #22201 # How When using arbitrary platforms, like `foobar`, the sort order is not defined. This results in errors like:  Instead, this change adds a default sorting order of `['dangerous']` when using arbitrary platforms. # Test Plan - Clone the example repository: https://github.com/byCedric/custom-prebuild-example - Create a tarball from template `$ cd ./template && npm pack` - Run `$ expo prebuild --platform macos --template ../template/custom-prebuild-template-1.0.0.tgz` This should not fail as the screenshot above. # 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).
[config-types][config-plugins] additional values for updates.checkAutomatically (#22119)
feat(metro-config): add postcss (#22032)# Why - Required for modifying CSS and supporting Tailwind on web (but also universally). - Eventually we'll want to add some postcss transforms by defa
feat(metro-config): add postcss (#22032)# Why - Required for modifying CSS and supporting Tailwind on web (but also universally). - Eventually we'll want to add some postcss transforms by default (standard in the web community). <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How - Write a `postcss` parser which loads the user config. - `postcss.config.js` and `postcss.config.json` are the only supported config files. https://github.com/webpack-contrib/postcss-loader/blob/ef332db57381ed1d8aaa4a9a20eec0e0b21fdb7c/src/utils.js#L64-L114 - Process input CSS with postcss config and pass output to standard CSS loading process. - TBD: More advanced Metro cache invalidation. - We currently have a basic hashing system which auto invalidates the transformer when the config file and browserslist options change. <!-- How did you build this feature or fix this bug and why? --> # Test Plan - Added minor tests for certain parts of the flow but nothing e2e. <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # 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: Expo Bot <[email protected]>
chore(prebuild-config, config-plugins): rewrite tests to use latest template for fixtures (#21339)# Why - The previous tests were using static representations of the versioned fixtures. This me
chore(prebuild-config, config-plugins): rewrite tests to use latest template for fixtures (#21339)# Why - The previous tests were using static representations of the versioned fixtures. This meant that many tests were possibly outdated. - Now that the CLI is versioned, we can test against the latest templates to ensure our config plugins are always up to date. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How - Pull in fixtures from the local template. - Rewrite tests to work with new fixtures. <!-- How did you build this feature or fix this bug and why? --> # Test Plan - Tests should continue to pass. --------- Co-authored-by: Expo Bot <[email protected]>
[config-plugins] Apply react-native-maps AppDelegate plugin fix from @pchmn (#21333)# Why Fixes #21282 # How Copy over @pchmn's [suggested fix](https://github.com/expo/expo/issues/21282#i
[config-plugins] Apply react-native-maps AppDelegate plugin fix from @pchmn (#21333)# Why Fixes #21282 # How Copy over @pchmn's [suggested fix](https://github.com/expo/expo/issues/21282#issuecomment-1437421616) and update tests to ensure it works as expected. # Test Plan Run tests. Copy code to node_modules and test prebuild against [repro](https://github.com/pchmn/test-expo-sdk-48) # Checklist - [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 `expo prebuild` & EAS Build (eg: updated a module plugin).
Switch default JS engine to Hermes (#21001)# Why Closes ENG-7163 # How Update `@expo/config-plugins`, `@expo/dev-server`, all templates and `packages/expo-manifest` to use Hermes as the d
Switch default JS engine to Hermes (#21001)# Why Closes ENG-7163 # How Update `@expo/config-plugins`, `@expo/dev-server`, all templates and `packages/expo-manifest` to use Hermes as the default JS engine Follow ups - [x] Update `Using Hermes Engine` guide (https://github.com/expo/expo/pull/21047) - [x] Update xdl schema (https://github.com/expo/universe/pull/11355) # Test Plan ```bash # create a new project npx create-expo-app hermes-app cd hermes-app # run local expo cli nexpo prebuild --no-install ``` # 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) - [x] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin). --------- Co-authored-by: Douglas Lowder <[email protected]>
refactor: remove deprecated facebook types and plugins (#21018)# Why Fixes ENG-7363 # How Removed all plugins and types for `expo-facebook` and `expo-ads-facebook`. # Test Plan Make
refactor: remove deprecated facebook types and plugins (#21018)# Why Fixes ENG-7363 # How Removed all plugins and types for `expo-facebook` and `expo-ads-facebook`. # Test Plan Make sure CI passes, everything should be buildable and all tests should pass. # 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).
[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.
[workspace] bump and align TypeScript version (#20392)
Removed support for deprecated `expo.ios.config.googleSignIn.reservedClientId` in favor of `expo.ios.googleServicesFile`. (#20376)# Why - Follow up for https://github.com/expo/universe/pull/1044
Removed support for deprecated `expo.ios.config.googleSignIn.reservedClientId` in favor of `expo.ios.googleServicesFile`. (#20376)# Why - Follow up for https://github.com/expo/universe/pull/10442 - Fix typo reserved -> reversed <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # Test Plan - Unit tests Co-authored-by: Expo Bot <[email protected]>
12