Capítulo 158 de 456
draftMode é uma função assíncrona para habilitar, desabilitar e checar o Draft Mode em Server Components, permitindo que editores pré-visualizem conteúdo não publicado de um CMS headless burlando o cache do Next.js.
await draftMode(): retorna objeto com isEnabled, enable() e disable().enable(): só pode ser chamado em Route Handler; define o cookie __prerender_bypass. Um novo valor de bypass é gerado a cada next build.disable(): remove o cookie; por padrão a sessão de Draft Mode termina ao fechar o navegador.use cache: isEnabled é legível dentro de um escopo de diretiva de cache; cookies()/headers() não são, mesmo com Draft Mode ativo.enable()/disable() dentro de escopo de cache: lança erro.import { draftMode } from 'next/headers'
export async function GET(request: Request) {
const draft = await draftMode()
draft.enable()
return new Response('Draft mode is enabled')
}
import { draftMode } from 'next/headers'
export default async function Page() {
const { isEnabled } = await draftMode()
return (
<main>
<p>Draft Mode is currently {isEnabled ? 'Enabled' : 'Disabled'}</p>
</main>
)
}
| Method | Description |
|---|---|
isEnabled | boolean indicando se Draft Mode está ativo |
enable() | habilita via cookie __prerender_bypass (em Route Handler) |
disable() | remove o cookie (em Route Handler) |
enable()/disable() dentro de escopo use cache: lança erro.prefetch={false}.use cache, garantindo dados sempre frescos para o editor.isEnabled é a única leitura de estado de Draft Mode permitida dentro de um escopo de cache directive.draftMode usa cookies internamente (__prerender_bypass) com as mesmas restrições de leitura/escrita.