vercel/next.js · error

The uncompressed postponed state is ${uncompressedPostponedS

Error message

The uncompressed postponed state is ${uncompressedPostponedStateByteLength} bytes, which exceeds the configured experimental.maxPostponedStateSize limit of ${maxPostponedStateSizeBytes} bytes. Next.js currently compresses the Resume Data Cache before persisting the postponed state, but this compression will be removed in a future release. Increase experimental.maxPostponedStateSize to ensure this route can still be resumed after that change.

What it means

Error "The uncompressed postponed state is ${uncompressedPostponedStateByteLength} bytes, which exceeds the configured experimental.maxPostponedStateSize limit of ${maxPostponedStateSizeBytes} bytes. Next.js currently compresses the Resume Data Cache before persisting the postponed state, but this compression will be removed in a future release. Increase experimental.maxPostponedStateSize to ensure this route can still be resumed after that change." thrown in vercel/next.js.

Source

Thrown at packages/next/src/server/app-render/postponed-state.ts:98

  postponedString: string,
  resumeDataCache: PrerenderResumeDataCache | RenderResumeDataCache,
  isCacheComponentsEnabled: boolean,
  maxPostponedStateSizeBytes: number | undefined,
  disableResumeDataCacheCompression: boolean
): Promise<string> {
  const prefix = `${postponedString.length}:${postponedString}`
  let serializedResumeDataCache = await stringifyResumeDataCache(
    resumeDataCache,
    isCacheComponentsEnabled
  )

  if (!disableResumeDataCacheCompression) {
    if (maxPostponedStateSizeBytes !== undefined) {
      const uncompressedPostponedStateByteLength =
        Buffer.byteLength(prefix) + Buffer.byteLength(serializedResumeDataCache)

      if (uncompressedPostponedStateByteLength > maxPostponedStateSizeBytes) {
        console.warn(
          `The uncompressed postponed state is ${uncompressedPostponedStateByteLength} bytes, which exceeds the configured experimental.maxPostponedStateSize limit of ${maxPostponedStateSizeBytes} bytes. Next.js currently compresses the Resume Data Cache before persisting the postponed state, but this compression will be removed in a future release. Increase experimental.maxPostponedStateSize to ensure this route can still be resumed after that change.`
        )
      }
    }

    serializedResumeDataCache = deflateResumeDataCache(
      serializedResumeDataCache
    )
  }

  return prefix + serializedResumeDataCache
}

export async function getDynamicHTMLPostponedState(
  postponed: ReactPostponed,
  preludeState: DynamicHTMLPreludeState,
  fallbackRouteParams: OpaqueFallbackRouteParams | null,
  resumeDataCache: PrerenderResumeDataCache | RenderResumeDataCache,

View on GitHub (pinned to 0eb3775416)

Solutions

  1. Increase `experimental.maxPostponedStateSize` in next.config, or reduce the size of dynamic state on this route.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/next/src/server/app-render/postponed-state.ts:98 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of vercel/next.js@0eb3775416 (2026-08-19). Data as JSON: /api/errors/05dd2332a3a2fcbf. Report an issue: GitHub.