@nuxt/docs-nightly 4.2.2-29382831.243261ed → 4.2.2-29385650.ab3dd9a8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/1.getting-started/01.introduction.md +1 -1
  2. package/1.getting-started/03.configuration.md +5 -5
  3. package/1.getting-started/04.views.md +5 -5
  4. package/1.getting-started/05.assets.md +7 -7
  5. package/1.getting-started/06.styling.md +5 -5
  6. package/1.getting-started/07.routing.md +7 -7
  7. package/1.getting-started/08.seo-meta.md +3 -3
  8. package/1.getting-started/09.transitions.md +6 -6
  9. package/1.getting-started/10.data-fetching.md +2 -2
  10. package/1.getting-started/11.state-management.md +2 -2
  11. package/1.getting-started/12.error-handling.md +3 -3
  12. package/1.getting-started/13.server.md +2 -2
  13. package/1.getting-started/14.layers.md +3 -3
  14. package/1.getting-started/16.deployment.md +1 -1
  15. package/1.getting-started/17.testing.md +1 -1
  16. package/1.getting-started/18.upgrade.md +6 -6
  17. package/2.directory-structure/0.nuxt.md +1 -1
  18. package/2.directory-structure/0.output.md +1 -1
  19. package/2.directory-structure/1.app/1.assets.md +2 -2
  20. package/2.directory-structure/1.app/1.components.md +2 -2
  21. package/2.directory-structure/1.app/1.composables.md +2 -2
  22. package/2.directory-structure/1.app/1.layouts.md +3 -3
  23. package/2.directory-structure/1.app/1.middleware.md +1 -1
  24. package/2.directory-structure/1.app/1.pages.md +7 -7
  25. package/2.directory-structure/1.app/1.plugins.md +2 -2
  26. package/2.directory-structure/1.app/1.utils.md +3 -3
  27. package/2.directory-structure/1.app/3.app.md +4 -4
  28. package/2.directory-structure/1.content.md +1 -1
  29. package/2.directory-structure/1.modules.md +1 -1
  30. package/2.directory-structure/1.node_modules.md +1 -1
  31. package/2.directory-structure/1.server.md +3 -3
  32. package/2.directory-structure/1.shared.md +3 -3
  33. package/2.directory-structure/2.env.md +2 -2
  34. package/2.directory-structure/2.nuxtignore.md +1 -1
  35. package/2.directory-structure/2.nuxtrc.md +1 -1
  36. package/2.directory-structure/3.nuxt-config.md +1 -1
  37. package/2.directory-structure/3.package.md +1 -1
  38. package/2.directory-structure/index.md +24 -24
  39. package/3.guide/1.concepts/{3.rendering.md → 1.rendering.md} +1 -27
  40. package/3.guide/1.concepts/{2.vuejs-development.md → 10.vuejs-development.md} +4 -3
  41. package/3.guide/1.concepts/{10.nuxt-lifecycle.md → 2.nuxt-lifecycle.md} +32 -25
  42. package/3.guide/1.concepts/{1.auto-imports.md → 3.auto-imports.md} +5 -5
  43. package/3.guide/1.concepts/4.server-engine.md +3 -3
  44. package/3.guide/1.concepts/5.modules.md +1 -1
  45. package/3.guide/1.concepts/7.esm.md +1 -0
  46. package/3.guide/1.concepts/8.typescript.md +4 -4
  47. package/3.guide/2.best-practices/performance.md +2 -2
  48. package/3.guide/3.ai/.navigation.yml +3 -0
  49. package/3.guide/3.ai/1.mcp.md +255 -0
  50. package/3.guide/3.ai/2.llms-txt.md +65 -0
  51. package/3.guide/{3.recipes → 4.recipes}/1.custom-routing.md +1 -1
  52. package/3.guide/{3.recipes → 4.recipes}/2.vite-plugin.md +1 -1
  53. package/3.guide/{3.recipes → 4.recipes}/3.custom-usefetch.md +1 -1
  54. package/3.guide/{3.recipes → 4.recipes}/4.sessions-and-authentication.md +1 -1
  55. package/3.guide/{4.going-further → 5.going-further}/1.events.md +2 -3
  56. package/3.guide/{4.going-further → 5.going-further}/1.experimental-features.md +4 -4
  57. package/3.guide/{4.going-further → 5.going-further}/1.internals.md +3 -2
  58. package/3.guide/{4.going-further → 5.going-further}/10.runtime-config.md +2 -2
  59. package/3.guide/{4.going-further → 5.going-further}/2.hooks.md +2 -2
  60. package/3.guide/{4.going-further → 5.going-further}/3.modules.md +2 -2
  61. package/3.guide/{4.going-further → 5.going-further}/6.nuxt-app.md +3 -3
  62. package/3.guide/{4.going-further → 5.going-further}/7.layers.md +11 -11
  63. package/4.api/1.components/12.nuxt-route-announcer.md +1 -1
  64. package/4.api/1.components/2.nuxt-page.md +2 -2
  65. package/4.api/1.components/3.nuxt-layout.md +5 -5
  66. package/4.api/1.components/5.nuxt-loading-indicator.md +1 -1
  67. package/4.api/1.components/7.nuxt-welcome.md +2 -2
  68. package/4.api/2.composables/use-app-config.md +1 -1
  69. package/4.api/2.composables/use-nuxt-app.md +4 -4
  70. package/4.api/2.composables/use-response-header.md +1 -1
  71. package/4.api/2.composables/use-route.md +1 -1
  72. package/4.api/2.composables/use-router.md +2 -2
  73. package/4.api/2.composables/use-runtime-config.md +1 -1
  74. package/4.api/3.utils/$fetch.md +1 -1
  75. package/4.api/3.utils/abort-navigation.md +1 -1
  76. package/4.api/3.utils/add-route-middleware.md +1 -1
  77. package/4.api/3.utils/define-nuxt-plugin.md +2 -2
  78. package/4.api/3.utils/define-nuxt-route-middleware.md +1 -1
  79. package/4.api/3.utils/define-page-meta.md +6 -6
  80. package/4.api/3.utils/navigate-to.md +1 -1
  81. package/4.api/3.utils/update-app-config.md +2 -2
  82. package/4.api/4.commands/module.md +3 -3
  83. package/4.api/4.commands/prepare.md +1 -1
  84. package/4.api/4.commands/preview.md +1 -1
  85. package/4.api/4.commands/typecheck.md +1 -1
  86. package/4.api/5.kit/1.modules.md +1 -1
  87. package/4.api/5.kit/2.programmatic.md +2 -2
  88. package/4.api/6.advanced/1.hooks.md +1 -1
  89. package/4.api/6.nuxt-config.md +4 -4
  90. package/5.community/6.roadmap.md +4 -4
  91. package/6.bridge/1.overview.md +1 -1
  92. package/6.bridge/2.typescript.md +1 -1
  93. package/6.bridge/3.bridge-composition-api.md +1 -1
  94. package/6.bridge/4.plugins-and-middleware.md +2 -2
  95. package/7.migration/11.server.md +1 -1
  96. package/7.migration/2.configuration.md +2 -2
  97. package/7.migration/20.module-authors.md +1 -1
  98. package/7.migration/3.auto-imports.md +1 -1
  99. package/7.migration/5.plugins-and-middleware.md +2 -2
  100. package/7.migration/6.pages-and-layouts.md +6 -6
  101. package/package.json +1 -1
  102. /package/3.guide/{3.recipes → 4.recipes}/.navigation.yml +0 -0
  103. /package/3.guide/{4.going-further → 5.going-further}/.navigation.yml +0 -0
  104. /package/3.guide/{4.going-further → 5.going-further}/1.features.md +0 -0
  105. /package/3.guide/{4.going-further → 5.going-further}/11.nightly-release-channel.md +0 -0
  106. /package/3.guide/{4.going-further → 5.going-further}/4.kit.md +0 -0
  107. /package/3.guide/{4.going-further → 5.going-further}/9.debugging.md +0 -0
  108. /package/3.guide/{4.going-further → 5.going-further}/index.md +0 -0
@@ -19,7 +19,7 @@ If you want to play around with Nuxt in your browser, you can [try it out in one
19
19
 
20
20
  Nuxt uses conventions and an opinionated directory structure to automate repetitive tasks and allow developers to focus on pushing features. The configuration file can still customize and override its default behaviors.
21
21
 
22
- - **File-based routing:** define routes based on the structure of your [`app/pages/` directory](/docs/4.x/guide/directory-structure/app/pages). This can make it easier to organize your application and avoid the need for manual route configuration.
22
+ - **File-based routing:** define routes based on the structure of your [`app/pages/` directory](/docs/4.x/directory-structure/app/pages). This can make it easier to organize your application and avoid the need for manual route configuration.
23
23
  - **Code splitting:** Nuxt automatically splits your code into smaller chunks, which can help reduce the initial load time of your application.
24
24
  - **Server-side rendering out of the box:** Nuxt comes with built-in SSR capabilities, so you don't have to set up a separate server yourself.
25
25
  - **Auto-imports:** write Vue composables and components in their respective directories and use them without having to import them with the benefits of tree-shaking and optimized JS bundles.
@@ -4,11 +4,11 @@ description: Nuxt is configured with sensible defaults to make you productive.
4
4
  navigation.icon: i-lucide-cog
5
5
  ---
6
6
 
7
- By default, Nuxt is configured to cover most use cases. The [`nuxt.config.ts`](/docs/4.x/guide/directory-structure/nuxt-config) file can override or extend this default configuration.
7
+ By default, Nuxt is configured to cover most use cases. The [`nuxt.config.ts`](/docs/4.x/directory-structure/nuxt-config) file can override or extend this default configuration.
8
8
 
9
9
  ## Nuxt Configuration
10
10
 
11
- The [`nuxt.config.ts`](/docs/4.x/guide/directory-structure/nuxt-config) file is located at the root of a Nuxt project and can override or extend the application's behavior.
11
+ The [`nuxt.config.ts`](/docs/4.x/directory-structure/nuxt-config) file is located at the root of a Nuxt project and can override or extend the application's behavior.
12
12
 
13
13
  A minimal configuration file exports the `defineNuxtConfig` function containing an object with your configuration. The `defineNuxtConfig` helper is globally available without import.
14
14
 
@@ -124,7 +124,7 @@ const appConfig = useAppConfig()
124
124
  </script>
125
125
  ```
126
126
 
127
- :read-more{to="/docs/4.x/guide/directory-structure/app/app-config"}
127
+ :read-more{to="/docs/4.x/directory-structure/app/app-config"}
128
128
 
129
129
  ## `runtimeConfig` vs. `app.config`
130
130
 
@@ -145,7 +145,7 @@ Non primitive JS types | ❌ No | ✅ Yes
145
145
 
146
146
  ## External Configuration Files
147
147
 
148
- Nuxt uses [`nuxt.config.ts`](/docs/4.x/guide/directory-structure/nuxt-config) file as the single source of truth for configurations and skips reading external configuration files. During the course of building your project, you may have a need to configure those. The following table highlights common configurations and, where applicable, how they can be configured with Nuxt.
148
+ Nuxt uses [`nuxt.config.ts`](/docs/4.x/directory-structure/nuxt-config) file as the single source of truth for configurations and skips reading external configuration files. During the course of building your project, you may have a need to configure those. The following table highlights common configurations and, where applicable, how they can be configured with Nuxt.
149
149
 
150
150
  Name | Config File | How To Configure
151
151
  ---------------------------------------------|---------------------------|-------------------------
@@ -158,7 +158,7 @@ Here is a list of other common config files:
158
158
 
159
159
  Name | Config File | How To Configure
160
160
  ---------------------------------------------|-------------------------|--------------------------
161
- [TypeScript](https://www.typescriptlang.org) | `tsconfig.json` | [More Info](/docs/4.x/guide/directory-structure/tsconfig)
161
+ [TypeScript](https://www.typescriptlang.org) | `tsconfig.json` | [More Info](/docs/4.x/directory-structure/tsconfig)
162
162
  [ESLint](https://eslint.org) | `eslint.config.js` | [More Info](https://eslint.org/docs/latest/use/configure/configuration-files)
163
163
  [Prettier](https://prettier.io) | `prettier.config.js` | [More Info](https://prettier.io/docs/configuration.html)
164
164
  [Stylelint](https://stylelint.io) | `stylelint.config.js` | [More Info](https://stylelint.io/user-guide/configure/)
@@ -26,7 +26,7 @@ If you are familiar with Vue, you might wonder where `main.js` is (the file that
26
26
 
27
27
  ![Components are reusable pieces of UI](/assets/docs/getting-started/views/components.svg)
28
28
 
29
- Most components are reusable pieces of the user interface, like buttons and menus. In Nuxt, you can create these components in the [`app/components/`](/docs/4.x/guide/directory-structure/app/components) directory, and they will be automatically available across your application without having to explicitly import them.
29
+ Most components are reusable pieces of the user interface, like buttons and menus. In Nuxt, you can create these components in the [`app/components/`](/docs/4.x/directory-structure/app/components) directory, and they will be automatically available across your application without having to explicitly import them.
30
30
 
31
31
  ::code-group
32
32
 
@@ -55,9 +55,9 @@ Most components are reusable pieces of the user interface, like buttons and menu
55
55
 
56
56
  ![Pages are views tied to a specific route](/assets/docs/getting-started/views/pages.svg)
57
57
 
58
- Pages represent views for each specific route pattern. Every file in the [`app/pages/`](/docs/4.x/guide/directory-structure/app/pages) directory represents a different route displaying its content.
58
+ Pages represent views for each specific route pattern. Every file in the [`app/pages/`](/docs/4.x/directory-structure/app/pages) directory represents a different route displaying its content.
59
59
 
60
- To use pages, create an `app/pages/index.vue` file and add `<NuxtPage />` component to the [`app/app.vue`](/docs/4.x/guide/directory-structure/app/app) (or remove `app/app.vue` for default entry). You can now create more pages and their corresponding routes by adding new files in the [`app/pages/`](/docs/4.x/guide/directory-structure/app/pages) directory.
60
+ To use pages, create an `app/pages/index.vue` file and add `<NuxtPage />` component to the [`app/app.vue`](/docs/4.x/directory-structure/app/app) (or remove `app/app.vue` for default entry). You can now create more pages and their corresponding routes by adding new files in the [`app/pages/`](/docs/4.x/directory-structure/app/pages) directory.
61
61
 
62
62
  ::code-group
63
63
 
@@ -91,7 +91,7 @@ To use pages, create an `app/pages/index.vue` file and add `<NuxtPage />` compon
91
91
  Layouts are wrappers around pages that contain a common User Interface for several pages, such as header and footer displays. Layouts are Vue files using `<slot />` components to display the **page** content. The `app/layouts/default.vue` file will be used by default. Custom layouts can be set as part of your page metadata.
92
92
 
93
93
  ::note
94
- If you only have a single layout in your application, we recommend using [`app/app.vue`](/docs/4.x/guide/directory-structure/app/app) with [`<NuxtPage />`](/docs/4.x/api/components/nuxt-page) instead.
94
+ If you only have a single layout in your application, we recommend using [`app/app.vue`](/docs/4.x/directory-structure/app/app) with [`<NuxtPage />`](/docs/4.x/api/components/nuxt-page) instead.
95
95
  ::
96
96
 
97
97
  ::code-group
@@ -137,7 +137,7 @@ If you only have a single layout in your application, we recommend using [`app/a
137
137
 
138
138
  ::
139
139
 
140
- If you want to create more layouts and learn how to use them in your pages, find more information in the [Layouts section](/docs/4.x/guide/directory-structure/app/layouts).
140
+ If you want to create more layouts and learn how to use them in your pages, find more information in the [Layouts section](/docs/4.x/directory-structure/app/layouts).
141
141
 
142
142
  ## Advanced: Extending the HTML Template
143
143
 
@@ -6,14 +6,14 @@ navigation.icon: i-lucide-image
6
6
 
7
7
  Nuxt uses two directories to handle assets like stylesheets, fonts or images.
8
8
 
9
- - The [`public/`](/docs/4.x/guide/directory-structure/public) directory content is served at the server root as-is.
10
- - The [`app/assets/`](/docs/4.x/guide/directory-structure/app/assets) directory contains by convention every asset that you want the build tool (Vite or webpack) to process.
9
+ - The [`public/`](/docs/4.x/directory-structure/public) directory content is served at the server root as-is.
10
+ - The [`app/assets/`](/docs/4.x/directory-structure/app/assets) directory contains by convention every asset that you want the build tool (Vite or webpack) to process.
11
11
 
12
12
  ## Public Directory
13
13
 
14
- The [`public/`](/docs/4.x/guide/directory-structure/public) directory is used as a public server for static assets publicly available at a defined URL of your application.
14
+ The [`public/`](/docs/4.x/directory-structure/public) directory is used as a public server for static assets publicly available at a defined URL of your application.
15
15
 
16
- You can get a file in the [`public/`](/docs/4.x/guide/directory-structure/public) directory from your application's code or from a browser by the root URL `/`.
16
+ You can get a file in the [`public/`](/docs/4.x/directory-structure/public) directory from your application's code or from a browser by the root URL `/`.
17
17
 
18
18
  ### Example
19
19
 
@@ -32,9 +32,9 @@ For example, referencing an image file in the `public/img/` directory, available
32
32
 
33
33
  Nuxt uses [Vite](https://vite.dev/guide/assets) (default) or [webpack](https://webpack.js.org/guides/asset-management/) to build and bundle your application. The main function of these build tools is to process JavaScript files, but they can be extended through [plugins](https://vite.dev/plugins/) (for Vite) or [loaders](https://webpack.js.org/loaders/) (for webpack) to process other kinds of assets, like stylesheets, fonts or SVGs. This step transforms the original file, mainly for performance or caching purposes (such as stylesheet minification or browser cache invalidation).
34
34
 
35
- By convention, Nuxt uses the [`app/assets/`](/docs/4.x/guide/directory-structure/app/assets) directory to store these files but there is no auto-scan functionality for this directory, and you can use any other name for it.
35
+ By convention, Nuxt uses the [`app/assets/`](/docs/4.x/directory-structure/app/assets) directory to store these files but there is no auto-scan functionality for this directory, and you can use any other name for it.
36
36
 
37
- In your application's code, you can reference a file located in the [`app/assets/`](/docs/4.x/guide/directory-structure/app/assets) directory by using the `~/assets/` path.
37
+ In your application's code, you can reference a file located in the [`app/assets/`](/docs/4.x/directory-structure/app/assets) directory by using the `~/assets/` path.
38
38
 
39
39
  ### Example
40
40
 
@@ -50,5 +50,5 @@ For example, referencing an image file that will be processed if a build tool is
50
50
  ```
51
51
 
52
52
  ::note
53
- Nuxt won't serve files in the [`app/assets/`](/docs/4.x/guide/directory-structure/app/assets) directory at a static URL like `/assets/my-file.png`. If you need a static URL, use the [`public/`](/docs/4.x/getting-started/assets#public-directory) directory.
53
+ Nuxt won't serve files in the [`app/assets/`](/docs/4.x/directory-structure/app/assets) directory at a static URL like `/assets/my-file.png`. If you need a static URL, use the [`public/`](/docs/4.x/getting-started/assets#public-directory) directory.
54
54
  ::
@@ -9,12 +9,12 @@ You can use CSS preprocessors, CSS frameworks, UI libraries and Nuxt modules to
9
9
 
10
10
  ## Local Stylesheets
11
11
 
12
- If you're writing local stylesheets, the natural place to put them is the [`app/assets/` directory](/docs/4.x/guide/directory-structure/app/assets).
12
+ If you're writing local stylesheets, the natural place to put them is the [`app/assets/` directory](/docs/4.x/directory-structure/app/assets).
13
13
 
14
14
  ### Importing Within Components
15
15
 
16
16
  You can import stylesheets in your pages, layouts and components directly.
17
- You can use a JavaScript import, or a CSS [`@import` statement](https://developer.mozilla.org/en-US/docs/Web/CSS/@import).
17
+ You can use a JavaScript import, or a CSS [`@import` statement](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@import).
18
18
 
19
19
  ```vue [app/pages/index.vue]
20
20
  <script>
@@ -37,7 +37,7 @@ The stylesheets will be inlined in the HTML rendered by Nuxt.
37
37
  ### The CSS Property
38
38
 
39
39
  You can also use the `css` property in the Nuxt configuration.
40
- The natural place for your stylesheets is the [`app/assets/` directory](/docs/4.x/guide/directory-structure/app/assets). You can then reference its path and Nuxt will include it to all the pages of your application.
40
+ The natural place for your stylesheets is the [`app/assets/` directory](/docs/4.x/directory-structure/app/assets). You can then reference its path and Nuxt will include it to all the pages of your application.
41
41
 
42
42
  ```ts [nuxt.config.ts]
43
43
  export default defineNuxtConfig({
@@ -500,7 +500,7 @@ Use different styles for different layouts.
500
500
  </style>
501
501
  ```
502
502
 
503
- :read-more{to="/docs/4.x/guide/directory-structure/app/layouts"}
503
+ :read-more{to="/docs/4.x/directory-structure/app/layouts"}
504
504
 
505
505
  ## Third Party Libraries And Modules
506
506
 
@@ -517,7 +517,7 @@ Here are a few modules to help you get started:
517
517
  - [Nuxt UI](https://ui.nuxt.com): A UI Library for Modern Web Apps
518
518
  - [Panda CSS](https://panda-css.com/docs/installation/nuxt): CSS-in-JS engine that generates atomic CSS at build time
519
519
 
520
- Nuxt modules provide you with a good developer experience out of the box, but remember that if your favorite tool doesn't have a module, it doesn't mean that you can't use it with Nuxt! You can configure it yourself for your own project. Depending on the tool, you might need to use a [Nuxt plugin](/docs/4.x/guide/directory-structure/app/plugins) and/or [make your own module](/docs/4.x/guide/going-further/modules). Share them with the [community](/modules) if you do!
520
+ Nuxt modules provide you with a good developer experience out of the box, but remember that if your favorite tool doesn't have a module, it doesn't mean that you can't use it with Nuxt! You can configure it yourself for your own project. Depending on the tool, you might need to use a [Nuxt plugin](/docs/4.x/directory-structure/app/plugins) and/or [make your own module](/docs/4.x/guide/going-further/modules). Share them with the [community](/modules) if you do!
521
521
 
522
522
  ### Easily Load Webfonts
523
523
 
@@ -4,11 +4,11 @@ description: Nuxt file-system routing creates a route for every file in the page
4
4
  navigation.icon: i-lucide-milestone
5
5
  ---
6
6
 
7
- One core feature of Nuxt is the file system router. Every Vue file inside the [`app/pages/`](/docs/4.x/guide/directory-structure/app/pages) directory creates a corresponding URL (or route) that displays the contents of the file. By using dynamic imports for each page, Nuxt leverages code-splitting to ship the minimum amount of JavaScript for the requested route.
7
+ One core feature of Nuxt is the file system router. Every Vue file inside the [`app/pages/`](/docs/4.x/directory-structure/app/pages) directory creates a corresponding URL (or route) that displays the contents of the file. By using dynamic imports for each page, Nuxt leverages code-splitting to ship the minimum amount of JavaScript for the requested route.
8
8
 
9
9
  ## Pages
10
10
 
11
- Nuxt routing is based on [vue-router](https://router.vuejs.org) and generates the routes from every component created in the [`app/pages/` directory](/docs/4.x/guide/directory-structure/app/pages), based on their filename.
11
+ Nuxt routing is based on [vue-router](https://router.vuejs.org) and generates the routes from every component created in the [`app/pages/` directory](/docs/4.x/directory-structure/app/pages), based on their filename.
12
12
 
13
13
  This file system routing uses naming conventions to create dynamic and nested routes:
14
14
 
@@ -43,7 +43,7 @@ This file system routing uses naming conventions to create dynamic and nested ro
43
43
 
44
44
  ::
45
45
 
46
- :read-more{to="/docs/4.x/guide/directory-structure/app/pages"}
46
+ :read-more{to="/docs/4.x/directory-structure/app/pages"}
47
47
 
48
48
  ## Navigation
49
49
 
@@ -91,14 +91,14 @@ Route middleware runs within the Vue part of your Nuxt app. Despite the similar
91
91
  ::
92
92
 
93
93
  ::important
94
- Route middleware does **not** run for server routes (e.g. `/api/*`) or other server requests. To apply middleware to these requests, use [server middleware](/docs/4.x/guide/directory-structure/server#server-middleware) instead.
94
+ Route middleware does **not** run for server routes (e.g. `/api/*`) or other server requests. To apply middleware to these requests, use [server middleware](/docs/4.x/directory-structure/server#server-middleware) instead.
95
95
  ::
96
96
 
97
97
  There are three kinds of route middleware:
98
98
 
99
99
  1. Anonymous (or inline) route middleware, which are defined directly in the pages where they are used.
100
- 2. Named route middleware, which are placed in the [`app/middleware/`](/docs/4.x/guide/directory-structure/app/middleware) directory and will be automatically loaded via asynchronous import when used on a page. (**Note**: The route middleware name is normalized to kebab-case, so `someMiddleware` becomes `some-middleware`.)
101
- 3. Global route middleware, which are placed in the [`app/middleware/`](/docs/4.x/guide/directory-structure/app/middleware) directory (with a `.global` suffix) and will be automatically run on every route change.
100
+ 2. Named route middleware, which are placed in the [`app/middleware/`](/docs/4.x/directory-structure/app/middleware) directory and will be automatically loaded via asynchronous import when used on a page. (**Note**: The route middleware name is normalized to kebab-case, so `someMiddleware` becomes `some-middleware`.)
101
+ 3. Global route middleware, which are placed in the [`app/middleware/`](/docs/4.x/directory-structure/app/middleware) directory (with a `.global` suffix) and will be automatically run on every route change.
102
102
 
103
103
  Example of an `auth` middleware protecting the `/dashboard` page:
104
104
 
@@ -129,7 +129,7 @@ definePageMeta({
129
129
 
130
130
  ::
131
131
 
132
- :read-more{to="/docs/4.x/guide/directory-structure/app/middleware"}
132
+ :read-more{to="/docs/4.x/directory-structure/app/middleware"}
133
133
 
134
134
  ## Route Validation
135
135
 
@@ -9,7 +9,7 @@ and numerous configuration options to manage your app's head and SEO meta tags.
9
9
 
10
10
  ## Nuxt Config
11
11
 
12
- Providing an [`app.head`](/docs/4.x/api/nuxt-config#head) property in your [`nuxt.config.ts`](/docs/4.x/guide/directory-structure/nuxt-config) allows you to statically customize the head for your entire app.
12
+ Providing an [`app.head`](/docs/4.x/api/nuxt-config#head) property in your [`nuxt.config.ts`](/docs/4.x/directory-structure/nuxt-config) allows you to statically customize the head for your entire app.
13
13
 
14
14
  ::important
15
15
  This method does not allow you to provide reactive data. We recommend using `useHead()` in `app.vue`.
@@ -273,7 +273,7 @@ useHead({
273
273
 
274
274
  ### With `definePageMeta`
275
275
 
276
- Within your [`app/pages/` directory](/docs/4.x/guide/directory-structure/app/pages), you can use `definePageMeta` along with [`useHead`](/docs/4.x/api/composables/use-head) to set metadata based on the current route.
276
+ Within your [`app/pages/` directory](/docs/4.x/directory-structure/app/pages), you can use `definePageMeta` along with [`useHead`](/docs/4.x/api/composables/use-head) to set metadata based on the current route.
277
277
 
278
278
  For example, you can first set the current page title (this is extracted at build time via a macro, so it can't be set dynamically):
279
279
 
@@ -299,7 +299,7 @@ useHead({
299
299
 
300
300
  :link-example{to="/docs/4.x/examples/features/meta-tags"}
301
301
 
302
- :read-more{to="/docs/4.x/guide/directory-structure/app/pages/#page-metadata"}
302
+ :read-more{to="/docs/4.x/directory-structure/app/pages/#page-metadata"}
303
303
 
304
304
  ### Dynamic Title
305
305
 
@@ -10,7 +10,7 @@ Nuxt leverages Vue's [`<Transition>`](https://vuejs.org/guide/built-ins/transiti
10
10
 
11
11
  ## Page Transitions
12
12
 
13
- You can enable page transitions to apply an automatic transition for all your [pages](/docs/4.x/guide/directory-structure/app/pages).
13
+ You can enable page transitions to apply an automatic transition for all your [pages](/docs/4.x/directory-structure/app/pages).
14
14
 
15
15
  ```ts twoslash [nuxt.config.ts]
16
16
  export default defineNuxtConfig({
@@ -24,7 +24,7 @@ export default defineNuxtConfig({
24
24
  If you are changing layouts as well as page, the page transition you set here will not run. Instead, you should set a [layout transition](/docs/4.x/getting-started/transitions#layout-transitions).
25
25
  ::
26
26
 
27
- To start adding transition between your pages, add the following CSS to your [`app.vue`](/docs/4.x/guide/directory-structure/app/app):
27
+ To start adding transition between your pages, add the following CSS to your [`app.vue`](/docs/4.x/directory-structure/app/app):
28
28
 
29
29
  ::code-group
30
30
 
@@ -115,7 +115,7 @@ Moving to the about page will add the 3d rotation effect:
115
115
 
116
116
  ## Layout Transitions
117
117
 
118
- You can enable layout transitions to apply an automatic transition for all your [layouts](/docs/4.x/guide/directory-structure/app/layouts).
118
+ You can enable layout transitions to apply an automatic transition for all your [layouts](/docs/4.x/directory-structure/app/layouts).
119
119
 
120
120
  ```ts twoslash [nuxt.config.ts]
121
121
  export default defineNuxtConfig({
@@ -125,7 +125,7 @@ export default defineNuxtConfig({
125
125
  })
126
126
  ```
127
127
 
128
- To start adding transition between your pages and layouts, add the following CSS to your [`app.vue`](/docs/4.x/guide/directory-structure/app/app):
128
+ To start adding transition between your pages and layouts, add the following CSS to your [`app.vue`](/docs/4.x/directory-structure/app/app):
129
129
 
130
130
  ::code-group
131
131
 
@@ -315,7 +315,7 @@ Learn more about additional [JavaScript hooks](https://vuejs.org/guide/built-ins
315
315
 
316
316
  ## Dynamic Transitions
317
317
 
318
- To apply dynamic transitions using conditional logic, you can leverage inline [middleware](/docs/4.x/guide/directory-structure/app/middleware) to assign a different transition name to `to.meta.pageTransition`.
318
+ To apply dynamic transitions using conditional logic, you can leverage inline [middleware](/docs/4.x/directory-structure/app/middleware) to assign a different transition name to `to.meta.pageTransition`.
319
319
 
320
320
  ::code-group
321
321
 
@@ -434,7 +434,7 @@ The possible values are: `false`, `true`, or `'always'`.
434
434
 
435
435
  If set to true, Nuxt will not apply transitions if the user's browser matches `prefers-reduced-motion: reduce` (recommended). If set to `always`, Nuxt will always apply the transition and it is up to you to respect the user's preference.
436
436
 
437
- By default, view transitions are enabled for all [pages](/docs/4.x/guide/directory-structure/app/pages), but you can set a different global default.
437
+ By default, view transitions are enabled for all [pages](/docs/4.x/directory-structure/app/pages), but you can set a different global default.
438
438
 
439
439
  ```ts twoslash [nuxt.config.ts]
440
440
  export default defineNuxtConfig({
@@ -661,7 +661,7 @@ Using `<script setup>` or `<script setup lang="ts">` are the recommended way of
661
661
 
662
662
  ## Serializing Data From Server to Client
663
663
 
664
- When using `useAsyncData` and `useLazyAsyncData` to transfer data fetched on server to the client (as well as anything else that utilizes [the Nuxt payload](/docs/4.x/api/composables/use-nuxt-app#payload)), the payload is serialized with [`devalue`](https://github.com/Rich-Harris/devalue). This allows us to transfer not just basic JSON but also to serialize and revive/deserialize more advanced kinds of data, such as regular expressions, Dates, Map and Set, `ref`, `reactive`, `shallowRef`, `shallowReactive` and `NuxtError` - and more.
664
+ When using `useAsyncData` and `useLazyAsyncData` to transfer data fetched on server to the client (as well as anything else that utilizes [the Nuxt payload](/docs/4.x/api/composables/use-nuxt-app#payload)), the payload is serialized with [`devalue`](https://github.com/sveltejs/devalue). This allows us to transfer not just basic JSON but also to serialize and revive/deserialize more advanced kinds of data, such as regular expressions, Dates, Map and Set, `ref`, `reactive`, `shallowRef`, `shallowReactive` and `NuxtError` - and more.
665
665
 
666
666
  It is also possible to define your own serializer/deserializer for types that are not supported by Nuxt. You can read more in the [`useNuxtApp`](/docs/4.x/api/composables/use-nuxt-app#payload) docs.
667
667
 
@@ -733,7 +733,7 @@ const { data } = await useFetch('/api/bar')
733
733
 
734
734
  Nuxt does not currently support an alternative serializer to `JSON.stringify`. However, you can return your payload as a normal string and utilize the `toJSON` method to maintain type safety.
735
735
 
736
- In the example below, we use [superjson](https://github.com/blitz-js/superjson) as our serializer.
736
+ In the example below, we use [superjson](https://github.com/flightcontrolhq/superjson) as our serializer.
737
737
 
738
738
  ```ts [server/api/superjson.ts]
739
739
  import superjson from 'superjson'
@@ -61,7 +61,7 @@ To globally invalidate cached state, see [`clearNuxtState`](/docs/4.x/api/utils/
61
61
 
62
62
  ### Initializing State
63
63
 
64
- Most of the time, you will want to initialize your state with data that resolves asynchronously. You can use the [`app.vue`](/docs/4.x/guide/directory-structure/app/app) component with the [`callOnce`](/docs/4.x/api/utils/call-once) util to do so.
64
+ Most of the time, you will want to initialize your state with data that resolves asynchronously. You can use the [`app.vue`](/docs/4.x/directory-structure/app/app) component with the [`callOnce`](/docs/4.x/api/utils/call-once) util to do so.
65
65
 
66
66
  ```vue twoslash [app/app.vue]
67
67
  <script setup lang="ts">
@@ -198,7 +198,7 @@ const date = useLocaleDate(new Date('2016-10-26'))
198
198
 
199
199
  ## Shared State
200
200
 
201
- By using [auto-imported composables](/docs/4.x/guide/directory-structure/app/composables) we can define global type-safe states and import them across the app.
201
+ By using [auto-imported composables](/docs/4.x/directory-structure/app/composables) we can define global type-safe states and import them across the app.
202
202
 
203
203
  ```ts twoslash [composables/states.ts]
204
204
  export const useColor = () => useState<string>('color', () => 'pink')
@@ -8,7 +8,7 @@ Nuxt is a full-stack framework, which means there are several sources of unpreve
8
8
 
9
9
  - Errors during the Vue rendering lifecycle (SSR & CSR)
10
10
  - Server and client startup errors (SSR + CSR)
11
- - Errors during Nitro server lifecycle ([`server/`](/docs/4.x/guide/directory-structure/server) directory)
11
+ - Errors during Nitro server lifecycle ([`server/`](/docs/4.x/directory-structure/server) directory)
12
12
  - Errors downloading JS chunks
13
13
 
14
14
  ::tip
@@ -45,7 +45,7 @@ Note that the `vue:error` hook is based on [`onErrorCaptured`](https://vuejs.org
45
45
  Nuxt will call the `app:error` hook if there are any errors in starting your Nuxt application.
46
46
 
47
47
  This includes:
48
- - running [Nuxt plugins](/docs/4.x/guide/directory-structure/app/plugins)
48
+ - running [Nuxt plugins](/docs/4.x/directory-structure/app/plugins)
49
49
  - processing `app:created` and `app:beforeMount` hooks
50
50
  - rendering your Vue app to HTML (during SSR)
51
51
  - mounting the app (on client-side), though you should handle this case with `onErrorCaptured` or with `vue:error`
@@ -107,7 +107,7 @@ const handleError = () => clearError({ redirect: '/' })
107
107
  </template>
108
108
  ```
109
109
 
110
- ::read-more{to="/docs/4.x/guide/directory-structure/error"}
110
+ ::read-more{to="/docs/4.x/directory-structure/app/error"}
111
111
  Read more about `error.vue` and its uses.
112
112
  ::
113
113
 
@@ -4,7 +4,7 @@ description: Build full-stack applications with Nuxt's server framework. You can
4
4
  navigation.icon: i-lucide-pc-case
5
5
  ---
6
6
 
7
- :read-more{to="/docs/4.x/guide/directory-structure/server"}
7
+ :read-more{to="/docs/4.x/directory-structure/server"}
8
8
 
9
9
  ## Powered by Nitro
10
10
 
@@ -38,7 +38,7 @@ And you can directly return `text`, `json`, `html` or even a `stream`.
38
38
 
39
39
  Out-of-the-box, it supports **hot module replacement** and **auto-import** like the other parts of your Nuxt application.
40
40
 
41
- :read-more{to="/docs/4.x/guide/directory-structure/server"}
41
+ :read-more{to="/docs/4.x/directory-structure/server"}
42
42
 
43
43
  ## Universal Deployment
44
44
 
@@ -9,8 +9,8 @@ One of the core features of Nuxt is the layers and extending support. You can ex
9
9
  ## Use Cases
10
10
 
11
11
  - Share reusable configuration presets across projects using `nuxt.config` and `app.config`
12
- - Create a component library using [`app/components/`](/docs/4.x/guide/directory-structure/app/components) directory
13
- - Create utility and composable library using [`app/composables/`](/docs/4.x/guide/directory-structure/app/composables) and [`app/utils/`](/docs/4.x/guide/directory-structure/app/utils) directories
12
+ - Create a component library using [`app/components/`](/docs/4.x/directory-structure/app/components) directory
13
+ - Create utility and composable library using [`app/composables/`](/docs/4.x/directory-structure/app/composables) and [`app/utils/`](/docs/4.x/directory-structure/app/utils) directories
14
14
  - Create Nuxt module presets
15
15
  - Share standard setup across projects
16
16
  - Create Nuxt themes
@@ -30,7 +30,7 @@ In addition, named layer aliases to the `srcDir` of each of these layers will au
30
30
  Named layer aliases were introduced in Nuxt v3.16.0.
31
31
  ::
32
32
 
33
- In addition, you can extend from a layer by adding the [extends](/docs/4.x/api/nuxt-config#extends) property to your [`nuxt.config`](/docs/4.x/guide/directory-structure/nuxt-config) file.
33
+ In addition, you can extend from a layer by adding the [extends](/docs/4.x/api/nuxt-config#extends) property to your [`nuxt.config`](/docs/4.x/directory-structure/nuxt-config) file.
34
34
 
35
35
  ```ts [nuxt.config.ts]
36
36
  export default defineNuxtConfig({
@@ -95,7 +95,7 @@ Nuxt can be deployed to several cloud providers with a minimal amount of configu
95
95
 
96
96
  In addition to Node.js servers and static hosting services, a Nuxt project can be deployed with several well-tested presets and minimal amount of configuration.
97
97
 
98
- You can explicitly set the desired preset in the [`nuxt.config.ts`](/docs/4.x/guide/directory-structure/nuxt-config) file:
98
+ You can explicitly set the desired preset in the [`nuxt.config.ts`](/docs/4.x/directory-structure/nuxt-config) file:
99
99
 
100
100
  ```ts twoslash [nuxt.config.ts]
101
101
  export default defineNuxtConfig({
@@ -267,7 +267,7 @@ it('can also mount an app', async () => {
267
267
 
268
268
  This should be used together with utilities from Testing Library, e.g. `screen` and `fireEvent`. Install [@testing-library/vue](https://testing-library.com/docs/vue-testing-library/intro/) in your project to use these.
269
269
 
270
- Additionally, Testing Library also relies on testing globals for cleanup. You should turn these on in your [Vitest config](https://vitest.dev/config/#globals).
270
+ Additionally, Testing Library also relies on testing globals for cleanup. You should turn these on in your [Vitest config](https://vitest.dev/config/globals).
271
271
 
272
272
  The passed in component will be rendered inside a `<div id="test-wrapper"></div>`.
273
273
 
@@ -208,7 +208,7 @@ Breaking or significant changes are documented below along with migration steps
208
208
 
209
209
  ### Migrating Using Codemods
210
210
 
211
- To facilitate the upgrade process, we have collaborated with the [Codemod](https://github.com/codemod-com/codemod) team to automate many migration steps with some open-source codemods.
211
+ To facilitate the upgrade process, we have collaborated with the [Codemod](https://github.com/codemod/codemod) team to automate many migration steps with some open-source codemods.
212
212
 
213
213
  ::note
214
214
  If you encounter any issues, please report them to the Codemod team with `npx codemod feedback` 🙏
@@ -221,22 +221,22 @@ You can run all the codemods mentioned in this guide using the following `codemo
221
221
  ::code-group
222
222
 
223
223
  ```bash [npm]
224
- # Using pinned version due to https://github.com/codemod-com/codemod/issues/1710
224
+ # Using pinned version due to https://github.com/codemod/codemod/issues/1710
225
225
  npx codemod@0.18.7 nuxt/4/migration-recipe
226
226
  ```
227
227
 
228
228
  ```bash [yarn]
229
- # Using pinned version due to https://github.com/codemod-com/codemod/issues/1710
229
+ # Using pinned version due to https://github.com/codemod/codemod/issues/1710
230
230
  yarn dlx codemod@0.18.7 nuxt/4/migration-recipe
231
231
  ```
232
232
 
233
233
  ```bash [pnpm]
234
- # Using pinned version due to https://github.com/codemod-com/codemod/issues/1710
234
+ # Using pinned version due to https://github.com/codemod/codemod/issues/1710
235
235
  pnpm dlx codemod@0.18.7 nuxt/4/migration-recipe
236
236
  ```
237
237
 
238
238
  ```bash [bun]
239
- # Using pinned version due to https://github.com/codemod-com/codemod/issues/1710
239
+ # Using pinned version due to https://github.com/codemod/codemod/issues/1710
240
240
  bun x codemod@0.18.7 nuxt/4/migration-recipe
241
241
  ```
242
242
 
@@ -1053,7 +1053,7 @@ In Nuxt v3 we moved to a 'virtual' syntax with a `getContents()` function which
1053
1053
 
1054
1054
  In addition, `lodash/template` has had a succession of security issues. These do not really apply to Nuxt projects because it is being used at build-time, not runtime, and by trusted code. However, they still appear in security audits. Moreover, `lodash` is a hefty dependency and is unused by most projects.
1055
1055
 
1056
- Finally, providing code serialization functions directly within Nuxt is not ideal. Instead, we maintain projects like [unjs/knitwork](http://github.com/unjs/knitwork) which can be dependencies of your project, and where security issues can be reported/resolved directly without requiring an upgrade of Nuxt itself.
1056
+ Finally, providing code serialization functions directly within Nuxt is not ideal. Instead, we maintain projects like [unjs/knitwork](https://github.com/unjs/knitwork) which can be dependencies of your project, and where security issues can be reported/resolved directly without requiring an upgrade of Nuxt itself.
1057
1057
 
1058
1058
  #### Migration Steps
1059
1059
 
@@ -6,7 +6,7 @@ navigation.icon: i-vscode-icons-folder-type-temp
6
6
  ---
7
7
 
8
8
  ::important
9
- This directory should be added to your [`.gitignore`](/docs/4.x/guide/directory-structure/gitignore) file to avoid pushing the dev build output to your repository.
9
+ This directory should be added to your [`.gitignore`](/docs/4.x/directory-structure/gitignore) file to avoid pushing the dev build output to your repository.
10
10
  ::
11
11
 
12
12
  This directory is interesting if you want to learn more about the files Nuxt generates based on your directory structure.
@@ -6,7 +6,7 @@ navigation.icon: i-vscode-icons-folder-type-package
6
6
  ---
7
7
 
8
8
  ::important
9
- This directory should be added to your [`.gitignore`](/docs/4.x/guide/directory-structure/gitignore) file to avoid pushing the build output to your repository.
9
+ This directory should be added to your [`.gitignore`](/docs/4.x/directory-structure/gitignore) file to avoid pushing the build output to your repository.
10
10
  ::
11
11
 
12
12
  Use this directory to deploy your Nuxt application to production.
@@ -9,8 +9,8 @@ The directory usually contains the following types of files:
9
9
 
10
10
  - Stylesheets (CSS, SASS, etc.)
11
11
  - Fonts
12
- - Images that won't be served from the [`public/`](/docs/4.x/guide/directory-structure/public) directory.
12
+ - Images that won't be served from the [`public/`](/docs/4.x/directory-structure/public) directory.
13
13
 
14
- If you want to serve assets from the server, we recommend taking a look at the [`public/`](/docs/4.x/guide/directory-structure/public) directory.
14
+ If you want to serve assets from the server, we recommend taking a look at the [`public/`](/docs/4.x/directory-structure/public) directory.
15
15
 
16
16
  :read-more{to="/docs/4.x/getting-started/assets"}
@@ -358,7 +358,7 @@ Any nested directories need to be added first as they are scanned in order.
358
358
 
359
359
  ## npm Packages
360
360
 
361
- If you want to auto-import components from an npm package, you can use [`addComponent`](/docs/4.x/api/kit/components#addcomponent) in a [local module](/docs/4.x/guide/directory-structure/modules) to register them.
361
+ If you want to auto-import components from an npm package, you can use [`addComponent`](/docs/4.x/api/kit/components#addcomponent) in a [local module](/docs/4.x/directory-structure/modules) to register them.
362
362
 
363
363
  ::code-group
364
364
 
@@ -438,7 +438,7 @@ You can also achieve a similar result with the `<ClientOnly>` component.
438
438
 
439
439
  Server components allow server-rendering individual components within your client-side apps. It's possible to use server components within Nuxt, even if you are generating a static site. That makes it possible to build complex sites that mix dynamic components, server-rendered HTML and even static chunks of markup.
440
440
 
441
- Server components can either be used on their own or paired with a [client component](/docs/4.x/guide/directory-structure/app/components#paired-with-a-client-component).
441
+ Server components can either be used on their own or paired with a [client component](/docs/4.x/directory-structure/app/components#paired-with-a-client-component).
442
442
 
443
443
  :video-accordion{title="Watch Learn Vue video about Nuxt Server Components" videoId="u1yyXe86xJM"}
444
444
 
@@ -71,7 +71,7 @@ export const useFoo = () => {
71
71
 
72
72
  ### Access plugin injections
73
73
 
74
- You can access [plugin injections](/docs/4.x/guide/directory-structure/app/plugins#providing-helpers) from composables:
74
+ You can access [plugin injections](/docs/4.x/directory-structure/app/plugins#providing-helpers) from composables:
75
75
 
76
76
  ```ts [app/composables/test.ts]
77
77
  export const useHello = () => {
@@ -82,7 +82,7 @@ export const useHello = () => {
82
82
 
83
83
  ## How Files Are Scanned
84
84
 
85
- Nuxt only scans files at the top level of the [`app/composables/` directory](/docs/4.x/guide/directory-structure/app/composables), e.g.:
85
+ Nuxt only scans files at the top level of the [`app/composables/` directory](/docs/4.x/directory-structure/app/composables), e.g.:
86
86
 
87
87
  ```bash [Directory Structure]
88
88
  -| composables/
@@ -11,7 +11,7 @@ For best performance, components placed in this directory will be automatically
11
11
 
12
12
  ## Enable Layouts
13
13
 
14
- Layouts are enabled by adding [`<NuxtLayout>`](/docs/4.x/api/components/nuxt-layout) to your [`app.vue`](/docs/4.x/guide/directory-structure/app/app):
14
+ Layouts are enabled by adding [`<NuxtLayout>`](/docs/4.x/api/components/nuxt-layout) to your [`app.vue`](/docs/4.x/directory-structure/app/app):
15
15
 
16
16
  ```vue [app/app.vue]
17
17
  <template>
@@ -34,7 +34,7 @@ If no layout is specified, `app/layouts/default.vue` will be used.
34
34
  ::
35
35
 
36
36
  ::important
37
- If you only have a single layout in your application, we recommend using [`app.vue`](/docs/4.x/guide/directory-structure/app/app) instead.
37
+ If you only have a single layout in your application, we recommend using [`app.vue`](/docs/4.x/directory-structure/app/app) instead.
38
38
  ::
39
39
 
40
40
  ::important
@@ -74,7 +74,7 @@ definePageMeta({
74
74
  </script>
75
75
  ```
76
76
 
77
- ::read-more{to="/docs/4.x/guide/directory-structure/app/pages#page-metadata"}
77
+ ::read-more{to="/docs/4.x/directory-structure/app/pages#page-metadata"}
78
78
  Learn more about `definePageMeta`.
79
79
  ::
80
80
 
@@ -20,7 +20,7 @@ Name of middleware are normalized to kebab-case: `myMiddleware` becomes `my-midd
20
20
  ::
21
21
 
22
22
  ::note
23
- Route middleware run within the Vue part of your Nuxt app. Despite the similar name, they are completely different from [server middleware](/docs/4.x/guide/directory-structure/server#server-middleware), which are run in the Nitro server part of your app.
23
+ Route middleware run within the Vue part of your Nuxt app. Despite the similar name, they are completely different from [server middleware](/docs/4.x/directory-structure/server#server-middleware), which are run in the Nitro server part of your app.
24
24
  ::
25
25
 
26
26
  :video-accordion{title="Watch a video from Vue School on all 3 kinds of middleware" videoId="761471577" platform="vimeo"}