Capítulo 405 de 456
Configures a custom image loader function to delegate Image Optimization to a cloud provider instead of Next.js's built-in Image Optimization API.
'custom' to use a custom loader file instead of the built-in optimizer.({ src, width, quality }) => string, must return the final image URL.next/image instance.module.exports = {
images: {
loader: 'custom',
loaderFile: './my/image/loader.js',
},
}
export default function myImageLoader({ src, width, quality }) {
return `https://example.com/${src}?w=${width}&q=${quality || 75}`
}
Provedores com exemplo de loader pronto na doc: Akamai, AWS CloudFront, Cloudinary, Cloudflare, Contentful, Fastly, Gumlet, ImageEngine, Imgix, PixelBin, Sanity, Sirv, Supabase, Thumbor, ImageKit.io, Nitrogen AIO. Todos seguem o mesmo padrão: montar uma URL com width/quality mapeados para os query params específicos do provedor (ex: Cloudinary usa w_${width},q_${quality}, Supabase usa width/quality diretos).
loaderFile é resolvido relativo à raiz do projeto, não ao arquivo de config.loader prop no componente em vez de global config.