Revision Date Author Comments
# 05863844 12-Sep-2023 Evan Bacon <[email protected]>

refactor e2e tests (#24385)

# Why

- Split out of https://github.com/expo/expo/pull/23911
- This PR also adds server tests for static rendering.
- Make it easier to run and test e2e metro code.

refactor e2e tests (#24385)

# Why

- Split out of https://github.com/expo/expo/pull/23911
- This PR also adds server tests for static rendering.
- Make it easier to run and test e2e metro code.
<!--
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]>

show more ...


# f0d67e12 11-Sep-2023 Mateus Craveiro <[email protected]>

[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 ...


# 8a424beb 11-Aug-2023 James Ide <[email protected]>

[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]>

show more ...


# d7ad395f 24-Jun-2023 Evan Bacon <[email protected]>

fix(cli): remove invalid "none" platform (#23080)

# Why

- fix regression introduced in https://github.com/expo/expo/pull/19319
- `none` is passed to the bundler and implies the existence of
`.n

fix(cli): remove invalid "none" platform (#23080)

# Why

- fix regression introduced in https://github.com/expo/expo/pull/19319
- `none` is passed to the bundler and implies the existence of
`.none.js` files, and `Platform.select({ none: '...' })` which isn't
valid.
- The default in classic and all other implementations of the metro dev
server has been to fallback on `ios`.
- The most correct variation would be to fallback on `web` as the web is
a non-standard React Native client which doesn't implement the expo
manifest format. However, (metro) web isn't enabled in every project,
and if it were then the JSON manifest would be skipped in favor of the
HTML file.
- remove unneeded logs about offline and anonymous.
- add force-manifest-type options to help prompt.

<!--
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]>

show more ...


# e32ccf9f 21-Jun-2023 Evan Bacon <[email protected]>

feat(cli): improve offline support (#22961)

# Why

Offline support is sometimes needed in parts of other commands besides
`start`, this PR introduces an `EXPO_OFFLINE` env var which can be
gener

feat(cli): improve offline support (#22961)

# Why

Offline support is sometimes needed in parts of other commands besides
`start`, this PR introduces an `EXPO_OFFLINE` env var which can be
generally used to force offline support.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->

# How

- `EXPO_OFFLINE`
- Show a better error message when your computer is connected to wifi
but there's no signal.
- Assert in `npx expo login` and `npx expo register` when `EXPO_OFFLINE`
is set.
- Fail better when validating versions offline.

In the case of running `npx expo` without wifi:

## Before

```
june-16 �� nexpo
Starting project at /Users/evanbacon/Documents/GitHub/lab/june-16
Starting Metro Bundler
Unable to reach Expo servers. Falling back to using the cached dependency map (bundledNativeModules.json) from the package "expo" installed in your project.
FetchError: request to https://api.expo.dev/v2/versions/latest failed, reason: getaddrinfo ENOTFOUND api.expo.dev
FetchError: request to https://api.expo.dev/v2/versions/latest failed, reason: getaddrinfo ENOTFOUND api.expo.dev
at ClientRequest.<anonymous> (/Users/evanbacon/Documents/GitHub/expo/node_modules/node-fetch/lib/index.js:1491:11)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:502:9)
at TLSSocket.emit (node:events:513:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
```

## After

```
june-16 �� nexpo
Starting project at /Users/evanbacon/Documents/GitHub/lab/june-16
Starting Metro Bundler
Unable to reach Expo servers. Falling back to using the cached dependency map (bundledNativeModules.json) from the package "expo" installed in your project.
CommandError: Network connection is unreliable. Try again with the environment variable `EXPO_OFFLINE=1` to skip network requests.
```


<!--
How did you build this feature or fix this bug and why?
-->

# Test Plan

- Updated tests and added new tests for things like the register
command.

---------

Co-authored-by: Expo Bot <[email protected]>

show more ...


# 5794e77c 15-May-2023 Will Schurman <[email protected]>

[cli] Fix modern manifest serving for dev client without expo-updates (#22470)


# 1ae005aa 24-Apr-2023 Will Schurman <[email protected]>

[cli] Default to expo go modern manifest format (#22168)


# 9fe3dc72 07-Apr-2023 Will Schurman <[email protected]>

[cli] Remove legacy manifest signing in modern manifest format and fix cached development code signing info (#21989)


# ca1e1b92 05-Apr-2023 Will Schurman <[email protected]>

[cli][dev-client] Fix legacy accept signature parsing in CLI and don't require in dev client (#21970)

# Why

This fixes three interconnected bugs:
1. The header that controls this can be named
`

[cli][dev-client] Fix legacy accept signature parsing in CLI and don't require in dev client (#21970)

# Why

This fixes three interconnected bugs:
1. The header that controls this can be named
`exponent-accept-signature` or `expo-accept-signature`. Not sure of the
history here. This PR makes these consistent. And it might have been
fine to leave this as-is but it's easier to reason about this way IMO.
2. The value of this header is either the string "true" or "false".
`Boolean("false") === true`, so this code was always returning true.
This historically seemed to not matter since all clients (including dev
clients) set this to "true".
3. Dev clients were sending `expo-accept-signature: true` header, which
isn't necessary (dev clients don't need signed manifests since they
don't use scoped modules).

Fixes a portion of
https://linear.app/expo/issue/ENG-6980/fall-back-to-serving-unsigned-manifests-if-a-user-isnt-authorized-to

# Test Plan

1. `et gba -n testwat expo-dev-menu expo-dev-client expo-dev-launcher
expo-updates expo-manifests expo-updates-interface`
2. Logged-in to user that owns an account, `eas update:configure`
3. Log out
4. Log in to a different user that is a viewer on that account.
5. Build on android/ios
6. In `packages/@expo/cli` run `nexpo start --dev-client`
7. Before changes, see that it throws
```
ApiV2Error: Not authorized. You must have DEVELOPER or above access on
the wschurman account to develop this project, or you may remove the
owner listed in app.json to develop this project under your own account.
```
8. After changes, see that it works.

# 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).

show more ...


# b1f66971 17-Dec-2022 Linus Unnebäck <[email protected]>

[@expo/cli] Avoid dependency on uuid (#20479)

# Why

Older versions of uuid is deprecated. This will start using a secure
random source, and will produce one less deprecation warning when
instal

[@expo/cli] Avoid dependency on uuid (#20479)

# Why

Older versions of uuid is deprecated. This will start using a secure
random source, and will produce one less deprecation warning when
installing!

> [email protected]: Please upgrade to version 7 or higher. Older versions may
use Math.random() in certain circumstances, which is known to be
problematic. See https://v8.dev/blog/math-random for details.

# How

The `@expo/cli` package only used the UUID v4 function from a Node.js
context, and Node.js already have a `randomUUID` function built in.

# Test Plan

I'm not sure, since this is used in the tests I'm hoping the CI will
cover it? ��

# 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).

Co-authored-by: Evan Bacon <[email protected]>
Co-authored-by: Evan Bacon <[email protected]>

show more ...


# c14835f6 17-Oct-2022 Will Schurman <[email protected]>

[cli] Fix development code signing for dev client (#19557)


# 921ca1b4 14-Oct-2022 Jon Samp <[email protected]>

[expo-cli] Add platform when running --dev-client (#19319)

* [expo-cli] Add platform when running --dev-client

* updates test

* remove .only

* Use "none" for platform when no platform is pr

[expo-cli] Add platform when running --dev-client (#19319)

* [expo-cli] Add platform when running --dev-client

* updates test

* remove .only

* Use "none" for platform when no platform is provided

* add changelog

* Update error message

* fix unit test

show more ...


# ea99eec9 25-Jul-2022 Evan Bacon <[email protected]>

feat(cli): add telemetry event tracking a command run (#17948)

* add telemetry event tracking a command run

* Ensure user authenticated

* Update rudderstackClient.ts

* Update rudderstackCli

feat(cli): add telemetry event tracking a command run (#17948)

* add telemetry event tracking a command run

* Ensure user authenticated

* Update rudderstackClient.ts

* Update rudderstackClient.ts

* Update CHANGELOG.md

show more ...


# e377ff85 05-Apr-2022 Will Schurman <[email protected]>

feat(cli): add development code signing (#16845)


# 1fb548e8 31-Mar-2022 Will Schurman <[email protected]>

feat(cli): serve modern manifests in multipart format (#16804)


# 29975bfd 28-Mar-2022 Evan Bacon <[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]>

show more ...


# 8d307f52 23-Mar-2022 Evan Bacon <[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

show more ...