` with `display: contents;`
::
### Paired with a Client component
In this case, the `.server` + `.client` components are two 'halves' of a component and can be used in advanced use cases for separate implementations of a component on server and client side.
```bash [Directory Structure]
| components/
--| Comments.client.vue
--| Comments.server.vue
```
```html [pages/example.vue]
```
## `
` Component
Nuxt provides the [``](/docs/api/components/client-only) component for purposely rendering a component only on client side.
```html [pages/example.vue]
```
Use a slot as fallback until `` is mounted on client side.
```html [pages/example.vue]
```
## `` Component
Nuxt provides the `` component to render a component only during development.
The content will not be included in production builds and tree-shaken.
```html [pages/example.vue]
```
## `` Component
Nuxt provides the `` component to render its content on the client if any of its children trigger an error in SSR.
You can specify a `fallbackTag` to make it render a specific tag if it fails to render on the server.
```html [pages/example.vue]
```
## Library Authors
Making Vue component libraries with automatic tree-shaking and component registration is super easy. ✨
You can use the `components:dirs` hook to extend the directory list without requiring user configuration in your Nuxt module.
Imagine a directory structure like this:
```bash [Directory Structure]
| node_modules/
---| awesome-ui/
------| components/
---------| Alert.vue
---------| Button.vue
------| nuxt.js
| pages/
---| index.vue
| nuxt.config.js
```
Then in `awesome-ui/nuxt.js` you can use the `components:dirs` hook:
```ts
import { defineNuxtModule, createResolver } from '@nuxt/kit'
export default defineNuxtModule({
hooks: {
'components:dirs': (dirs) => {
const { resolve } = createResolver(import.meta.url)
// Add ./components dir to the list
dirs.push({
path: resolve('./components'),
prefix: 'awesome'
})
}
}
})
```
That's it! Now in your project, you can import your UI library as a Nuxt module in your `nuxt.config` file:
```ts [nuxt.config.ts]
export default defineNuxtConfig({
modules: ['awesome-ui/nuxt']
})
```
... and directly use the module components (prefixed with `awesome-`) in our `pages/index.vue`:
```vue
My
UI button!
Here's an alert!
```
It will automatically import the components only if used and also support HMR when updating your components in `node_modules/awesome-ui/components/`.
:link-example{to="/docs/examples/features/auto-imports"}