--- icon: IconDirectory title: 'layouts' head.title: Layouts directory --- # Layouts directory Nuxt provides a customizable layouts framework you can use throughout your application, ideal for extracting common UI or code patterns into reusable layout components. Layouts are placed in the `layouts/` directory and will be automatically loaded via asynchronous import when used. Layouts are used by setting a `layout` property as part of your page metadata (if you are using the `~/pages` integration), or by using the `` component. If you only have a single layout in your application, we recommend to use [app.vue](/docs/directory-structure/app) instead. ::alert{type=warning} Unlike other components, your layouts must have a single root element to allow Nuxt to apply transitions between layout changes. :: ## Example: Enabling layouts with `app.vue` ```bash -| layouts/ ---| custom.vue -| app.vue ``` In your layout files, you'll need to use `` to define where the content of your layout will be loaded. For example: ```vue{}[layouts/custom.vue] ``` Here's how you might use that layout in `app.vue`: ```vue{}[app.vue] ``` ## Example: setting the layout with `~/pages` ```bash -| layouts/ ---| custom.vue -| pages/ ---| index.vue ``` You can set your layout within your page components like this: ```vue{}[pages/index.vue] ``` ::alert{type=info} Learn more about [defining page meta](/docs/directory-structure/pages#page-metadata). :: ## Example: manual control with `~/pages` Even if you are using the `~/pages` integration, you can take full control by using the `` component (which is globally available throughout your application), by setting `layout: false`. ```vue ``` ## Example: changing the layout You can also use a ref or computed property for your layout. ```vue ```