diff --git a/.changeset/react-types-optional-peer.md b/.changeset/react-types-optional-peer.md new file mode 100644 index 0000000000..67bd7f0a83 --- /dev/null +++ b/.changeset/react-types-optional-peer.md @@ -0,0 +1,9 @@ +--- +'@tanstack/react-form': patch +'@tanstack/react-form-devtools': patch +'@tanstack/react-form-nextjs': patch +'@tanstack/react-form-remix': patch +'@tanstack/react-form-start': patch +--- + +Declare `@types/react` as an optional peer dependency. The published type declarations import from `react`, so with install layouts where `@types/react` is not resolvable from the package's real path (such as pnpm's global virtual store), React types silently became `any`. Marking it optional keeps JavaScript consumers unaffected. diff --git a/packages/react-form-devtools/package.json b/packages/react-form-devtools/package.json index 7ef82d46f1..3e61c34a2a 100644 --- a/packages/react-form-devtools/package.json +++ b/packages/react-form-devtools/package.json @@ -64,6 +64,12 @@ "vite": "^7.2.2" }, "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } } diff --git a/packages/react-form-nextjs/package.json b/packages/react-form-nextjs/package.json index 6a0fa4ed20..86e6fe2754 100644 --- a/packages/react-form-nextjs/package.json +++ b/packages/react-form-nextjs/package.json @@ -58,6 +58,12 @@ "vite": "^7.2.2" }, "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } } diff --git a/packages/react-form-remix/package.json b/packages/react-form-remix/package.json index e4b87a3115..71d9494b55 100644 --- a/packages/react-form-remix/package.json +++ b/packages/react-form-remix/package.json @@ -58,6 +58,12 @@ "vite": "^7.2.2" }, "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } } diff --git a/packages/react-form-start/package.json b/packages/react-form-start/package.json index 3b3af1d4b5..62b426f624 100644 --- a/packages/react-form-start/package.json +++ b/packages/react-form-start/package.json @@ -63,11 +63,15 @@ }, "peerDependencies": { "@tanstack/react-start": "^1.168.27", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@tanstack/react-start": { "optional": true + }, + "@types/react": { + "optional": true } } } diff --git a/packages/react-form/package.json b/packages/react-form/package.json index 50ade6bfce..c227877fe9 100644 --- a/packages/react-form/package.json +++ b/packages/react-form/package.json @@ -67,11 +67,15 @@ "vitest-browser-react": "^2.3.0" }, "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@tanstack/react-start": { "optional": true + }, + "@types/react": { + "optional": true } } }