diff --git a/.changeset/fresh-crews-chew.md b/.changeset/fresh-crews-chew.md new file mode 100644 index 0000000000..e830e31e95 --- /dev/null +++ b/.changeset/fresh-crews-chew.md @@ -0,0 +1,5 @@ +--- +"@blitzjs/next": minor +--- + +Fix the DYNAMIC_SERVER_USAGE error for Next.js 13.3.1+ diff --git a/packages/blitz/src/cli/utils/codegen-tasks.ts b/packages/blitz/src/cli/utils/codegen-tasks.ts index 63c8a32945..3afaaf1673 100644 --- a/packages/blitz/src/cli/utils/codegen-tasks.ts +++ b/packages/blitz/src/cli/utils/codegen-tasks.ts @@ -16,6 +16,7 @@ export const codegenTasks = async () => { */ const nextDir = await resolveCwd("next") const nextClientIndex = join(nextDir, "../..", "client", "index.js") + console.log(nextClientIndex) const readFile = await fs.readFile(nextClientIndex) const packageJson = await getPackageJson() const version = packageJson.dependencies.next @@ -39,15 +40,24 @@ export const codegenTasks = async () => { ) await fs.writeFile(nextClientIndex, updatedFile) log.success("Next.js was successfully patched with a React Suspense fix") - } else if (nextVersion && semver.satisfies(nextVersion, ">=13.2")) { + } else if (nextVersion && semver.satisfies(nextVersion, "13.1 - 13.3.0")) { const updatedFile = readFile .toString() .replace( - /_onRecoverableError\.default/, + /_onRecoverableError\.default$/gm, `(err) => (err.toString().includes("DYNAMIC_SERVER_USAGE") || err.toString().includes("could not finish this Suspense boundary") || err.toString().includes("Minified React error #419")) ? null : _onRecoverableError.default(err)`, ) await fs.writeFile(nextClientIndex, updatedFile) log.success("Next.js was successfully patched with a React Suspense fix") + } else if (nextVersion && semver.satisfies(nextVersion, ">=13.3.1")) { + const updatedFile = readFile + .toString() + .replace( + /_onrecoverableerror\.default$/gm, + `(err) => (err.toString().includes("DYNAMIC_SERVER_USAGE") || err.toString().includes("could not finish this Suspense boundary") || err.toString().includes("Minified React error #419")) ? null : _onrecoverableerror.default(err)`, + ) + await fs.writeFile(nextClientIndex, updatedFile) + log.success("Next.js was successfully patched with a React Suspense fix") } } catch (err) { log.error(JSON.stringify(err, null, 2)) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6543e6e0a..3c0176c99d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -665,7 +665,7 @@ importers: "@vitejs/plugin-react": 1.3.0 delay: 5.0.0 eslint: 8.27.0 - eslint-config-next: 13.3.0_rmayb2veg2btbq6mbmnyivgasy + eslint-config-next: 13.3.4_rmayb2veg2btbq6mbmnyivgasy eslint-plugin-testing-library: 5.0.1_rmayb2veg2btbq6mbmnyivgasy jsdom: 19.0.0 typescript: 4.8.4 @@ -5325,10 +5325,10 @@ packages: glob: 7.1.7 dev: true - /@next/eslint-plugin-next/13.3.0: + /@next/eslint-plugin-next/13.3.4: resolution: { - integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==, + integrity: sha512-mvS+HafOPy31oJbAi920WJXMdjbyb4v5FAMr9PeGZfRIdEcsLkA3mU/ZvmwzovJgP3nAWw2e2yM8iIFW8VpvIA==, } dependencies: glob: 7.1.7 @@ -11331,10 +11331,10 @@ packages: - supports-color dev: true - /eslint-config-next/13.3.0_rmayb2veg2btbq6mbmnyivgasy: + /eslint-config-next/13.3.4_rmayb2veg2btbq6mbmnyivgasy: resolution: { - integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==, + integrity: sha512-TknEcP+EdTqLvJ2zMY1KnWqcx8ZHl1C2Tjjbq3qmtWcHRU5oxe1PAsz3vrKG3NOzonSaPcB2SpCSfYqcgj6nfA==, } peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -11343,7 +11343,7 @@ packages: typescript: optional: true dependencies: - "@next/eslint-plugin-next": 13.3.0 + "@next/eslint-plugin-next": 13.3.4 "@rushstack/eslint-patch": 1.1.3 "@typescript-eslint/parser": 5.43.0_rmayb2veg2btbq6mbmnyivgasy eslint: 8.27.0 @@ -14596,7 +14596,7 @@ packages: pretty-format: 29.2.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_cbe7ovvae6zqfnmtgctpgpys54 + ts-node: 10.9.1_typescript@4.8.4 transitivePeerDependencies: - supports-color @@ -20396,6 +20396,7 @@ packages: typescript: 4.8.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: false /ts-node/10.9.1_ieummqxttktzud32hpyrer46t4: resolution: @@ -20462,7 +20463,6 @@ packages: typescript: 4.8.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: false /tsconfig-paths/3.14.1: resolution: