diff --git a/.changeset/neat-mugs-end.md b/.changeset/neat-mugs-end.md
new file mode 100644
index 000000000000..dd65708a73ac
--- /dev/null
+++ b/.changeset/neat-mugs-end.md
@@ -0,0 +1,8 @@
+---
+'astro': minor
+---
+
+
+`astro:`namespace aliases for middleware and components
+
+This adds aliases of `astro:middleware` and `astro:components` for the middleware and components modules. This is to make our documentation consistent between are various modules, where some are virtual modules and others are not. Going forward new built-in modules will use this namespace.
diff --git a/examples/middleware/src/middleware.ts b/examples/middleware/src/middleware.ts
index 9871e9d01e0b..eb764453545c 100644
--- a/examples/middleware/src/middleware.ts
+++ b/examples/middleware/src/middleware.ts
@@ -1,4 +1,4 @@
-import { defineMiddleware, sequence } from 'astro/middleware';
+import { defineMiddleware, sequence } from 'astro:middleware';
 import htmlMinifier from 'html-minifier';
 
 const limit = 50;
diff --git a/packages/astro/client.d.ts b/packages/astro/client.d.ts
index 7f701b0c0507..e6389d41555e 100644
--- a/packages/astro/client.d.ts
+++ b/packages/astro/client.d.ts
@@ -119,6 +119,14 @@ declare module 'astro:transitions' {
 	export const ViewTransitions: ViewTransitionsModule['default'];
 }
 
+declare module 'astro:middleware' {
+	export * from 'astro/middleware/namespace';
+}
+
+declare module 'astro:components' {
+	export * from 'astro/components';
+}
+
 type MD = import('./dist/@types/astro').MarkdownInstance<Record<string, any>>;
 interface ExportedMarkdownModuleEntities {
 	frontmatter: MD['frontmatter'];
diff --git a/packages/astro/package.json b/packages/astro/package.json
index 7739b7ee4a25..60294fe23346 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -23,6 +23,9 @@
       ],
       "middleware": [
         "./dist/core/middleware/index.d.ts"
+      ],
+      "middleware/namespace": [
+        "./dist/core/middleware/namespace.d.ts"
       ]
     }
   },
@@ -70,6 +73,10 @@
       "types": "./dist/core/middleware/index.d.ts",
       "default": "./dist/core/middleware/index.js"
     },
+    "./middleware/namespace": {
+      "types": "./dist/core/middleware/namespace.d.ts",
+      "default": "./dist/core/middleware/namespace.js"
+    },
     "./transitions": "./dist/transitions/index.js"
   },
   "imports": {
diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts
index e2b3e6d63f7f..347e39fe69bd 100644
--- a/packages/astro/src/@types/astro.ts
+++ b/packages/astro/src/@types/astro.ts
@@ -1852,7 +1852,7 @@ export interface APIContext<Props extends Record<string, any> = Record<string, a
 	 *
 	 * ```ts
 	 * // src/middleware.ts
-	 * import {defineMiddleware} from "astro/middleware";
+	 * import {defineMiddleware} from "astro:middleware";
 	 *
 	 * export const onRequest = defineMiddleware((context, next) => {
 	 *   context.locals.greeting = "Hello!";
diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts
index 5b2ebfa21bab..f4938d2ebaf9 100644
--- a/packages/astro/src/core/create-vite.ts
+++ b/packages/astro/src/core/create-vite.ts
@@ -170,6 +170,14 @@ export async function createVite(
 					find: /^astro$/,
 					replacement: fileURLToPath(new URL('../@types/astro', import.meta.url)),
 				},
+				{
+					find: 'astro:middleware',
+					replacement: 'astro/middleware/namespace',
+				},
+				{
+					find: 'astro:components',
+					replacement: 'astro/components',
+				},
 			],
 			conditions: ['astro'],
 			// Astro imports in third-party packages should use the same version as root
diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts
index c717a2b0301a..9bac015190f5 100644
--- a/packages/astro/src/core/errors/errors-data.ts
+++ b/packages/astro/src/core/errors/errors-data.ts
@@ -658,7 +658,7 @@ export const ResponseSentError = {
  *
  * 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;
@@ -678,7 +678,7 @@ export const MiddlewareNoDataOrNextCalled = {
  *
  * For example:
  * ```ts
- * import {defineMiddleware} from "astro/middleware";
+ * import {defineMiddleware} from "astro:middleware";
  * export const onRequest = defineMiddleware(() => {
  *   return "string"
  * });
@@ -698,7 +698,7 @@ export const MiddlewareNotAResponse = {
  *
  * 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/packages/astro/src/core/middleware/namespace.ts b/packages/astro/src/core/middleware/namespace.ts
new file mode 100644
index 000000000000..e504f866c05b
--- /dev/null
+++ b/packages/astro/src/core/middleware/namespace.ts
@@ -0,0 +1,4 @@
+export {
+	defineMiddleware,
+	sequence,
+} from './index.js';
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro
index 9fba8620a6dd..ddbd92fede7d 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/basic.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro
index 8a4a8debf362..74342384959f 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/css-theme.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro
index 80cafe5cced5..45e92dccf346 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/custom-theme.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro
index 02e6b4b03b34..6ea6782d6862 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/imported.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 import riGrammar from '../assets/ri.tmLanguage.json'
 import serendipity from '../assets/serendipity-morning.json'
 
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro
index 05422c8bf66a..10c17f4e2673 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/inline.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro
index ebc1b0810d49..d0ae5f95f35e 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/no-lang.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro
index ca1e238c71a2..aa4a58707b5f 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-false.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro
index cff0190e8b8e..f72e093dda20 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-null.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro
index 82e8f65c2fb9..43ccb54521b5 100644
--- a/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro
+++ b/packages/astro/test/fixtures/astro-component-code/src/pages/wrap-true.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Code component</title></head>
diff --git a/packages/astro/test/fixtures/code-component/src/pages/index.astro b/packages/astro/test/fixtures/code-component/src/pages/index.astro
index 763f32caebd0..d165a4308691 100644
--- a/packages/astro/test/fixtures/code-component/src/pages/index.astro
+++ b/packages/astro/test/fixtures/code-component/src/pages/index.astro
@@ -1,5 +1,5 @@
 ---
-import { Code } from 'astro/components';
+import { Code } from 'astro:components';
 ---
 <html>
 	<head>
diff --git a/packages/astro/test/fixtures/middleware-dev/src/middleware.js b/packages/astro/test/fixtures/middleware-dev/src/middleware.js
index 2f9fc08b9151..854c997c1099 100644
--- a/packages/astro/test/fixtures/middleware-dev/src/middleware.js
+++ b/packages/astro/test/fixtures/middleware-dev/src/middleware.js
@@ -1,4 +1,4 @@
-import { sequence, defineMiddleware } from 'astro/middleware';
+import { sequence, defineMiddleware } from 'astro:middleware';
 
 const first = defineMiddleware(async (context, next) => {
 	if (context.request.url.includes('/lorem')) {
diff --git a/packages/astro/test/fixtures/middleware-ssg/src/middleware.js b/packages/astro/test/fixtures/middleware-ssg/src/middleware.js
index f28d89f670aa..04c0bfb3a41d 100644
--- a/packages/astro/test/fixtures/middleware-ssg/src/middleware.js
+++ b/packages/astro/test/fixtures/middleware-ssg/src/middleware.js
@@ -1,4 +1,4 @@
-import { sequence, defineMiddleware } from 'astro/middleware';
+import { sequence, defineMiddleware } from 'astro:middleware';
 
 const first = defineMiddleware(async (context, next) => {
 	if (context.request.url.includes('/second')) {
diff --git a/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts b/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts
index a8de8d130676..57ce556781a8 100644
--- a/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts
+++ b/packages/astro/test/fixtures/ssr-redirect/src/middleware.ts
@@ -1,4 +1,4 @@
-import { defineMiddleware } from 'astro/middleware';
+import { defineMiddleware } from 'astro:middleware';
 
 export const onRequest = defineMiddleware(({ request }, next) => {
 	if(new URL(request.url).pathname === '/middleware-redirect/') {
diff --git a/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro b/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro
index e2f564a3bcf6..c87ed5b088ba 100644
--- a/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro
+++ b/packages/astro/test/fixtures/static-build-code-component/src/pages/index.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Testing</title></head>
diff --git a/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro b/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro
index e2f564a3bcf6..c87ed5b088ba 100644
--- a/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro
+++ b/packages/astro/test/fixtures/static-build-dir/src/pages/index.astro
@@ -1,5 +1,5 @@
 ---
-import {Code} from 'astro/components';
+import {Code} from 'astro:components';
 ---
 <html>
 <head><title>Testing</title></head>
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 625c241b35b8..711f92cbefc3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -18252,21 +18252,25 @@ packages:
   file:packages/astro/test/fixtures/css-assets/packages/font-awesome:
     resolution: {directory: packages/astro/test/fixtures/css-assets/packages/font-awesome, type: directory}
     name: '@test/astro-font-awesome-package'
+    version: 0.0.1
     dev: false
 
   file:packages/astro/test/fixtures/multiple-renderers/renderers/one:
     resolution: {directory: packages/astro/test/fixtures/multiple-renderers/renderers/one, type: directory}
     name: '@test/astro-renderer-one'
+    version: 1.0.0
     dev: false
 
   file:packages/astro/test/fixtures/multiple-renderers/renderers/two:
     resolution: {directory: packages/astro/test/fixtures/multiple-renderers/renderers/two, type: directory}
     name: '@test/astro-renderer-two'
+    version: 1.0.0
     dev: false
 
   file:packages/astro/test/fixtures/solid-component/deps/solid-jsx-component:
     resolution: {directory: packages/astro/test/fixtures/solid-component/deps/solid-jsx-component, type: directory}
     name: '@test/solid-jsx-component'
+    version: 0.0.0
     dependencies:
       solid-js: 1.7.6
     dev: false