diff --git a/src/content/docs/en/guides/integrations-guide/cloudflare.mdx b/src/content/docs/en/guides/integrations-guide/cloudflare.mdx
index 5ca718d01f493..ad25f7af40974 100644
--- a/src/content/docs/en/guides/integrations-guide/cloudflare.mdx
+++ b/src/content/docs/en/guides/integrations-guide/cloudflare.mdx
@@ -65,23 +65,37 @@ export default defineConfig({
default `"advanced"`
-Cloudflare Pages has 2 different modes for deploying functions, `advanced` mode which picks up the `_worker.js` in `dist`, or a directory mode where pages will compile the worker out of a functions folder in the project root.
+Cloudflare Pages has 2 different modes for deploying functions, `advanced` mode which picks up the `_worker.js` in `dist`, or a directory mode where pages will compile the worker out of a functions folder in the project root. For most projects the adapter default of `advanced` will be sufficient; the `dist` folder will contain your compiled project.
-For most projects the adapter default of `advanced` will be sufficient; the `dist` folder will contain your compiled project. Switching to directory mode allows you to use [pages plugins](https://developers.cloudflare.com/pages/platform/functions/plugins/) such as [Sentry](https://developers.cloudflare.com/pages/platform/functions/plugins/sentry/) or write custom code to enable logging.
+#### `mode:directory`
-In directory mode, the adapter will compile the client side part of your app the same way by default, but moves the worker script into a `functions` folder in the project root. In this case, the adapter will only ever place a `[[path]].js` in that folder, allowing you to add additional plugins and pages middleware which can be checked into version control.
-
-With the build configuration `split: true`, the adapter instead compiles a separate bundle for each page. This option requires some manual maintenance of the `functions` folder. Files emitted by Astro will overwrite existing `functions` files with identical names, so you must choose unique file names for each file you manually add. Additionally, the adapter will never empty the `functions` folder of outdated files, so you must clean up the folder manually when you remove pages.
-
-Note that this adapter does not support using [Cloudflare Pages Middleware](https://developers.cloudflare.com/pages/platform/functions/middleware/). Astro will bundle the [Astro middleware](/en/guides/middleware/) into each page.
+Switching to directory mode allows you to use [pages plugins](https://developers.cloudflare.com/pages/platform/functions/plugins/) such as [Sentry](https://developers.cloudflare.com/pages/platform/functions/plugins/sentry/) or write custom code to enable logging.
```ts
-// directory mode
+// astro.config.mjs
export default defineConfig({
adapter: cloudflare({ mode: 'directory' }),
});
```
+In `directory` mode, the adapter will compile the client-side part of your app the same way as in `advanced` mode by default, but moves the worker script into a `functions` folder in the project root. In this case, the adapter will only ever place a `[[path]].js` in that folder, allowing you to add additional plugins and pages middleware which can be checked into version control.
+
+To instead compile a separate bundle for each page, set the `functionPerPath` option in your Cloudflare adapter config. This option requires some manual maintenance of the `functions` folder. Files emitted by Astro will overwrite existing `functions` files with identical names, so you must choose unique file names for each file you manually add. Additionally, the adapter will never empty the `functions` folder of outdated files, so you must clean up the folder manually when you remove pages.
+
+```diff
+import {defineConfig} from "astro/config";
+import cloudflare from '@astrojs/cloudflare';
+
+export default defineConfig({
+ adapter: cloudflare({
+ mode: 'directory',
++ functionPerRoute: true
+ })
+})
+```
+
+Note that this adapter does not support using [Cloudflare Pages Middleware](https://developers.cloudflare.com/pages/platform/functions/middleware/). Astro will bundle the [Astro middleware](/en/guides/middleware/) into each page.
+
## Enabling Preview
In order for preview to work you must install `wrangler`
diff --git a/src/content/docs/en/guides/integrations-guide/netlify.mdx b/src/content/docs/en/guides/integrations-guide/netlify.mdx
index 7cd84245495bf..92aaf98279218 100644
--- a/src/content/docs/en/guides/integrations-guide/netlify.mdx
+++ b/src/content/docs/en/guides/integrations-guide/netlify.mdx
@@ -67,28 +67,11 @@ If you prefer to install the adapter manually instead, complete the following tw
});
```
-### Edge Functions
-
-Netlify has two serverless platforms, [Netlify Functions](https://docs.netlify.com/functions/overview/) and [Netlify Edge Functions](https://docs.netlify.com/edge-functions/overview/). With Edge Functions your code is distributed closer to your users, lowering latency.
-
-To deploy with Edge Functions, use `netlify/edge-functions` in the Astro config file instead of `netlify/functions`.
-
-```js ins={3}
-// astro.config.mjs
-import { defineConfig } from 'astro/config';
-import netlify from '@astrojs/netlify/edge-functions';
-
-export default defineConfig({
- output: 'server',
- adapter: netlify(),
-});
-```
-
### Run middleware in Edge Functions
When deploying to Netlify Functions, you can choose to use an Edge Function to run your Astro middleware.
-To enable this, set the `build.excludeMiddleware` Astro config option to `true`:
+To enable this, set the `edgeMiddleware` config option to `true`:
```js ins={9}
// astro.config.mjs
@@ -97,10 +80,9 @@ import netlify from '@astrojs/netlify/functions';
export default defineConfig({
output: 'server',
- adapter: netlify(),
- build: {
- excludeMiddleware: true,
- },
+ adapter: netlify({
+ edgeMiddleware: true,
+ }),
});
```
@@ -146,10 +128,9 @@ import netlify from '@astrojs/netlify/functions';
export default defineConfig({
output: 'server',
- adapter: netlify(),
- build: {
- split: true,
- },
+ adapter: netlify({
+ functionPerRoute: true,
+ }),
});
```
diff --git a/src/content/docs/en/guides/integrations-guide/node.mdx b/src/content/docs/en/guides/integrations-guide/node.mdx
index bb864e82e5f2b..840eb4ddf37bd 100644
--- a/src/content/docs/en/guides/integrations-guide/node.mdx
+++ b/src/content/docs/en/guides/integrations-guide/node.mdx
@@ -172,7 +172,7 @@ For standalone mode the server handles file servering in addition to the page an
You can override the host and port the standalone server runs on by passing them as environment variables at runtime:
```shell
-HOST=0.0.0.0 PORT=3000 node ./dist/server/entry.mjs
+HOST=0.0.0.0 PORT=4321 node ./dist/server/entry.mjs
```
#### HTTPS
diff --git a/src/content/docs/en/guides/integrations-guide/preact.mdx b/src/content/docs/en/guides/integrations-guide/preact.mdx
index 4aa862623bcf9..3d02d9e0f22cf 100644
--- a/src/content/docs/en/guides/integrations-guide/preact.mdx
+++ b/src/content/docs/en/guides/integrations-guide/preact.mdx
@@ -128,6 +128,41 @@ Check out the [`pnpm` overrides](https://pnpm.io/package_json#pnpmoverrides) and
Currently, the `compat` option only works for React libraries that export code as ESM. If an error happens during build-time, try adding the library to `vite.ssr.noExternal: ['the-react-library']` in your `astro.config.mjs` file.
:::
+## Options
+
+### Combining multiple JSX frameworks
+
+When you are using multiple JSX frameworks (React, Preact, Solid) in the same project, Astro needs to determine which JSX framework-specific transformations should be used for each of your components. If you have only added one JSX framework integration to your project, no extra configuration is needed.
+
+Use the `include` (required) and `exclude` (optional) configuration options to specify which files belong to which framework. Provide an array of files and/or folders to `include` for each framework you are using. Wildcards may be used to include multiple file paths.
+
+We recommend placing common framework components in the same folder (e.g. `/components/react/` and `/components/solid/`) to make specifying your includes easier, but this is not required:
+
+```js
+import { defineConfig } from 'astro/config';
+import preact from '@astrojs/preact';
+import react from '@astrojs/react';
+import svelte from '@astrojs/svelte';
+import vue from '@astrojs/vue';
+import solid from '@astrojs/solid-js';
+
+export default defineConfig({
+ // Enable many frameworks to support all different kinds of components.
+ // No `include` is needed if you are only using a single JSX framework!
+ integrations: [
+ preact({
+ include: ['**/preact/*'],
+ }),
+ react({
+ include: ['**/react/*'],
+ }),
+ solid({
+ include: ['**/solid/*'],
+ }),
+ ],
+});
+```
+
## Examples
* The [Astro Preact example](https://github.com/withastro/astro/tree/latest/examples/framework-preact) shows how to use an interactive Preact component in an Astro project.
diff --git a/src/content/docs/en/guides/integrations-guide/react.mdx b/src/content/docs/en/guides/integrations-guide/react.mdx
index 0fdf9257fbcfe..11f07bb6446fc 100644
--- a/src/content/docs/en/guides/integrations-guide/react.mdx
+++ b/src/content/docs/en/guides/integrations-guide/react.mdx
@@ -84,6 +84,39 @@ To use your first React component in Astro, head to our [UI framework documentat
## Options
+### Combining multiple JSX frameworks
+
+When you are using multiple JSX frameworks (React, Preact, Solid) in the same project, Astro needs to determine which JSX framework-specific transformations should be used for each of your components. If you have only added one JSX framework integration to your project, no extra configuration is needed.
+
+Use the `include` (required) and `exclude` (optional) configuration options to specify which files belong to which framework. Provide an array of files and/or folders to `include` for each framework you are using. Wildcards may be used to include multiple file paths.
+
+We recommend placing common framework components in the same folder (e.g. `/components/react/` and `/components/solid/`) to make specifying your includes easier, but this is not required:
+
+```js
+import { defineConfig } from 'astro/config';
+import preact from '@astrojs/preact';
+import react from '@astrojs/react';
+import svelte from '@astrojs/svelte';
+import vue from '@astrojs/vue';
+import solid from '@astrojs/solid-js';
+
+export default defineConfig({
+ // Enable many frameworks to support all different kinds of components.
+ // No `include` is needed if you are only using a single JSX framework!
+ integrations: [
+ preact({
+ include: ['**/preact/*'],
+ }),
+ react({
+ include: ['**/react/*'],
+ }),
+ solid({
+ include: ['**/solid/*'],
+ }),
+ ],
+});
+```
+
### Children parsing
Children passed into a React component from an Astro component are parsed as plain strings, not React nodes.
diff --git a/src/content/docs/en/guides/integrations-guide/solid-js.mdx b/src/content/docs/en/guides/integrations-guide/solid-js.mdx
index 68c766632aea8..b4d9baf047a2a 100644
--- a/src/content/docs/en/guides/integrations-guide/solid-js.mdx
+++ b/src/content/docs/en/guides/integrations-guide/solid-js.mdx
@@ -82,6 +82,41 @@ To use your first SolidJS component in Astro, head to our [UI framework document
* đź’§ client-side hydration options, and
* 🤝 opportunities to mix and nest frameworks together
+## Options
+
+### Combining multiple JSX frameworks
+
+When you are using multiple JSX frameworks (React, Preact, Solid) in the same project, Astro needs to determine which JSX framework-specific transformations should be used for each of your components. If you have only added one JSX framework integration to your project, no extra configuration is needed.
+
+Use the `include` (required) and `exclude` (optional) configuration options to specify which files belong to which framework. Provide an array of files and/or folders to `include` for each framework you are using. Wildcards may be used to include multiple file paths.
+
+We recommend placing common framework components in the same folder (e.g. `/components/react/` and `/components/solid/`) to make specifying your includes easier, but this is not required:
+
+```js
+import { defineConfig } from 'astro/config';
+import preact from '@astrojs/preact';
+import react from '@astrojs/react';
+import svelte from '@astrojs/svelte';
+import vue from '@astrojs/vue';
+import solid from '@astrojs/solid-js';
+
+export default defineConfig({
+ // Enable many frameworks to support all different kinds of components.
+ // No `include` is needed if you are only using a single JSX framework!
+ integrations: [
+ preact({
+ include: ['**/preact/*'],
+ }),
+ react({
+ include: ['**/react/*'],
+ }),
+ solid({
+ include: ['**/solid/*'],
+ }),
+ ],
+});
+```
+
## Troubleshooting
For help, check out the `#support` channel on [Discord](https://astro.build/chat). Our friendly Support Squad members are here to help!
diff --git a/src/content/docs/en/guides/integrations-guide/vercel.mdx b/src/content/docs/en/guides/integrations-guide/vercel.mdx
index c4757bc288efc..0a198045c8634 100644
--- a/src/content/docs/en/guides/integrations-guide/vercel.mdx
+++ b/src/content/docs/en/guides/integrations-guide/vercel.mdx
@@ -71,18 +71,12 @@ If you prefer to install the adapter manually instead, complete the following tw
You can deploy to different targets:
-* `edge`: SSR inside an [Edge function](https://vercel.com/docs/concepts/functions/edge-functions).
* `serverless`: SSR inside a [Node.js function](https://vercel.com/docs/concepts/functions/serverless-functions).
* `static`: generates a static website following Vercel's output formats, redirects, etc.
-:::note
-deploying to the Edge has [its limitations](https://vercel.com/docs/concepts/functions/edge-functions#known-limitations). An edge function can't be more than 1 MB in size and they don't support native Node.js APIs, among others.
-:::
-
You can change where to target by changing the import:
```js
-import vercel from '@astrojs/vercel/edge';
import vercel from '@astrojs/vercel/serverless';
import vercel from '@astrojs/vercel/static';
```
@@ -105,7 +99,7 @@ To configure this adapter, pass an object to the `vercel()` function call in `as
### analytics
**Type:** `boolean`
-**Available for:** Serverless, Edge, Static
+**Available for:** Serverless, Static
**Added in:** `@astrojs/vercel@3.1.0`
You can enable [Vercel Analytics](https://vercel.com/analytics) (including Web Vitals and Audiences) by setting `analytics: true`. This will inject Vercel’s tracking scripts into all your pages.
@@ -126,7 +120,7 @@ export default defineConfig({
### imagesConfig
**Type:** `VercelImageConfig`
-**Available for:** Edge, Serverless, Static
+**Available for:** Serverless, Static
**Added in:** `@astrojs/vercel@3.3.0`
Configuration options for [Vercel's Image Optimization API](https://vercel.com/docs/concepts/image-optimization). See [Vercel's image configuration documentation](https://vercel.com/docs/build-output-api/v3/configuration#images) for a complete list of supported parameters.
@@ -149,7 +143,7 @@ export default defineConfig({
### imageService
**Type:** `boolean`
-**Available for:** Edge, Serverless, Static
+**Available for:** Serverless, Static
**Added in:** `@astrojs/vercel@3.3.0`
When enabled, an [Image Service](/en/reference/image-service-reference/) powered by the Vercel Image Optimization API will be automatically configured and used in production. In development, a built-in Squoosh-based service will be used instead.
@@ -190,7 +184,7 @@ import astroLogo from '../assets/logo.png';
### includeFiles
**Type:** `string[]`
-**Available for:** Edge, Serverless
+**Available for:** Serverless
Use this property to force files to be bundled with your function. This is helpful when you notice missing files.
@@ -207,10 +201,6 @@ export default defineConfig({
});
```
-:::note
-When building for the Edge, all the dependencies get bundled in a single file to save space. **No extra file will be bundled**. So, if you *need* some file inside the function, you have to specify it in `includeFiles`.
-:::
-
### excludeFiles
**Type:** `string[]`
@@ -242,10 +232,9 @@ import vercel from '@astrojs/vercel/serverless';
export default defineConfig({
output: 'server',
- adapter: vercel(),
- build: {
- split: true,
- },
+ adapter: vercel({
+ functionPerRoute: true,
+ }),
});
```
@@ -284,7 +273,7 @@ You can use Vercel Edge middleware to intercept a request and redirect before se
The `@astrojs/vercel/serverless` adapter can automatically create the Vercel Edge middleware from an Astro middleware in your code base.
-This is an opt-in feature, and the `build.excludeMiddleware` option needs to be set to `true`:
+This is an opt-in feature, and the `edgeMiddleware` option needs to be set to `true`:
```js
// astro.config.mjs
@@ -292,10 +281,9 @@ import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel';
export default defineConfig({
output: 'server',
- adapter: vercel(),
- build: {
- excludeMiddleware: true,
- },
+ adapter: vercel({
+ edgeMiddleware: true,
+ }),
});
```
diff --git a/src/content/docs/en/reference/configuration-reference.mdx b/src/content/docs/en/reference/configuration-reference.mdx
index 3fffc314686fe..acc60bf975943 100644
--- a/src/content/docs/en/reference/configuration-reference.mdx
+++ b/src/content/docs/en/reference/configuration-reference.mdx
@@ -197,15 +197,15 @@ Your final, deployed URL. Astro uses this full URL to generate your sitemap and
**Type:** `boolean`
-**Default:** `false`
+**Default:** `true`
-**Type:** `'where' | 'class'`
-**Default:** `'where'`
+**Type:** `'where' | 'class' | 'attribute'`
+**Default:** `'attribute'`
**Type:** `'always' | 'auto' | 'never'`
-**Default:** `never`
+**Default:** `auto`
**Type:** `boolean`
-**Default:** `false`
-
**Type:** `boolean`
-**Default:** `false`
-
**Type:** `number`
-**Default:** `3000`
+**Default:** `4321`
**Type:** `Object`
-**Default:** `{entrypoint: 'astro/assets/services/squoosh', config?: {}}`
+**Default:** `{entrypoint: 'astro/assets/services/sharp', config?: {}}`
-
-**Type:** `boolean`
-**Default:** `false`
-
diff --git a/src/content/docs/en/reference/error-reference.mdx b/src/content/docs/en/reference/error-reference.mdx
index 029f00b2346f2..02b2b1e9124f6 100644
--- a/src/content/docs/en/reference/error-reference.mdx
+++ b/src/content/docs/en/reference/error-reference.mdx
@@ -57,6 +57,7 @@ The following reference is a complete list of the errors you may encounter while
- [**AstroGlobNoMatch**](/en/reference/errors/astro-glob-no-match/)
Astro.glob() did not match any files.
- [**RedirectWithNoLocation**](/en/reference/errors/redirect-with-no-location/)
A redirect must be given a location with the `Location` header.
- [**InvalidDynamicRoute**](/en/reference/errors/invalid-dynamic-route/)
Invalid dynamic route.
+- [**MissingSharp**](/en/reference/errors/missing-sharp/)
Could not find Sharp.
- [**UnknownViteError**](/en/reference/errors/unknown-vite-error/)
Unknown Vite Error.
- [**FailedToLoadModuleSSR**](/en/reference/errors/failed-to-load-module-ssr/)
Could not import file.
- [**InvalidGlob**](/en/reference/errors/invalid-glob/)
Invalid glob pattern.
diff --git a/src/content/docs/en/reference/errors/expected-image-options.mdx b/src/content/docs/en/reference/errors/expected-image-options.mdx
index 10557b0aac826..adf440185d160 100644
--- a/src/content/docs/en/reference/errors/expected-image-options.mdx
+++ b/src/content/docs/en/reference/errors/expected-image-options.mdx
@@ -28,6 +28,6 @@ const optimizedImage = await getImage({src: myImage, width: 300, height: 300});
In most cases, this error happens because parameters were passed directly instead of inside an object.
**See Also:**
-- [Assets (Experimental)](/en/guides/assets/)
+- [Images](/en/guides/images/)
diff --git a/src/content/docs/en/reference/errors/expected-image.mdx b/src/content/docs/en/reference/errors/expected-image.mdx
index 6060dae8ce657..bd8e779190a6c 100644
--- a/src/content/docs/en/reference/errors/expected-image.mdx
+++ b/src/content/docs/en/reference/errors/expected-image.mdx
@@ -31,6 +31,6 @@ import myImage from "../assets/my_image.png";
In most cases, this error happens when the value passed to `src` is undefined.
**See Also:**
-- [Assets (Experimental)](/en/guides/assets/)
+- [Images](/en/guides/images/)
diff --git a/src/content/docs/en/reference/errors/image-missing-alt.mdx b/src/content/docs/en/reference/errors/image-missing-alt.mdx
index 2ea961340f5f2..3d01cd92a9979 100644
--- a/src/content/docs/en/reference/errors/image-missing-alt.mdx
+++ b/src/content/docs/en/reference/errors/image-missing-alt.mdx
@@ -21,8 +21,8 @@ The `alt` property allows you to provide descriptive alt text to users of screen
If the image is merely decorative (i.e. doesn’t contribute to the understanding of the page), set `alt=""` so that screen readers know to ignore the image.
**See Also:**
-- [Assets (Experimental)](/en/guides/assets/)
-- [Image component](/en/guides/assets/#image--astroassets)
-- Â [Image component#alt](/en/guides/assets/#alt-required)
+- [Images](/en/guides/images/)
+- [Image component](/en/guides/images/#image--astroassets)
+- Â [Image component#alt](/en/guides/images/#alt-required)
diff --git a/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx b/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx
index 1f697ac9ec76a..99574a8cc1ff2 100644
--- a/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx
+++ b/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx
@@ -32,6 +32,6 @@ import myImage from "../my_image.png";
```
**See Also:**
-- [Assets (Experimental)](/en/guides/assets/)
+- [Images](/en/guides/images/)
diff --git a/src/content/docs/en/reference/errors/locals-not-an-object.mdx b/src/content/docs/en/reference/errors/locals-not-an-object.mdx
index d503a11695d32..c4ca3a1992415 100644
--- a/src/content/docs/en/reference/errors/locals-not-an-object.mdx
+++ b/src/content/docs/en/reference/errors/locals-not-an-object.mdx
@@ -20,7 +20,7 @@ Thrown in development mode when `locals` is overwritten with something that is n
For example:
```ts
-import {defineMiddleware} from "astro/middleware";
+import {defineMiddleware} from "astro:middleware";
export const onRequest = defineMiddleware((context, next) => {
context.locals = 1541;
return next();
diff --git a/src/content/docs/en/reference/errors/markdown-image-not-found.mdx b/src/content/docs/en/reference/errors/markdown-image-not-found.mdx
index 1450d5cd79023..6feeea6e2f75d 100644
--- a/src/content/docs/en/reference/errors/markdown-image-not-found.mdx
+++ b/src/content/docs/en/reference/errors/markdown-image-not-found.mdx
@@ -21,6 +21,6 @@ Astro could not find an image you included in your Markdown content. Usually, th
Images in Markdown are relative to the current file. To refer to an image that is located in the same folder as the `.md` file, the path should start with `./`
**See Also:**
-- [Assets (Experimental)](/en/guides/assets/)
+- [Images](/en/guides/images/)
diff --git a/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx b/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx
index ba8e6ab5d6f9c..a469882ba3d49 100644
--- a/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx
+++ b/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx
@@ -20,7 +20,7 @@ Thrown when the middleware does not return any data or call the `next` function.
For example:
```ts
-import {defineMiddleware} from "astro/middleware";
+import {defineMiddleware} from "astro:middleware";
export const onRequest = defineMiddleware((context, _) => {
// doesn't return anything or call `next`
context.locals.someData = false;
diff --git a/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx b/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx
index 92d6caac3f08f..a3a19a357841d 100644
--- a/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx
+++ b/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx
@@ -20,7 +20,7 @@ Thrown in development mode when middleware returns something that is not a `Resp
For example:
```ts
-import {defineMiddleware} from "astro/middleware";
+import {defineMiddleware} from "astro:middleware";
export const onRequest = defineMiddleware(() => {
return "string"
});
diff --git a/src/content/docs/en/reference/errors/missing-image-dimension.mdx b/src/content/docs/en/reference/errors/missing-image-dimension.mdx
index f960c46d62260..82ef85cdfa59c 100644
--- a/src/content/docs/en/reference/errors/missing-image-dimension.mdx
+++ b/src/content/docs/en/reference/errors/missing-image-dimension.mdx
@@ -21,7 +21,7 @@ For remote images, `width` and `height` cannot be inferred from the original fil
If your image is inside your `src` folder, you probably meant to import it instead. See [the Imports guide for more information](/en/guides/imports/#other-assets).
**See Also:**
-- [Assets (Experimental)](/en/guides/assets/)
-- [Image component#width-and-height](/en/guides/assets/#width-and-height)
+- [Images](/en/guides/images/)
+- [Image component#width-and-height-required](/en/guides/images/#width-and-height-required-for-public-and-remote-images)
diff --git a/src/content/docs/en/reference/errors/missing-sharp.mdx b/src/content/docs/en/reference/errors/missing-sharp.mdx
new file mode 100644
index 0000000000000..b4f82b5fd16e6
--- /dev/null
+++ b/src/content/docs/en/reference/errors/missing-sharp.mdx
@@ -0,0 +1,37 @@
+---
+# NOTE: This file is auto-generated from 'scripts/error-docgen.mjs'
+# Do not make edits to it directly, they will be overwritten.
+# Instead, change this file: https://github.com/withastro/astro/blob/main/packages/astro/src/core/errors/errors-data.ts
+# Translators, please remove this note and the