| #
04e66b12 |
| 26-Sep-2023 |
Gabriel Donadel Dall'Agnol <[email protected]> |
[dev-launcher] Launch directly into previously opened project (#24614)
# Why
Closes ENG-10041
# How
In order to allow users to launch directly into previously opened
projects, this PR upda
[dev-launcher] Launch directly into previously opened project (#24614)
# Why
Closes ENG-10041
# How
In order to allow users to launch directly into previously opened
projects, this PR updates `startWithWindow` and `handleIntent` to try to
launch from the most recent URL of the RecentlyOpenedAppsRegistry. If
the bundle cannot be loaded, it falls back to the regular launcher.
This also refactors the existing dev-client and dev-launcher config
plugins adding a new `tryToLaunchLastOpenedBundle` parameter to the
Android and iOS plugin config types.
E.g.
```json
"plugins": [
[
"expo-dev-client",
{
"android": {
"tryToLaunchLastOpenedBundle": true
},
"ios": {
"tryToLaunchLastOpenedBundle": true
}
}
]
]
```
# Test Plan
Run dev-client through bare-expo on Android and iOS testing opening the
app directly, with and without "Recent Apps" and opening through deep
links
# Checklist
- [ ] 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: Łukasz Kosmaty <[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 ...
|
| #
026e1885 |
| 16-Sep-2023 |
Alan Hughes <[email protected]> |
[ios][updates] bump sqlite version (#24375)
|
| #
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 ...
|
| #
fec3235c |
| 14-Sep-2023 |
Tomasz Sapeta <[email protected]> |
Update yarn.lock and rebuild expo-background-fetch [skip ci]
|
| #
09a2a2f1 |
| 14-Sep-2023 |
Wojciech Dróżdż <[email protected]> |
Update puppeteer to 21.2.1, jest-puppeteer to 9.0.0 (#24440)
# Why
We are using really old version of puppeteer, which causes the CI tests
in https://github.com/expo/expo/pull/24199 to fail due
Update puppeteer to 21.2.1, jest-puppeteer to 9.0.0 (#24440)
# Why
We are using really old version of puppeteer, which causes the CI tests
in https://github.com/expo/expo/pull/24199 to fail due to outdated
chromium
# How
- Updated `puppeteer` to 21.2.1
- Updated `jest-puppeteer` to 9.0.0
- Disabled the `KeepAwake` test, because the new chromium didn't give
sufficient permissions to use it.
show more ...
|
| #
b7d15820 |
| 13-Sep-2023 |
Cedric van Putten <[email protected]> |
chore(create-expo): move package from `expo/expo-cli` to `expo/expo` (#24373)
# Why
Moving this actively used/developed package from
[expo/expo-cli](https://github.com/expo/expo-cli) to
[expo/e
chore(create-expo): move package from `expo/expo-cli` to `expo/expo` (#24373)
# Why
Moving this actively used/developed package from
[expo/expo-cli](https://github.com/expo/expo-cli) to
[expo/expo](https://github.com/expo/expo).
> ⚠️ ~~Blocked by `@expo/package-manager` changes being merged only in
`sdk-49` and not `main`. See https://github.com/expo/expo/pull/24376~~
> Merged in this PR!
# How
- Copied project into **packages/create-expo-app**
- Applied various changes to fit it in the repository
# Test Plan
See CI
# 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 ...
|
| #
22f8ba00 |
| 12-Sep-2023 |
Tomasz Sapeta <[email protected]> |
Fix yarn.lock and lint issues
|
| #
db9a8321 |
| 12-Sep-2023 |
Brent Vatne <[email protected]> |
[modules-test-core] Add missing xml-js dependency (#24383)
|
| #
558626bf |
| 11-Sep-2023 |
aleqsio <[email protected]> |
[expo-module-scripts] Generate expo modules structure and mocks from swift (#24064)
|
| #
1562956e |
| 08-Sep-2023 |
Kudo Chien <[email protected]> |
update yarn.lock
|
| #
2cc218bf |
| 07-Sep-2023 |
Evan Bacon <[email protected]> |
chore(expo-modules-core)!: remove and deprecate objects (#24298)
# Why
- Remove deprecated `RCTDeviceEventEmitter` (deprecated for years).
- Remove `deprecate` utility function (unused in repo).
chore(expo-modules-core)!: remove and deprecate objects (#24298)
# Why
- Remove deprecated `RCTDeviceEventEmitter` (deprecated for years).
- Remove `deprecate` utility function (unused in repo).
- Deprecate `SyntheticPlatformEmitter` in favor of `DeviceEventEmitter`
(renamed internally in `react-native-web`).
- Remove `compare-versions` package.
- Create web-only mock of side-effect file to reduce bundle size in base
web apps.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
edeec536 |
| 06-Sep-2023 |
Evan Bacon <[email protected]> |
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 ...
|
| #
20739444 |
| 26-Aug-2023 |
Tomasz Sapeta <[email protected]> |
Update yarn.lock [skip ci]
|
| #
72b417e4 |
| 23-Aug-2023 |
Evan Bacon <[email protected]> |
fix(router): Fix error overlay not being applied on web (#24052)
# Why
- regression in #23891.
- fix static rehydration.
- fix react refresh for web in the monorepo.
- fix react-native-web war
fix(router): Fix error overlay not being applied on web (#24052)
# Why
- regression in #23891.
- fix static rehydration.
- fix react refresh for web in the monorepo.
- fix react-native-web warnings.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
c57f1a28 |
| 22-Aug-2023 |
Kudo Chien <[email protected]> |
update yarn.lock [skip ci]
|
| #
63fb203d |
| 21-Aug-2023 |
Kudo Chien <[email protected]> |
chore: update react-native to 0.72.4 (#24044)
close ENG-9814
- update react-native to 0.72.4 - [react-native-lab] cherry pick native changes - [babel-preset-expo] bump `metro-react-native-babel-pre
chore: update react-native to 0.72.4 (#24044)
close ENG-9814
- update react-native to 0.72.4 - [react-native-lab] cherry pick native changes - [babel-preset-expo] bump `[email protected]` - [android][ios] re-version sdk-49 code - [dev-menu][dev-launcher] rebuild js bundles
versioned expo go + sdk 49 project smoke test
show more ...
|
| #
4f473253 |
| 16-Aug-2023 |
Mark Lawlor <[email protected]> |
[expo-camera] Remove @koale/useworker (#23967)
# Why
`@koale/useworker` is only used for Web QR code scanning and has been
causing some issues due to lack of maintenance.
Fixes: https://githu
[expo-camera] Remove @koale/useworker (#23967)
# Why
`@koale/useworker` is only used for Web QR code scanning and has been
causing some issues due to lack of maintenance.
Fixes: https://github.com/expo/expo/issues/17846
Related: https://github.com/expo/expo/issues/23296, and the PR to revert
its 'fix' https://github.com/expo/expo-cli/pull/4746
# How
Refactors the existing code to use vanilla JS
1. We create a inline webworker by creating an inline blob with
`qrWorkerMethod.toString()` (code adapted from `@koale/useworker`)
2. Create a smaller wrapper that tracks messages being sent to the
worker via a queue of promises
As the worker is synchronous and will receive messages in order a simple
First In First Out queue should suffice.
This does _slightly_ change the functionality of the existing code.
1. Previously we created a new Worker for every instance of `<Camera
/>`. Now a single worker is shared across all instances.
1. As the worker is declared in the global scope, it is created
regardless if QR code scanning is enabled. We could lazy initialise it,
but because its extremely small and inline (no network requests) I don't
see this being an issue.
I also removed an extra `useEffect` hook by moving its logic into the
cleanup step of the enabling hook.
show more ...
|
| #
5b5e713e |
| 15-Aug-2023 |
Evan Bacon <[email protected]> |
chore: improve expo router testing (#23795)
# Why
- Ensure the various aspects of `npx expo export` continue to work with
the latest Expo Router/Metro depdencies.
- We had a bundling testing fo
chore: improve expo router testing (#23795)
# Why
- Ensure the various aspects of `npx expo export` continue to work with
the latest Expo Router/Metro depdencies.
- We had a bundling testing for Expo Router but it wasn't linked to the
monorepo so the dependencies weren't in sync.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
# How
- Create a new app in `apps/` which is synchronized with the monorepo.
- This app contains multiple expo-router directories and various dynamic
settings.
- Fold the `expo-router` e2e tests into `@expo/cli`.
- Test static rendering, single-page application exporting, and the
native url polyfill (api).
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
- The CLI E2E tests should pass.
---------
Co-authored-by: Expo Bot <[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 ...
|
| #
a3696c29 |
| 10-Aug-2023 |
Evan Bacon <[email protected]> |
chore(router)!: pull out @bacons/react-views (#23889)
# Why
- Resolve ENG-9691
- Most of the benefits should be folded back in to Expo upstream.
- Simplify the codebase.
---------
Co-auth
chore(router)!: pull out @bacons/react-views (#23889)
# Why
- Resolve ENG-9691
- Most of the benefits should be folded back in to Expo upstream.
- Simplify the codebase.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
9a348a4e |
| 10-Aug-2023 |
Evan Bacon <[email protected]> |
chore(router): pull in stable changes from #23795 (#23890)
# Why
- #23795 is blocked on some difficult issues. This PR pulls in the safe
changes from that PR so they don't get lost.
---------
chore(router): pull in stable changes from #23795 (#23890)
# Why
- #23795 is blocked on some difficult issues. This PR pulls in the safe
changes from that PR so they don't get lost.
---------
Co-authored-by: Expo Bot <[email protected]>
show more ...
|
| #
48650d23 |
| 10-Aug-2023 |
Matin Zadeh Dolatabad <[email protected]> |
[go] update lottie-react-native to 6.1.2 (#23843)
# Why
There have been a lot of changes in Lottie React Native and there are some issues for users using Expo Go.
May fix:
- https://github.c
[go] update lottie-react-native to 6.1.2 (#23843)
# Why
There have been a lot of changes in Lottie React Native and there are some issues for users using Expo Go.
May fix:
- https://github.com/lottie-react-native/lottie-react-native/issues/1075
- https://github.com/lottie-react-native/lottie-react-native/issues/999
- https://github.com/lottie-react-native/lottie-react-native/issues/1005
# How
- Changed source type to `npm` in expoGoConfig
- Ran `et uvm -m lottie-react-native -c 6.1.2`
- Updated NCL example
# Test Plan
versioned expo go + NCL lottie test case
---------
Co-authored-by: Kudo Chien <[email protected]>
show more ...
|
| #
6c1c31e3 |
| 01-Aug-2023 |
Tomasz Sapeta <[email protected]> |
[iOS] Fix pod install failing due to missing fields in expo-router
|