From d47d4890b3f200b3aae4bbe91b08bfa55bd9f1f0 Mon Sep 17 00:00:00 2001
From: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Date: Fri, 2 Oct 2026 21:31:52 -0700
Subject: [PATCH 1/2] fix: widen @json-render/react peer to React 18 and 19
The react peer range is now ^18.0.0 || ^19.0.0, and the lockfile
specifier matches it while the resolved version stays 19.2.4. The
installation page states that range alongside zod ^4.0.0, and the docs
baseline hashes for that page are updated to the new content. A vitest
reads the package manifest and expects peerDependencies.react to be
^18.0.0 || ^19.0.0, with react-dom left out of peerDependencies.
Fixes #329
---
apps/web/content/docs/installation.mdx | 2 +-
apps/web/tests/fixtures/docs-baseline.json | 6 +++---
packages/react/package.json | 2 +-
packages/react/src/peer-dependency.test.ts | 19 +++++++++++++++++++
4 files changed, 24 insertions(+), 5 deletions(-)
create mode 100644 packages/react/src/peer-dependency.test.ts
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");
+ });
+});
From d7ef0e86d841074c41a7036e6d1e440e7d1fc986 Mon Sep 17 00:00:00 2001
From: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Date: Sat, 3 Oct 2026 10:12:58 -0700
Subject: [PATCH 2/2] fix: update pnpm lockfile for the widened react peer
range
The previous commit set the react peer range in packages/react/package.json
to ^18.0.0 || ^19.0.0 but left the lockfile specifier at ^19.2.3, so
pnpm install --frozen-lockfile failed in CI. Regenerated with pnpm 11.1.3;
the resolved version stays 19.2.4.
---
pnpm-lock.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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':