diff --git a/apps/web/content/docs/installation.mdx b/apps/web/content/docs/installation.mdx index b7544426..76dbc381 100644 --- a/apps/web/content/docs/installation.mdx +++ b/apps/web/content/docs/installation.mdx @@ -8,7 +8,7 @@ Install the core package plus your renderer of choice. -Peer dependencies: `react ^19.0.0` and `zod ^4.0.0`. +Peer dependencies: `react ^18.0.0 || ^19.0.0` and `zod ^4.0.0`. diff --git a/apps/web/tests/fixtures/docs-baseline.json b/apps/web/tests/fixtures/docs-baseline.json index 40dc5ceb..9deb192d 100644 --- a/apps/web/tests/fixtures/docs-baseline.json +++ b/apps/web/tests/fixtures/docs-baseline.json @@ -3011,9 +3011,9 @@ "title": "Installation", "metadataTitle": "Installation | json-render", "prefix": "import { pageMetadata } from \"@/lib/page-metadata\"\nexport const metadata = pageMetadata(\"docs/installation\")\n\n# Installation\n", - "sourceSha256": "937bfb315b619c999082fac5253c2609db1e68d736ca0bf011c7eded9ec93593", - "bodySha256": "13b1b9d4c4f7de99ed2493358608eabb4565a956db8750f458efd437ffc6c8d1", - "markdownSha256": "08bbe2a46b41b4354feeb3538416a85f6d5cf9b5343d4dbf524e21ae8d56b46f", + "sourceSha256": "11a2c0f2d5bd6230d93bd2885bf96014fb9ee413a08020a4c07712cd48aad989", + "bodySha256": "40e3d4a57fb3a312b4eb8de430431ba20db6a66f7db13a26cde86f5f692dd540", + "markdownSha256": "35645fa10c555ad42d5c13b0d30b1f969fa3e807b131c1c88512837d34dc508e", "headings": [ { "title": "For React UI", diff --git a/packages/react/package.json b/packages/react/package.json index a1bb0860..3035bc80 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -61,6 +61,6 @@ "zod": "^4.3.6" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^18.0.0 || ^19.0.0" } } diff --git a/packages/react/src/peer-dependency.test.ts b/packages/react/src/peer-dependency.test.ts new file mode 100644 index 00000000..c4f0606b --- /dev/null +++ b/packages/react/src/peer-dependency.test.ts @@ -0,0 +1,19 @@ +// @ts-expect-error This package does not depend on @types/node. +import { readFileSync } from "node:fs"; +// @ts-expect-error This package does not depend on @types/node. +import { join } from "node:path"; +import { describe, expect, it } from "vitest"; + +const packageJson = JSON.parse( + // @ts-expect-error Vitest provides __dirname when running this file. + readFileSync(join(__dirname, "../package.json"), "utf8"), +) as { + peerDependencies: Record; +}; + +describe("@json-render/react peerDependencies", () => { + it("accepts React 18 and React 19", () => { + expect(packageJson.peerDependencies.react).toBe("^18.0.0 || ^19.0.0"); + expect(packageJson.peerDependencies).not.toHaveProperty("react-dom"); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 985ee564..9519a3b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2168,7 +2168,7 @@ importers: specifier: workspace:* version: link:../core react: - specifier: ^19.2.3 + specifier: ^18.0.0 || ^19.0.0 version: 19.2.4 devDependencies: '@internal/react-state':