Skip to content

Client directive: Viewport

The client:viewport directive hydrates the component when its visible. If the component is visible from start, it will be hydrated.

Setup

For setting up the directive, include the integration in your Astro project.

  1. Install the library using your preferred package manager:
    npm i -D @astro-tools/client-directives
  2. Add the integration to your project configuration:
    astro.config.mjs
    import { defineConfig } from 'astro/config';
    import { viewportClientDirective } from '@astro-tools/client-directives/viewport';
    export default defineConfig({
    integrations: [viewportClientDirective()],
    });

With client:on directive

To integrate this directive with the client:on, configure the directive as follows:

astro.config.mjs
import { defineConfig } from 'astro/config';
import { onClientDirective } from '@astro-tools/client-directives/on';
export default defineConfig({
integrations: [
onClientDirective({
directives: [
{
name: 'viewport',
entrypoint: '@astro-tools/client-directives/viewport/directive',
},
],
}),
],
});

Use

Add the directive as attribute of the component to hydrate when visible:

<MyComponent client:viewport />

This directive is similar to the Astro client:visible directive, but it allows integration with the client:on directive.

---
import Square from '@/libs/examples/Square.svelte';
interface Props {
id: string;
}
const { id } = Astro.props;
---
<Square {id} text="Click me!" client:viewport />
Preview Static