{"record":{"id":"8997beb3fac54c35","repo":"vercel/next.js","slug":"decompressed-resume-data-cache-exceeded-maxdecom","errorCode":null,"errorMessage":"Decompressed resume data cache exceeded ${maxDecompressedSize} byte limit","messagePattern":"Decompressed resume data cache exceeded (.+?) byte limit","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/next/src/server/resume-data-cache/resume-data-cache.ts","lineNumber":335,"sourceCode":"      // ratios while preventing extreme decompression bombs.\n      // Default is 500MB (5x the default 100MB compressed limit).\n      const maxDecompressedSize = maxPostponedStateSizeBytes\n        ? maxPostponedStateSizeBytes * 5\n        : 500 * 1024 * 1024\n\n      try {\n        serializedResumeDataCache = inflateSync(\n          Buffer.from(serializedResumeDataCache, 'base64'),\n          {\n            maxOutputLength: maxDecompressedSize,\n          }\n        ).toString('utf-8')\n      } catch (err: unknown) {\n        if (\n          err instanceof RangeError &&\n          (err as NodeJS.ErrnoException).code === 'ERR_BUFFER_TOO_LARGE'\n        ) {\n          throw new Error(\n            `Decompressed resume data cache exceeded ${maxDecompressedSize} byte limit`\n          )\n        }\n        throw err\n      }\n    }\n\n    const json = JSON.parse(serializedResumeDataCache) as ResumeStoreSerialized\n\n    return {\n      mutable: false,\n      cache: parseUseCacheCacheStore(Object.entries(json.store.cache)),\n      fetch: new Map(Object.entries(json.store.fetch)),\n      encryptedBoundArgs: new Map(\n        Object.entries(json.store.encryptedBoundArgs)\n      ),\n      decryptedBoundArgs: new Map(),\n      imageResponses: new Map(),","sourceCodeStart":317,"sourceCodeEnd":353,"githubUrl":"https://github.com/vercel/next.js/blob/0eb377541648e63402a47b38fee00a8d0ce8f8f1/packages/next/src/server/resume-data-cache/resume-data-cache.ts#L317-L353","documentation":"Decompression-bomb guard when inflating the resume data cache from a postponed state: zlib's inflateSync hit the maxOutputLength ceiling (5x the configured compressed limit, 500MB by default) and raised a RangeError, which this site converts into an explicit size error instead of letting the machine OOM on a maliciously compressed payload.","triggerScenarios":"Decompressed resume data cache exceeds the configured byte limit.","commonSituations":"A malicious or corrupted compressed payload expands beyond the decompression limit.","solutions":["Reduce the size of cached resume data, or investigate unexpected growth in the resume data cache."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0eb377541648e63402a47b38fee00a8d0ce8f8f1","analyzedAt":"2026-08-19T02:10:13.922Z","contentChangedAt":"2026-08-19T02:10:13.922Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}