| 8e07b095 | 25-Sep-2023 |
Mark Lawlor <[email protected]> |
feat(metro-config): Enable isCSSEnabled by default (#24489)
# Why
ENG-9887
# How
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
<!--
Please describe h
feat(metro-config): Enable isCSSEnabled by default (#24489)
# Why
ENG-9887
# 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]>
Co-authored-by: Aman Mittal <[email protected]>
show more ...
|
| 1c8e3ea0 | 25-Sep-2023 |
Mark Lawlor <[email protected]> |
feat(cli): Enable tsconfigPaths by default (#24490)
# Why
ENG-9888
# How
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
<!--
Please describe how you t
feat(cli): Enable tsconfigPaths by default (#24490)
# Why
ENG-9888
# 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]>
Co-authored-by: Aman Mittal <[email protected]>
show more ...
|
| 6fbb1ad1 | 25-Sep-2023 |
Brent Vatne <[email protected]> |
[changelog] Sync from sdk-49 |
| a2441f5f | 21-Sep-2023 |
Mark Lawlor <[email protected]> |
feat: separate Expo Web & Metro types from router (#24255)
# Why
[ENG-9978
](https://linear.app/expo/issue/ENG-9978/split-the-typed-environment-feature-out-of-typed-routes)
Expo Router includ
feat: separate Expo Web & Metro types from router (#24255)
# Why
[ENG-9978
](https://linear.app/expo/issue/ENG-9978/split-the-typed-environment-feature-out-of-typed-routes)
Expo Router included TypeScript definitions for Expo Web and Metro. I'm
not 100% sure the best place to move these types too, so I'm open to
suggestions.
`expo` for Expo Web, as there is no Expo Web package and these are
global environment types.
`@expo/metro-config`. Its a bit weird putting these types in the config
package, but this is also where a lot of the related code is.
# 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 ...
|
| 34a1b52d | 21-Sep-2023 |
Mark Lawlor <[email protected]> |
fix(router): correctly clone hoisted groups (#24218)
# Motivation
Fixes: https://github.com/expo/router/issues/805
Hoisted routes inside array groups were not being correctly cloned. The
matc
fix(router): correctly clone hoisted groups (#24218)
# Motivation
Fixes: https://github.com/expo/router/issues/805
Hoisted routes inside array groups were not being correctly cloned. The
matcher was not detecting the hoisted route and the cloning logic
assumed one set of groups, but a hoisted route may have many.
# Execution
* Updated `matchGroupName` regex to allow for leading/trailing folder
names.
* Updated `fileNodeToRouteNode` logic to extrapolate multiple array
groups
# Test Plan
Modified the example in https://github.com/expo/router/issues/805 to
include a set of nested groups as well.
File tree is
```
events/_layout // <Slot />
events/(manage,preview)/_layout // <Slot />
events/(manage,preview)/[eventId]
events/(manage,preview)/(a,b)/_layout // <Slot />
events/(manage,preview)/(a,b)/test
```
Current (2.0.4) Sitemap:

After:

---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| 1a3a1db5 | 20-Sep-2023 |
Evan Bacon <[email protected]> |
Update tsconfigs to node 18 (current LTS) (#24471)
# Why
Expo supports Node.js LTS, this is currently Node 18. This PR updates
from 14 to 18.
<!--
Please describe the motivation for this PR,
Update tsconfigs to node 18 (current LTS) (#24471)
# Why
Expo supports Node.js LTS, this is currently Node 18. This PR updates
from 14 to 18.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| d43fb2a3 | 20-Sep-2023 |
Evan Bacon <[email protected]> |
feat(server): add Netlify adapter (#24510)
# Why
- Add adapter and guide for publishing Expo Router v3 websites/api
routes to Netlify.
---------
Co-authored-by: Expo Bot <34669131+expo-bot
feat(server): add Netlify adapter (#24510)
# Why
- Add adapter and guide for publishing Expo Router v3 websites/api
routes to Netlify.
---------
Co-authored-by: Expo Bot <[email protected]>
Co-authored-by: Aman Mittal <[email protected]>
show more ...
|
| cd4367ed | 20-Sep-2023 |
Evan Bacon <[email protected]> |
feat(cli): Improve truncated Metro Node.js errors. (#24546)
# Why
Split errors by lines and measure to ensure we're only tested against
libraries with one really long line.
---------
Co-au
feat(cli): Improve truncated Metro Node.js errors. (#24546)
# Why
Split errors by lines and measure to ensure we're only tested against
libraries with one really long line.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| e015d41c | 20-Sep-2023 |
Evan Bacon <[email protected]> |
feat(cli): reduce static group routes (#24529)
# Why
- In server mode, we don't need to export every group variation because
the server can automatically delegate all matchable paths to the sing
feat(cli): reduce static group routes (#24529)
# Why
- In server mode, we don't need to export every group variation because
the server can automatically delegate all matchable paths to the single
group file.
- This change only exports one static HTML file for a given group route
when server mode is used in export, this can drastically reduce the
amount of output files.
# Test Plan
- Added an e2e test to ensure the path variation is served as expected.
<!--
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 ...
|
| 039366f0 | 20-Sep-2023 |
Kudo Chien <[email protected]> |
Publish @expo/fingerprint
@expo/[email protected] |
| 58a01325 | 20-Sep-2023 |
Cedric van Putten <[email protected]> |
docs(package-manager): move fix out of `1.2.0` as its not released yet |
| 82c7d456 | 20-Sep-2023 |
Cedric van Putten <[email protected]> |
fix(package-manager): detect `bun` before `yarn` to allow `bun install --yarn` usage (#24360)
# Why
Some people value readable lock files, and unfortunately, `bun.lockb`
isn't readable. Bun has
fix(package-manager): detect `bun` before `yarn` to allow `bun install --yarn` usage (#24360)
# Why
Some people value readable lock files, and unfortunately, `bun.lockb`
isn't readable. Bun has a feature for this, where it exports both a
`bun.lockb` and `yarn.lock` (based on `bun.lockb`).
For that reason, we should resolve `bun` before `yarn`. If people use
`bun install --yarn`, we always resolve to `yarn`.
# How
- Move `bun` detection before `yarn`.
# Test Plan
- `$ bun create expo ./test -t tabs`
- `$ cd ./test`
- `$ bun install --yarn`
- `$ bun expo install`
- _Should use `bun` to 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)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
show more ...
|
| 1aeb130d | 20-Sep-2023 |
Kudo Chien <[email protected]> |
[fingerprint] revamp config-plugins sourcer (#24520)
# Why
originally, for local config-plugins we will include the entire app directory from generating fingerprints. in this state, fingerprint i
[fingerprint] revamp config-plugins sourcer (#24520)
# Why
originally, for local config-plugins we will include the entire app directory from generating fingerprints. in this state, fingerprint is kind of useless, e.g. just updating README.md will have new fingerprint. this pr tries to follow local config-plugins dependencies and only includes necessary files from hashing.
# How
based on Evan's great suggestion, to create a process to call `getConfig()` and inspect the loaded modules by `module._cache`. this pr introduces a **ExpoConfigLoader.js** to load that. also passing ignoredPaths to the loader so that we don't have to pass the known/useless loadedModules back to caller process.
show more ...
|
| feefc930 | 19-Sep-2023 |
Kudo Chien <[email protected]> |
[config] fix withAnonymous raw config-plugin name serialization (#24363)
# Why
fix config plugins raw functions serialization for anonymous functions
# How
it's better to use `||` in the ch
[config] fix withAnonymous raw config-plugin name serialization (#24363)
# Why
fix config plugins raw functions serialization for anonymous functions
# How
it's better to use `||` in the checking to get `withAnonymous` name works
show more ...
|
| 62f76105 | 18-Sep-2023 |
Brent Vatne <[email protected]> |
Publish packages
@expo/[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] expo-module-
Publish packages
@expo/[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
show more ...
|
| 2d4e7de9 | 18-Sep-2023 |
Evan Bacon <[email protected]> |
router v3 public fixes (#24472)
# Why
- Some small fixes for Expo Router v3 based on the alpha release
---------
Co-authored-by: Expo Bot <[email protected]> |
| ff40b4b3 | 15-Sep-2023 |
Brent Vatne <[email protected]> |
Publish packages
@expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] [email protected] [email protected] |
| 46f023fa | 15-Sep-2023 |
Evan Bacon <[email protected]> |
[RFC] API Routes in Expo Router (#24429)
# Why
Servers are an important part of developing many different types of
apps, but they're much harder to configure than they need to be.
API Routes
[RFC] API Routes in Expo Router (#24429)
# Why
Servers are an important part of developing many different types of
apps, but they're much harder to configure than they need to be.
API Routes will enable users to express some abstract JavaScript code
that runs in a server by simply creating a file in the app directory,
and adding the `+api.js` suffix. For example, to securely interact with
OpenAI, simply:
```ts
// app/generate+api.ts
import { ExpoRequest, ExpoResponse } from 'expo-router/server';
export async function POST(req: ExpoRequest): Promise<ExpoResponse> {
const { prompt } = await req.json();
const json = await fetch('https://api.openai.com/v1/engines/text-davinci-003/completions', {
headers: {
'Content-Type': 'application/json',
// `OPENAI_API_KEY` is pulled from the .env file when running in Expo CLI.
Authorization: `Bearer ${process.env.OPENAI_API_KEY ?? ''}`,
},
method: 'POST',
body: JSON.stringify({
prompt,
max_tokens: 100,
}),
}).then(res => res.json());
// Return as JSON
return ExpoResponse.json(json);
}
```
This will be served at `http://localhost:8081/generate` with `npx expo`
and can be used by making a request:
```sh
$ curl -X POST -H "Content-Type: application/json" -d \'{"prompt":"Hello, my name is"}\' http://localhost:8081/generate
```
Expo Router polyfills the URL and `window.location` object on native to
allow for universally requesting with a relative URL:
```js
// Expo prepends the host and port to the URL automatically in development.
const json = await fetch('/generate').then(res => res.json());
```
# How
- API Routes are bundled with Metro, leveraging all the same
functionality as the rest of the app and website.
- The project babel config is used to transpile the API routes.
Indication is passed to the Babel caller via the `isServer` boolean.
This can be used to change the preset based on the environment.
- Each API route is bundled into a standalone file in the `dist/_expo`
directory. This is akin to ncc, the tool we use to make Create Expo App
download in ~1 second.
- Create a new package `@expo/server` which includes the requisite
middleware and runtime polyfills for the Expo server environment.
- Add a new routes manifest which will be used by `@expo/server` to
serve up the three types of routes: HTML routes, API routes, and not
found routes (404s).
- Add a new export `expo-router/server` (potentially will be moved to
`expo/server`) which contains the `ExpoRequest` and `ExpoResponse`
objects. These are all based on the WinterCG specification, and include
some additional properties for interop with the Expo Router filesystem
convention. These are inspired by Remix, SvelteKit, and Next.js for
simplicity.
- Add a new export mode `web.output: "server"` which can be used to
export a dynamic server. Note: I may drop this for now and make server
the default since there's no expo-specific hosting code that must be
exported.
- This PR adds the ability to host the app with an express server,
different production adapters to follow.
# Test Plan
In addition to all the E2E Metro tests, I've added a new E2E runner
which starts a server and pings different requests to ensure expected
behavior. These run in the CLI as opposed to the `@expo/server` package.
- resolve ENG-10057 ENG-8243 ENG-8082 ENG-8079 ENG-8242 ENG-8081
ENG-8080 ENG-9625
---------
Co-authored-by: Expo Bot <[email protected]>
Co-authored-by: Cedric van Putten <[email protected]>
show more ...
|
| ee2c866b | 15-Sep-2023 |
Will Schurman <[email protected]> |
Publish packages
@expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] [email protected]
Publish packages
@expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] @expo/[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
show more ...
|
| 76d98731 | 15-Sep-2023 |
Douglas Lowder <[email protected]> |
Apple TV support 2: add TV template, fix config plugin, add CI (#24411) |
| 4c178d05 | 15-Sep-2023 |
Evan Bacon <[email protected]> |
Move `process.env` polyfill strip to `expo/metro-config`. (#24455)
# Why
Improves the sourcemaps as we aren't modifying the string after the maps
are generated.
---------
Co-authored-by: E
Move `process.env` polyfill strip to `expo/metro-config`. (#24455)
# Why
Improves the sourcemaps as we aren't modifying the string after the maps
are generated.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| 92ddc08b | 14-Sep-2023 |
Evan Bacon <[email protected]> |
Support mocking Node.js externals for client-side bundles. (#24453)
# Why
- Fix regression in https://github.com/expo/expo/pull/24199 which breaks
all Metro web tests.
---------
Co-authore
Support mocking Node.js externals for client-side bundles. (#24453)
# Why
- Fix regression in https://github.com/expo/expo/pull/24199 which breaks
all Metro web tests.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| 7c98c357 | 14-Sep-2023 |
Evan Bacon <[email protected]> |
feat(cli, router, metro, asset): add basePath support (#23911)
# Why
- Add the ability to export websites for hosting from a custom path.
This is required for GitHub pages.
- Resolve ENG-9193
feat(cli, router, metro, asset): add basePath support (#23911)
# Why
- Add the ability to export websites for hosting from a custom path.
This is required for GitHub pages.
- Resolve ENG-9193
- Resolve https://github.com/expo/expo/issues/20562
- Resolve https://github.com/expo/router/issues/165
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
# How
- Add `expo.experiments.basePath` which can be used during `npx expo
export` to modify how assets are referenced.
- Set the `publicPath` in Metro to output as expected.
- Add custom asset writing for web to support stripping the unused
prefix.
- It's unclear if this should also apply to native, and if we should
have platform-specific variations.
- Update Expo Router to support automatically adjusting paths to support
basePath in production builds.
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
- [ ] New `expo export` test.
<!--
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]>
Co-authored-by: Aman Mittal <[email protected]>
show more ...
|
| 0107ef61 | 13-Sep-2023 |
Douglas Lowder <[email protected]> |
[config-plugins][config-types] align with server schema and fix errors (#24430)
# Why
- Align with schema changes (add `supportsTVOnly`)
- Fix test snapshots in `config-plugins`
# How
```
[config-plugins][config-types] align with server schema and fix errors (#24430)
# Why
- Align with schema changes (add `supportsTVOnly`)
- Fix test snapshots in `config-plugins`
# How
```
cd packages/\@expo/config-types
yarn generate --path ../../../../../easProjects/universe/server/www/xdl-schemas/UNVERSIONED-schema.json
npx prettier --write src/ExpoConfig.ts
```
Then fix tests in `config-plugins`.
# Test Plan
Existing tests should pass
# 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 ...
|
| 21bd91d0 | 13-Sep-2023 |
Evan Bacon <[email protected]> |
feat(metro-config)!: replace metroTarget with isServer in babel caller (#24410)
# Why
This is a more pragmatic name, we haven't really rolled the other change
in a capacity that has been used ye
feat(metro-config)!: replace metroTarget with isServer in babel caller (#24410)
# Why
This is a more pragmatic name, we haven't really rolled the other change
in a capacity that has been used yet (only released in `@next`
versions).
# Test Plan
Updated the 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 `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|