<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in instantiateMetro.ts</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>1c8e3ea0 - feat(cli): Enable tsconfigPaths by default (#24490)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#1c8e3ea0</link>
        <description>feat(cli): Enable tsconfigPaths by default (#24490)# WhyENG-9888# How&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build(eg: updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;Co-authored-by: Aman Mittal &lt;amandeepmittal@live.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Mon, 25 Sep 2023 21:24:17 +0000</pubDate>
        <dc:creator>Mark Lawlor &lt;mwlawlor@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>46f023fa - [RFC] API Routes in Expo Router (#24429)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#46f023fa</link>
        <description>[RFC] API Routes in Expo Router (#24429)# WhyServers are an important part of developing many different types ofapps, but they&apos;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 &apos;expo-router/server&apos;;export async function POST(req: ExpoRequest): Promise&lt;ExpoResponse&gt; {  const { prompt } = await req.json();  const json = await fetch(&apos;https://api.openai.com/v1/engines/text-davinci-003/completions&apos;, {    headers: {      &apos;Content-Type&apos;: &apos;application/json&apos;,      // `OPENAI_API_KEY` is pulled from the .env file when running in Expo CLI.      Authorization: `Bearer ${process.env.OPENAI_API_KEY ?? &apos;&apos;}`,    },    method: &apos;POST&apos;,    body: JSON.stringify({      prompt,      max_tokens: 100,  }),  }).then(res =&gt; 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 &quot;Content-Type: application/json&quot; -d \&apos;{&quot;prompt&quot;:&quot;Hello, my name is&quot;}\&apos; 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(&apos;/generate&apos;).then(res =&gt; 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: &quot;server&quot;` which can be used toexport a dynamic server. Note: I may drop this for now and make serverthe default since there&apos;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&apos;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 &lt;34669131+expo-bot@users.noreply.github.com&gt;Co-authored-by: Cedric van Putten &lt;me@bycedric.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Fri, 15 Sep 2023 23:04:53 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>7c98c357 - feat(cli, router, metro, asset): add basePath support (#23911)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#7c98c357</link>
        <description>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&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# 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&apos;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.&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan- [ ] New `expo export` test.&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build(eg: updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;Co-authored-by: Aman Mittal &lt;amandeepmittal@live.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Thu, 14 Sep 2023 18:16:34 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>edeec536 - chore(cli): delete @expo/dev-server (#24272)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#edeec536</link>
        <description>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.&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# 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).&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan- Tests should keep passing.- Need to do some actual runs since there aren&apos;t any e2e tests forvarious parts of dev-server.&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build(eg: updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Wed, 06 Sep 2023 17:37:08 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>429dc7fc - fix(expo, asset, cli)!: unify asset hashing (#24090)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#429dc7fc</link>
        <description>fix(expo, asset, cli)!: unify asset hashing (#24090)# WhyConvert the `../` segments of the server URL to `_` to supportmonorepos. This same transformation takes place in`AssetSourceResolver.web` (expo-assets, expo-image) and`persistMetroAssets` of Expo CLI, this originally came from the [Metroopinion](https://github.com/react-native-community/cli/blob/2204d357379e2067cebe2791e90388f7e97fc5f5/packages/cli-plugin-metro/src/commands/bundle/getAssetDestPathIOS.ts#L19C5-L19C10).The purpose is to ensure no URL like `/foo/../bar.png` is requested, asthe result would be `/bar.png` which wouldn&apos;t work. The of how to handlethis didn&apos;t come from us, but we do need to ensure it&apos;s unified. At ahigh-level, this does prevent the usage of certain files, as`/foo/../bar.png` will be `/foo/_bar.png`, meaning a file named`/foo/_bar.png` cannot also exist. This logic, while applied at runtime,is actually only valid for production exports as we don&apos;t move or aliasfiles in development. The only way to have valid development files is toensure `../` never appears in the URL, i.e. by using`unstable_serverRoot`.- Drop legacy `expo/tools/hashAssetFiles.js` in favor of `expo-asset`version.- Unify runtime logic of asset file loading for monorepos.- Split out of https://github.com/expo/expo/pull/23911&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# How&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build(eg: updated a module plugin).

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Sat, 26 Aug 2023 02:50:49 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>8a424beb - [lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#8a424beb</link>
        <description>[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 &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Fri, 11 Aug 2023 07:31:41 +0000</pubDate>
        <dc:creator>James Ide &lt;ide@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>da5824c9 - [cli] fix typecheck from react-native 0.72 upgrade (#22766)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#da5824c9</link>
        <description>[cli] fix typecheck from react-native 0.72 upgrade (#22766)# Whyfollow up #22588 which disabled the cli typecheck# Howusing types from metro and fix typing issues# Test Plancli ci passed

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Mon, 12 Jun 2023 17:32:30 +0000</pubDate>
        <dc:creator>Kudo Chien &lt;kudo@expo.dev&gt;</dc:creator>
    </item>
<item>
        <title>8010f0ca - feat(cli,router): support src/app directory in Expo Router (#22748)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#8010f0ca</link>
        <description>feat(cli,router): support src/app directory in Expo Router (#22748)# Why- related https://github.com/expo/router/pull/629&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# How&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build(eg: updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Sat, 10 Jun 2023 05:48:57 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>9580591f - feat(metro-config, cli): CSS serializer (#22325)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#9580591f</link>
        <description>feat(metro-config, cli): CSS serializer (#22325)# WhyIn order to support static CSS in development mode, we need to updatethe metro serializer to support returning the JS and CSS assets. We nowinline the CSS in the HTML before sending to the client, this allows fortesting how the website works with JS disabled. We use the same styletag id to continue to support HMR for styles during subsequent updates.This change also refactors how exports work to serialize JS and CSS atthe same time (i.e. after the native transformations).&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# How&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build(eg: updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Sun, 30 Apr 2023 20:46:17 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>f479be69 - chore(cli): switch `EXPO_USE_PATH_ALIASES` to `expo.experiments.tsconfigPaths`. (#21897)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#f479be69</link>
        <description>chore(cli): switch `EXPO_USE_PATH_ALIASES` to `expo.experiments.tsconfigPaths`. (#21897)# Why- It&apos;s a bit harder to set env vars and users will want this eitheralways on or always off.- Expo Config makes it easier to deprecate values on a per-versionbasis. https://github.com/expo/universe/pull/11872- Comment out references to the path aliases feature until we&apos;re closerto launch. Users are getting confused when they see the featuredocumented.---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Thu, 30 Mar 2023 03:10:43 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>036e9444 - feat(metro-config): support any entry file in development builds that don&apos;t use Expo dev client (#21643)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#036e9444</link>
        <description>feat(metro-config): support any entry file in development builds that don&apos;t use Expo dev client (#21643)# Why- React Native enforces that apps must use `index.js` as the entry file,this is highly inconvenient and forces us to change the app entry on`expo prebuild` (cite: [prebuild sideeffects](https://github.com/expo/expo/blob/4d2795e/docs/pages/workflow/prebuild.mdx#side-effects)(`index.js` and `package.json` `scripts`)).- In #14964 I added support for production Android apps to use any entrypoint.- In #18381 I added the same support to iOS apps in production.- Development builds using `expo-dev-client` and Expo Go both use amanifest which support arbitrary entry points.- This just leaves development builds that don&apos;t have Expo code-loadingsupport (e.g. no manifest/index.html where the script can be changeddynamically).# How- This PR introduces the virtual entry file `.expo/.virtual-metro-entry`which should never physically exist. When this endpoint is pinged, ExpoCLI will rewrite the the URL to the correct entry point based on theproject configuration. This enables us to fully drop the prebuildside-effect as no case will require an `index.js` (`index.bundle`) asthe entry file.- The rewrite means Metro will never support a physical file located at`.expo/.virtual-metro-entry.js` as this will always be ignored. We couldsupport forwarding the request if this file exists but we&apos;ll probably gothe other way and assert if this file exists to mitigate possibleconfusion.- The name `.expo/.virtual-metro-entry.js` was chosen to be clear andlong enough that users wouldn&apos;t try to actually create this file.- I originally tried using a middleware to perform the redirect but thiswouldn&apos;t work with the HMR server which emulates pinging the endpointin-memory. Because of this, I went with the metro`server.rewriteRequestUrl` function.&gt; This feature is implemented in Expo&apos;s Metro configuration, meaning itshould apply to `npx react-native start` (but this is untested and notofficially supported).## New Setup Instructions for non-prebuild usersNon-prebuild projects will need to modify their `AppDelegate.mm` asfollows:```diff- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge{#if DEBUG-  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@&quot;index&quot;];+  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@&quot;.expo/.virtual-metro-entry&quot;];#else  return [[NSBundle mainBundle] URLForResource:@&quot;main&quot; withExtension:@&quot;jsbundle&quot;];#endif}```And their `android/app/src/main/java/***/MainApplication.java`:```diff      @Override      protected String getJSMainModuleName() {-        return &quot;index&quot;;+        return &quot;.expo/.virtual-metro-entry&quot;;      }```This is of course in addition to the `android/app/build.gradle`:```groovy    entryFile = file([&quot;node&quot;, &quot;-e&quot;, &quot;require(&apos;expo/scripts/resolveAppEntry&apos;)&quot;, projectRoot, &quot;android&quot;, &quot;absolute&quot;].execute(null, rootDir).text.trim())```And iOS production change:```shellScript = &quot;if [[ -f \&quot;$PODS_ROOT/../.xcode.env\&quot; ]]; then\n  source \&quot;$PODS_ROOT/../.xcode.env\&quot;\nfi\nif [[ -f \&quot;$PODS_ROOT/../.xcode.env.local\&quot; ]]; then\n  source \&quot;$PODS_ROOT/../.xcode.env.local\&quot;\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\&quot;$PROJECT_DIR\&quot;/..\n\nif [[ \&quot;$CONFIGURATION\&quot; = *Debug* ]]; then\n  export SKIP_BUNDLING=1\nfi\nif [[ -z \&quot;$ENTRY_FILE\&quot; ]]; then\n  # Set the entry JS file using the bundler&apos;s entry resolution.\n  export ENTRY_FILE=\&quot;$(\&quot;$NODE_BINARY\&quot; -e \&quot;require(&apos;expo/scripts/resolveAppEntry&apos;)\&quot; $PROJECT_ROOT ios relative | tail -n 1)\&quot;\nfi\n\n`\&quot;$NODE_BINARY\&quot; --print \&quot;require(&apos;path&apos;).dirname(require.resolve(&apos;react-native/package.json&apos;)) + &apos;/scripts/react-native-xcode.sh&apos;\&quot;`\n\n&quot;;```# Test Plan### Continuous(-ish)- Updated the templates to use this new format.### Quick test- Start the dev server and ping the entry URL directly:-`http://localhost:8081/.expo/.virtual-metro-entry.bundle?platform=web&amp;dev=true&amp;minify=false&amp;modulesOnly=true&amp;runModule=false&amp;shallow=true`- The redirected URL should show in the `sourceURL` at the end of thefile.### E2E- Prebuild, then apply the native changes in a local projects - Use the following `metro.config.js` (you don&apos;t need to use the latestExpo CLI for this to work):```js// Learn more https://docs.expo.io/guides/customizing-metroconst { getDefaultConfig } = require(&quot;../../expo/packages/@expo/metro-config&quot;);// const { getDefaultConfig } = require(&apos;expo/metro-config&apos;);module.exports = getDefaultConfig(__dirname);```- `npx expo run:ios` and `npx expo run:android` should point to`index.bundle`- Changing the `main` field in the package.json or deleting `index.js`should continue to work when you reload the app.# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Tue, 28 Mar 2023 18:51:07 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>03d43e7d - feature(cli): add basic `Page.reload` support to reload the app from inspector (#21827)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#03d43e7d</link>
        <description>feature(cli): add basic `Page.reload` support to reload the app from inspector (#21827)# WhyThis implements the `Page.reload` CDP event, to reload the app itself.&gt; Would be nice if there is a way to send this to _JUST_ the device youare inspecting. But not sure what socket connection that would be, don&apos;tthink it&apos;s the actual device socket in the inspector (that&apos;s inspectormessages only).# How- Provided the reference of `MetroBundlerDevServer` to the inspector- Called `MetroBundlerDevServer.broadcastMessage(&apos;reload&apos;)`# Test Plan- Open chrome inspector (`j`)- Anywhere in the inspector, press `cmd+r`# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Tue, 28 Mar 2023 17:22:56 +0000</pubDate>
        <dc:creator>Cedric van Putten &lt;me@bycedric.com&gt;</dc:creator>
    </item>
<item>
        <title>0a6ddb20 - feat(cli): add basic static rendering for router projects (#21572)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#0a6ddb20</link>
        <description>feat(cli): add basic static rendering for router projects (#21572)# Why- Implement an experimental static rendering system for Metro websitesusing Expo Router.- Behavior is undocumented and highly experimental.&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# How- Add support to `start` and `export` which pre-renders static web pagesto HTML to improve SEO support on web.- The system implements [React Navigation&apos;sSSR](https://reactnavigation.org/docs/server-rendering) support.- Head elements can be used with `import { Head } from&apos;expo-router/head&apos;`.- The root HTML is not exposed to the user.- There are no data fetching mechanisms.- There&apos;s no ability to provide a 404 page or other server features.&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan- e2e test for exporting a router project statically.- `EXPO_USE_STATIC=1 yarn expo` -&gt; websites are pre-rendered beforebeing served.- `EXPO_USE_STATIC=1 yarn expo export -p web` -&gt; static routes arerendered to static HTML files by the same name (dynamic routes are notsupported).&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Mon, 13 Mar 2023 15:57:58 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>b6b91c50 - feat(cli)!: use Expo CLI to bundle production apps (#21396)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#b6b91c50</link>
        <description>feat(cli)!: use Expo CLI to bundle production apps (#21396)# WhyMost of our new Metro bundler features won&apos;t work unless we use Expo CLIfor every bundler operation (ex:[aliases](https://github.com/expo/expo/pull/21262)). Right now this isthe case when building for production on both platforms or building fordevelopment on iOS.&gt; Using `npx expo start` when building from Xcode will be added inanother PR.# HowThis PR introduces a new &quot;export:embed&quot; command which is hidden from the`--help` prompt. `npx expo export:embed` accepts the same arguments as`npx react-native bundle` and passes them to the same internal function,but it ensures we use the correct variation of Metro before doing such.This change (and `start` PR) will add more steps for migrating to &quot;ExpoCLI&quot; but it will also remove the need for us to generate the`metro.config.js` file in the project on `npx expo prebuild` since wecan now reliably default to `@expo/metro-config`.The change should only apply to Metro bundler features (all applicationcode could be affected), but it won&apos;t obstruct Expo Modules Core orusing Expo CLI.&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan- All of our existing E2E tests should use the new command, if theycontain features like aliases then they&apos;ll work.- Copied the changes from `@expo/cli` into a new project&apos;s node_modules,added template changes:  - Built for production from Android Studio and Xcode.&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;Co-authored-by: James Ide &lt;ide@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Mon, 06 Mar 2023 18:28:50 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>33643b60 - feat(cli): auto setup typescript during start (#21475)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#33643b60</link>
        <description>feat(cli): auto setup typescript during start (#21475)# Why- Some users are confused about how to use the fully automatedTypeScript setup. It currently runs when you run `npx expo start` in aproject with `tsconfig.json` or any TypeScript file in the project.- This change will run the TypeScript check continuously untilTypeScript is setup. This only applies to projects using Metro, andcurrently is only run in `npx expo start`, and the run commands (whenthe server is started in the current window, e.g. not headless mode).&lt;!--Please describe the motivation for this PR, and link to relevant GitHubissues, forums posts, or feature requests.--&gt;# How- Fork the `runServer` function from Metro into the CLI so we can accessthe Metro bundler instance directly.- Use Metro&apos;s native file watching to observe new TypeScript files beingadded to the project (within the observable files). This is fast andensures we don&apos;t accidentally block a thread that otherwise could&apos;vebeen used for bundling.- The TypeScript continuous check only runs once, if you removeTypeScript and add it back in the same process, then nothing happens.This is a performance optimization.- If TypeScript is enabled while the process is running, the user willnot be prompted to install, the packages will just install in theproject. Failures will be displayed in the running process, and no moreattempts will be made.- If TypeScript is detected on start then the existing system will beused and the continuous check will be skipped, this means projectsalready using TypeScript won&apos;t have any technical performance hit.&lt;!--How did you build this feature or fix this bug and why?--&gt;# Test Plan- In a project without TypeScript:  - `npx expo`  - `touch tsconfig.json` or `mv index.js index.tsx` or `touch foo.tsx`  - TypeScript is automatically installed for the project.  - `EXPO_NO_TYPESCRIPT_SETUP` voids this behavior- Added unit tests.&lt;!--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.--&gt;# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;Co-authored-by: Cedric van Putten &lt;me@bycedric.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Sat, 04 Mar 2023 02:26:10 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>d42dd5d4 - feature(cli): add experimental metro config telemetry (#20885)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#d42dd5d4</link>
        <description>feature(cli): add experimental metro config telemetry (#20885)# WhyWe need to have visibility on what experimental features are being used,in order to prioritize supporting or finishing these features.# HowAdded a telemetry event when instantiating Metro, for both `npx expostart` and `npx expo export`.# Test PlanSee added test, if a property isn&apos;t available, it doesn&apos;t matter.# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).---------Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Thu, 09 Feb 2023 14:06:41 +0000</pubDate>
        <dc:creator>Cedric van Putten &lt;me@bycedric.com&gt;</dc:creator>
    </item>
<item>
        <title>0f61c876 - fix(cli): simplify Metro watch mode and communicate when disabled (#20939)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#0f61c876</link>
        <description>fix(cli): simplify Metro watch mode and communicate when disabled (#20939)# WhyFixes ENG-7089# HowBecause this option is only exposed through `Metro.runServer`, I addedthe override in `@expo/cli`. Alternative, we could add a custom Metroconfig option to move this to the config itself, however, that wouldcreate a significant diversion of the normal Metro config.&gt; **Note**&gt; We could add a Metro version check and disable the warning, but Ithink it&apos;s safe to skip that and leave it in for older Metro versions.It&apos;s not really synced, but if the message pops up, it&apos;s very verylikely Metro actually is running without watch.# Test PlanSee added tests.# Checklist&lt;!--Please check the appropriate items below if they apply to your diff.This is required for changes to Expo modules.--&gt;- [ ] 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` &amp; EAS Build (eg:updated a module plugin).

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Wed, 25 Jan 2023 18:19:10 +0000</pubDate>
        <dc:creator>Cedric van Putten &lt;me@bycedric.com&gt;</dc:creator>
    </item>
<item>
        <title>ca84f1cd - feat(cli): Make Expo Metro config for web resolve projects using same `package.json` main fields as Expo Webpack (#19529)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#ca84f1cd</link>
        <description>feat(cli): Make Expo Metro config for web resolve projects using same `package.json` main fields as Expo Webpack (#19529)* fix: ensure web is setup every time* fix(cli): use correct main fields for Metro web* Update packages/@expo/cli/CHANGELOG.mdCo-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;* Update docs/pages/workflow/expo-cli.mdxCo-authored-by: Aman Mittal &lt;amandeepmittal@live.com&gt;* Update docs/pages/workflow/expo-cli.mdxCo-authored-by: Aman Mittal &lt;amandeepmittal@live.com&gt;Co-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;Co-authored-by: Aman Mittal &lt;amandeepmittal@live.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Fri, 14 Oct 2022 19:41:52 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>e87e8ea8 - feat(cli): add touch middleware and app entry (#19231)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#e87e8ea8</link>
        <description>feat(cli): add touch middleware and app entry (#19231)* add middleware for creating files* fix touch request* added support for auto entry* added tests for touch middleware* added router tests* Update CHANGELOG.md* Update packages/@expo/cli/CHANGELOG.mdCo-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;* Update instantiateMetro.tsCo-authored-by: Expo Bot &lt;34669131+expo-bot@users.noreply.github.com&gt;

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Mon, 26 Sep 2022 19:02:18 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>aef260d6 - chore: migrate metro-config, dev-server (#18221)</title>
        <link>http://172.16.0.5:8080/history/expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts#aef260d6</link>
        <description>chore: migrate metro-config, dev-server (#18221)* chore: migrate metro CLI packages* fix deps* fix types* Update withMetroMultiPlatform.ts* Update yarn.lock

            List of files:
            /expo/packages/@expo/cli/src/start/server/metro/instantiateMetro.ts</description>
        <pubDate>Fri, 15 Jul 2022 10:51:07 +0000</pubDate>
        <dc:creator>Evan Bacon &lt;bacon@expo.io&gt;</dc:creator>
    </item>
</channel>
</rss>
