Basic Usage
Use getPlaceholder in a Server Component to generate the blur data.
// Server Component
const { base64 } = await getPlaceholder(
"https://images.unsplash.com/photo-1619441207978-3d326c46e2c9?q=80&w=2669&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
);
// Render
<Image
src="https://images.unsplash.com/photo-1619441207978-3d326c46e2c9?q=80&w=2669&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
placeholder="blur"
blurDataURL={base64}
alt="Demo"
/>Remote Images
The library works seamlessly with remote images. Just pass the URL.
import { getPlaceholder } from 'next-image-placeholder'
const imageUrl = 'https://images.unsplash.com/photo-123/image.jpg'
const { base64, color } = await getPlaceholder(imageUrl)Client Components
To use placeholders in Client Components, wrap the generation logic in a Server Action.
// 1. Create Server Action (app/actions.ts)
'use server'
import { getPlaceholder } from 'next-image-placeholder'
export async function getPlaceholderAction(imageUrl: string) {
return getPlaceholder(imageUrl)
}
// 2. Use the component (Recommended)
'use client'
import { PlaceholderImage } from 'next-image-placeholder/react'
import { getPlaceholderAction } from './actions'
export function Gallery({ src }: { src: string }) {
return (
<PlaceholderImage
src={src}
action={getPlaceholderAction}
width={400}
height={300}
alt="Gallery Image"
className="rounded-lg"
/>
)
}