Capítulo 120 de 456
loading.js cria um Suspense boundary automático ao redor de page.js e filhos, mostrando um estado de loading instantâneo (prefetched) enquanto o conteúdo real do segmento carrega no servidor.
loading.js não aceitam props.'use client'.loading.js envolve not-found.js, page.js e layout.js aninhados abaixo dele, mas NÃO envolve layout.js, template.js ou error.js do mesmo segmento.layout.js do mesmo segmento acessa cookies()/headers()/fetch uncached, loading.js não mostra fallback para isso (ver caveat em layout.js).notFound()/redirect() dentro do streamed content não mudam o status HTTP já enviado; 404 real usa <meta name="robots" content="noindex"> na página streamada. Para status 404 de verdade (compliance/analytics), cheque a existência do recurso em proxy antes do body começar a ser streamado.export default function Loading() {
return <LoadingSkeleton />
}
loading.js básico; automaticamente envolve page.js do mesmo diretório num <Suspense>.import { Suspense } from 'react'
import { PostFeed, Weather } from './Components'
export default function Posts() {
return (
<section>
<Suspense fallback={<p>Loading feed...</p>}>
<PostFeed />
</Suspense>
<Suspense fallback={<p>Loading weather...</p>}>
<Weather />
</Suspense>
</section>
)
}
loading.js do segmento inteiro.| Deployment Option | Supported |
|---|---|
| Node.js server | Yes |
| Docker container | Yes |
| Static export | No |
| Adapters | Platform-specific |
loading.js cobrir dado runtime do layout.js: não cobre; sem Cache Components a navegação bloqueia até o layout terminar, com Cache Components é erro de build a menos que você envolva o acesso em <Suspense> próprio no layout.noindex (automático) ou valide antes do stream em proxy se precisa de 404 real.loading.js = Suspense automático por segmento; Suspense manual dentro da página = granularidade fina.notFound() precisa vir antes desses pontos para ainda poder mudar o status code.generateMetadata já resolvido no <head> inicial; outros usam streaming metadata detectado por user agent.loading.js.