chore(cli): delete @expo/dev-server (#24272)# Why - I tried this before but the logs endpoint was blocking it. - I forked the dev server when I wrote the original `expo/cli`, been meaning to d
chore(cli): delete @expo/dev-server (#24272)# Why - I tried this before but the logs endpoint was blocking it. - I forked the dev server when I wrote the original `expo/cli`, been meaning to delete the original for a while. The duplicate code and indirection is making the new server features harder to implement. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How - Copy/paste remaining code from `@expo/dev-server` in to `@expo/cli`. - Delete `@expo/dev-server`. - Drop unused `/logs` and json parser middleware. - Drop logging mocks. - Drop experimental Webpack native support. - Drop legacy react-native middleware support (no longer needed since everything is versioned). <!-- How did you build this feature or fix this bug and why? --> # Test Plan - Tests should keep passing. - Need to do some actual runs since there aren't any e2e tests for various parts of dev-server. <!-- 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]>
show more ...
[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]>
fix(cli, dev-server): add `SYSTEMROOT` for `open` when opening browsers on Windows (#23287)# Why Fixes #23252 # How - `open` has a bug on Windows, where it [uses `process.env.SYSTEMROOT`]
fix(cli, dev-server): add `SYSTEMROOT` for `open` when opening browsers on Windows (#23287)# Why Fixes #23252 # How - `open` has a bug on Windows, where it [uses `process.env.SYSTEMROOT`](https://github.com/sindresorhus/open/blob/main/index.js#L173) instead of [`process.env.SystemRoot`](https://en.wikipedia.org/wiki/Environment_variable#:~:text=The%20%25SystemRoot%25%20variable%20is%20a,including%20the%20drive%20and%20path.) - This causes the executed command to run with `undefined\\...` - There has been no fix yet, and due to `open` being fully ESM now, we probably can't upgrade too > See various issues [#300](https://github.com/sindresorhus/open/issues/300), [#292](https://github.com/sindresorhus/open/issues/292), [#270](https://github.com/sindresorhus/open/issues/270), or [#205](https://github.com/sindresorhus/open/issues/205) This basically sets the missing `SYSTEMROOT` when trying to open a browser on Windows. It's fixed in both `@expo/cli` as well as `@expo/dev-server` (to open the Chrome DevTools). # Test Plan This has to be tested on Windows. - `$ yarn create expo ./test-browser -t tabs@beta` - `$ cd ./test-browser` - `$ yarn start` - Try pressing the following keys: - `j` -> to open the Chrome DevTools, after connecting a device. Should work as expected. - `w` -> to open the browser with Metro web. Should work as expected. # 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]>
various cli fixes (#22738)Co-authored-by: Expo Bot <[email protected]>
feat(cli): Add ability to switch runtimes during start. (#22924)# Why - We're going to start making the `--dev-client` flag be on more aggressively, i.e. favoring custom builds over Expo Go mor
feat(cli): Add ability to switch runtimes during start. (#22924)# Why - We're going to start making the `--dev-client` flag be on more aggressively, i.e. favoring custom builds over Expo Go more. - This doesn't lean one way or the other, but it does make it easier to course correct if we guess wrong. We'll also be adding an explicit flag to force the initial mode. - Some caveats: - The custom `--scheme` is not currently respected. - Non-dev-client runs will validate versions, here we don't validate versions during the swap. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How - Press `s` to swap runtime modes. This can happen with `npx expo start`, `run:ios`, and `run:android` <!-- How did you build this feature or fix this bug and why? --> # Test Plan - TBD # 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]> Co-authored-by: Brent Vatne <[email protected]>
[cli][dev-menu][go] add react devtools (#21462)# Why close ENG-7468 close ENG-7469 # How - [cli] add websocket proxy to forward react-devtools events. - [cli] add static page for react-d
[cli][dev-menu][go] add react devtools (#21462)# Why close ENG-7468 close ENG-7469 # How - [cli] add websocket proxy to forward react-devtools events. - [cli] add static page for react-devtools frontend. since react-devtools only ships commonjs format, this pr tries to use jspm to support it on browsers. - [dev-menu][go] listen `reconnectDevTools` metro websocket event and send `RCTDevMenuShown` to js for app to reconnect devtools websocket # Test Plan manual test only. please let me know if there's any proper points to add unit tests
feat: support Hermes debugger on native when Metro web is running. (#21068)# Why Hermes debugger doesn't work when Metro web is enabled because the endpoints are being intercepted by the histor
feat: support Hermes debugger on native when Metro web is running. (#21068)# Why Hermes debugger doesn't work when Metro web is enabled because the endpoints are being intercepted by the history fallback middleware. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How - Detect inspector proxy requests and skip returning the index.html. - Add better error handling for Apple script failing to launch Chrome (which can sometimes happen when using chrome for web). <!-- How did you build this feature or fix this bug and why? --> # Test Plan - Added tests for endpoint logic - `npx create-react-native-app -t with-router` `expo.jsEngine: hermes` -> open ios -> press `j` -> doesn't fail. <!-- 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]>
[cli] Fix start hermes debugger crash when starting with --dev-client (#19919)
[cli][dev-server] Fix hermes debugger error on windows and linux (#19872)* [cli] Fix hermes debugger error on windows and linux * update changelog * fix ci error * Apply suggestions from c
[cli][dev-server] Fix hermes debugger error on windows and linux (#19872)* [cli] Fix hermes debugger error on windows and linux * update changelog * fix ci error * Apply suggestions from code review Co-authored-by: Evan Bacon <[email protected]> * remove dev-server.tgz * move BrowserImpl to platform separated LaunchBrowerImpl files * move createTempBrowserDir to platform implementations * rebuild js Co-authored-by: Evan Bacon <[email protected]>
feat(cli): display the debug option more prominently in Terminal UI (#19793)* feat(cli): display the debug option more prominently in Terminal UI * Update packages/@expo/cli/CHANGELOG.md Co-a
feat(cli): display the debug option more prominently in Terminal UI (#19793)* feat(cli): display the debug option more prominently in Terminal UI * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]> * Update docs/pages/guides/using-hermes.mdx Co-authored-by: Aman Mittal <[email protected]> Co-authored-by: Expo Bot <[email protected]> Co-authored-by: Aman Mittal <[email protected]>
[cli] ensure that development build is installed when opening interstitial page (#18836)Co-authored-by: evanbacon <[email protected]>
feat(cli): add web support to metro (#17927)* feat: add web support for metro * undo patch * Update index.js * Update MetroBundlerDevServer.ts * Add second bundler dev server * Add d
feat(cli): add web support to metro (#17927)* feat: add web support for metro * undo patch * Update index.js * Update MetroBundlerDevServer.ts * Add second bundler dev server * Add dev loading view to web * Put feature behind EXPO_USE_METRO_WEB flag * Move custom config into CLI * Add support for assets across platforms * reduce * Added upstream web support * Update webTemplate.ts * Update CHANGELOG.md * Update instantiateMetro.ts * Update instantiateMetro.ts * Update index.js * Added bundle splitting support * Update startAsync.ts * Fixed default settings * Add ability to copy from public folder * wip: redirect unmatched routes to `/` on web * fix fallback api * Update exportApp.ts * Update instantiateMetro.ts * Update exportApp.ts * clean up handler * fixup * clean up * add web to export test * Update start-test.ts * added static serving for web * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]> * Update yarn.lock lint fix fix tests * Update export-test.ts * added template tests * Create HistoryFallbackMiddleware-test.ts * test ManifestMiddleware * Create ServeStaticMiddleware-test.ts * refactor multiplatform * Update ManifestMiddleware-test.ts * Update withMetroMultiPlatform.ts * Update for latest metro * Update packages/@expo/cli/src/export/resolveOptions.ts Co-authored-by: Expo Bot <[email protected]>
chore(cli): migrate to debug package (#17084)* chore(cli): migrate to debug package * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]
chore(cli): migrate to debug package (#17084)* chore(cli): migrate to debug package * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]> * Update checkPackages.ts * Update packages/@expo/cli/src/start/platforms/android/ADBServer.ts * Update ADBServer.ts * Update activateWindow.ts * Update adb.ts * migrate new methods to debug * Update variadic.ts * Update yarn.lock Co-authored-by: Expo Bot <[email protected]>
fix(cli): allow bail out from TerminalUI (#16818)* Allow quitting from terminal UI * Update CHANGELOG.md * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <34669131+expo-bo
fix(cli): allow bail out from TerminalUI (#16818)* Allow quitting from terminal UI * Update CHANGELOG.md * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]> Co-authored-by: Expo Bot <[email protected]>
fix(cli): fix type errors (#16724)* fix(cli): fix type errors * Update CHANGELOG.md * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]
fix(cli): fix type errors (#16724)* fix(cli): fix type errors * Update CHANGELOG.md * Update packages/@expo/cli/CHANGELOG.md Co-authored-by: Expo Bot <[email protected]> * fix typecheck * Update yarn.lock * Update package.json * Update MetroTerminalReporter.ts Co-authored-by: Expo Bot <[email protected]>
chore: refactor `expo/cli` to `@expo/cli` package (#16717)* chore: refactor `expo/cli` to `@expo/cli` package * Update CODEOWNERS * fix linking * fix lint script * fix build file * f
chore: refactor `expo/cli` to `@expo/cli` package (#16717)* chore: refactor `expo/cli` to `@expo/cli` package * Update CODEOWNERS * fix linking * fix lint script * fix build file * fix e2e tests * lint before build * use mock version