From 20a71038aff98a84639adb9bae05dca7fd024ef4 Mon Sep 17 00:00:00 2001 From: Julius Date: Tue, 11 Nov 2025 14:30:25 -0800 Subject: [PATCH 1/4] add any types --- packages/react-form/src/useForm.tsx | 36 ++++++++++++++++++++++++ packages/solid-form/src/createForm.tsx | 39 +++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/packages/react-form/src/useForm.tsx b/packages/react-form/src/useForm.tsx index 9206b824c..328a0901d 100644 --- a/packages/react-form/src/useForm.tsx +++ b/packages/react-form/src/useForm.tsx @@ -90,6 +90,24 @@ export interface ReactFormApi< }) => ReactNode } +/** + * {@link ReactFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnyReactFormApi = ReactFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + /** * An extended version of the `FormApi` class that includes React-specific functionalities from `ReactFormApi` */ @@ -135,6 +153,24 @@ export type ReactFormExtendedApi< TSubmitMeta > + /** + * {@link ReactFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. + */ + export type AnyReactFormExtendedApi = ReactFormExtendedApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any + > + function LocalSubscribe({ form, selector, diff --git a/packages/solid-form/src/createForm.tsx b/packages/solid-form/src/createForm.tsx index 383014c09..0a1aec57e 100644 --- a/packages/solid-form/src/createForm.tsx +++ b/packages/solid-form/src/createForm.tsx @@ -127,7 +127,25 @@ export interface SolidFormApi< } /** - * An extended version of the `FormApi` class that includes React-specific functionalities from `ReactFormApi` + * {@link SolidFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnySolidFormApi = SolidFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + +/** + * An extended version of the `FormApi` class that includes Solid-specific functionalities from `SolidFormApi` */ export type SolidFormExtendedApi< TFormData, @@ -170,6 +188,25 @@ export type SolidFormExtendedApi< TOnServer, TSubmitMeta > + + /** + * {@link SolidFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. + */ + export type AnySolidFormExtendedApi = SolidFormExtendedApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any + > + export function createForm< TParentData, TFormOnMount extends undefined | FormValidateOrFn, From 3fefcfbff555803a2f02607991ef812c813d383e Mon Sep 17 00:00:00 2001 From: Julius Date: Tue, 11 Nov 2025 14:33:58 -0800 Subject: [PATCH 2/4] svelte vue --- packages/svelte-form/src/createForm.svelte.ts | 18 ++++++++++++++++++ packages/svelte-form/src/index.ts | 2 +- packages/vue-form/src/useForm.tsx | 18 ++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/packages/svelte-form/src/createForm.svelte.ts b/packages/svelte-form/src/createForm.svelte.ts index 4de61273f..b179b1f98 100644 --- a/packages/svelte-form/src/createForm.svelte.ts +++ b/packages/svelte-form/src/createForm.svelte.ts @@ -179,6 +179,24 @@ export interface SvelteFormApi< WithoutFunction } +/** + * {@link SvelteFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnySvelteFormApi = SvelteFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + export function createForm< TParentData, TFormOnMount extends undefined | FormValidateOrFn, diff --git a/packages/svelte-form/src/index.ts b/packages/svelte-form/src/index.ts index a76cbb7f2..861ae38ae 100644 --- a/packages/svelte-form/src/index.ts +++ b/packages/svelte-form/src/index.ts @@ -2,7 +2,7 @@ export * from '@tanstack/form-core' export { useStore } from '@tanstack/svelte-store' -export { createForm, type SvelteFormApi } from './createForm.svelte.js' +export { createForm, type SvelteFormApi, type AnySvelteFormApi } from './createForm.svelte.js' export { default as Field, createField } from './Field.svelte' diff --git a/packages/vue-form/src/useForm.tsx b/packages/vue-form/src/useForm.tsx index e83e50015..3efdfc543 100644 --- a/packages/vue-form/src/useForm.tsx +++ b/packages/vue-form/src/useForm.tsx @@ -214,6 +214,24 @@ export interface VueFormApi< > } +/** + * {@link VueFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnyVueFormApi = VueFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + export function useForm< TParentData, TFormOnMount extends undefined | FormValidateOrFn, From fdf486f294654904cfc84e86389f3adb0850f7cc Mon Sep 17 00:00:00 2001 From: Julius Date: Tue, 11 Nov 2025 14:34:21 -0800 Subject: [PATCH 3/4] changeset --- .changeset/cool-jars-prove.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/cool-jars-prove.md diff --git a/.changeset/cool-jars-prove.md b/.changeset/cool-jars-prove.md new file mode 100644 index 000000000..84b348e7e --- /dev/null +++ b/.changeset/cool-jars-prove.md @@ -0,0 +1,8 @@ +--- +'@tanstack/svelte-form': patch +'@tanstack/react-form': patch +'@tanstack/solid-form': patch +'@tanstack/vue-form': patch +--- + +add AnyFormApi types for convenience in generic contexts From a5596f8fc690e5585e24b87a52a21c17b000bb0a Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 12 Nov 2025 05:56:04 +0000 Subject: [PATCH 4/4] ci: apply automated fixes and generate docs --- packages/react-form/src/useForm.tsx | 38 +++++++++++++------------- packages/solid-form/src/createForm.tsx | 34 +++++++++++------------ packages/svelte-form/src/index.ts | 6 +++- 3 files changed, 41 insertions(+), 37 deletions(-) diff --git a/packages/react-form/src/useForm.tsx b/packages/react-form/src/useForm.tsx index 328a0901d..e35d73ba7 100644 --- a/packages/react-form/src/useForm.tsx +++ b/packages/react-form/src/useForm.tsx @@ -91,8 +91,8 @@ export interface ReactFormApi< } /** - * {@link ReactFormApi} with all generics set to `any` for convenience use in generic contexts. - */ + * {@link ReactFormApi} with all generics set to `any` for convenience use in generic contexts. + */ export type AnyReactFormApi = ReactFormApi< any, any, @@ -153,23 +153,23 @@ export type ReactFormExtendedApi< TSubmitMeta > - /** - * {@link ReactFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. - */ - export type AnyReactFormExtendedApi = ReactFormExtendedApi< - any, - any, - any, - any, - any, - any, - any, - any, - any, - any, - any, - any - > +/** + * {@link ReactFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnyReactFormExtendedApi = ReactFormExtendedApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> function LocalSubscribe({ form, diff --git a/packages/solid-form/src/createForm.tsx b/packages/solid-form/src/createForm.tsx index 0a1aec57e..f339fd913 100644 --- a/packages/solid-form/src/createForm.tsx +++ b/packages/solid-form/src/createForm.tsx @@ -189,23 +189,23 @@ export type SolidFormExtendedApi< TSubmitMeta > - /** - * {@link SolidFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. - */ - export type AnySolidFormExtendedApi = SolidFormExtendedApi< - any, - any, - any, - any, - any, - any, - any, - any, - any, - any, - any, - any - > +/** + * {@link SolidFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnySolidFormExtendedApi = SolidFormExtendedApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> export function createForm< TParentData, diff --git a/packages/svelte-form/src/index.ts b/packages/svelte-form/src/index.ts index 861ae38ae..a94454673 100644 --- a/packages/svelte-form/src/index.ts +++ b/packages/svelte-form/src/index.ts @@ -2,7 +2,11 @@ export * from '@tanstack/form-core' export { useStore } from '@tanstack/svelte-store' -export { createForm, type SvelteFormApi, type AnySvelteFormApi } from './createForm.svelte.js' +export { + createForm, + type SvelteFormApi, + type AnySvelteFormApi, +} from './createForm.svelte.js' export { default as Field, createField } from './Field.svelte'