From cda078dfba73517ebe770f784b53289cca4c2c67 Mon Sep 17 00:00:00 2001 From: razinshafayet Date: Fri, 8 May 2026 21:19:50 +0600 Subject: [PATCH 1/4] feat: expose RemoteFormSubmitFunction type --- .changeset/calm-ravens-push.md | 5 +++++ packages/kit/src/exports/public.d.ts | 20 +++++++++++++------- packages/kit/test/types/remote.test.ts | 14 ++++++++++++++ packages/kit/types/index.d.ts | 22 ++++++++++++++-------- 4 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 .changeset/calm-ravens-push.md diff --git a/.changeset/calm-ravens-push.md b/.changeset/calm-ravens-push.md new file mode 100644 index 000000000000..1fb4da9e48da --- /dev/null +++ b/.changeset/calm-ravens-push.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +feat: expose `RemoteFormSubmitFunction` type diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 830017ca8825..44f3aacb382e 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -2136,6 +2136,18 @@ export interface ValidationError { issues: StandardSchemaV1.Issue[]; } +/** + * The callback passed to a remote form's `enhance` method. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation. + */ +export type RemoteFormSubmitFunction< + Input extends RemoteFormInput | void = RemoteFormInput | void, + Output = any +> = ( + form: Omit, 'enhance' | 'element'> & { + readonly element: HTMLFormElement; + } +) => MaybePromise; + /** * The type of a remote `form` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation. */ @@ -2152,13 +2164,7 @@ export type RemoteForm = { updates: (...updates: RemoteQueryUpdate[]) => Promise; }; /** Use the `enhance` method to influence what happens when the form is submitted. */ - enhance( - callback: ( - form: Omit, 'enhance' | 'element'> & { - readonly element: HTMLFormElement; - } - ) => MaybePromise - ): { + enhance(callback: RemoteFormSubmitFunction): { method: 'POST'; action: string; [attachment: symbol]: (node: HTMLFormElement) => void; diff --git a/packages/kit/test/types/remote.test.ts b/packages/kit/test/types/remote.test.ts index bddb847edd85..dda9786b784d 100644 --- a/packages/kit/test/types/remote.test.ts +++ b/packages/kit/test/types/remote.test.ts @@ -2,6 +2,7 @@ import { query, prerender, command, form, requested } from '$app/server'; import { StandardSchemaV1 } from '@standard-schema/spec'; import { RemoteForm, + RemoteFormSubmitFunction, RemoteFormFields, RemoteFormInput, RemoteLiveQueryFunction, @@ -350,6 +351,19 @@ function form_tests() { f.result?.success === true; + const submit: RemoteFormSubmitFunction<{ input: string }, { success: boolean }> = async ( + form + ) => { + const result: { success: boolean } | undefined = form.result; + result; + // @ts-expect-error + form.enhance(() => {}); + const x: boolean = await form.submit(); + x; + }; + + f.enhance(submit); + f.enhance(async (form) => { const x: boolean = await form.submit(); x; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index ccc55b76b3c6..21beae01a332 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2110,6 +2110,18 @@ declare module '@sveltejs/kit' { issues: StandardSchemaV1.Issue[]; } + /** + * The callback passed to a remote form's `enhance` method. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation. + */ + export type RemoteFormSubmitFunction< + Input extends RemoteFormInput | void = RemoteFormInput | void, + Output = any + > = ( + form: Omit, 'enhance' | 'element'> & { + readonly element: HTMLFormElement; + } + ) => MaybePromise; + /** * The type of a remote `form` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation. */ @@ -2126,13 +2138,7 @@ declare module '@sveltejs/kit' { updates: (...updates: RemoteQueryUpdate[]) => Promise; }; /** Use the `enhance` method to influence what happens when the form is submitted. */ - enhance( - callback: ( - form: Omit, 'enhance' | 'element'> & { - readonly element: HTMLFormElement; - } - ) => MaybePromise - ): { + enhance(callback: RemoteFormSubmitFunction): { method: 'POST'; action: string; [attachment: symbol]: (node: HTMLFormElement) => void; @@ -2934,7 +2940,7 @@ declare module '@sveltejs/kit' { class Redirect_1 { constructor(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, location: string); - status: 301 | 302 | 303 | 307 | 308 | 300 | 304 | 305 | 306; + status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308; location: string; } From 4855f5d541bfb7fb360f2243c4bc76753c32e4d8 Mon Sep 17 00:00:00 2001 From: razinshafayet Date: Fri, 8 May 2026 22:47:39 +0600 Subject: [PATCH 2/4] rerun ci From 8b958aa21b9bbe1a35a826db1d82cc7370b6367e Mon Sep 17 00:00:00 2001 From: razinshafayet Date: Tue, 12 May 2026 16:16:24 +0600 Subject: [PATCH 3/4] bump changeset --- .changeset/calm-ravens-push.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/calm-ravens-push.md b/.changeset/calm-ravens-push.md index 1fb4da9e48da..d76a31b13520 100644 --- a/.changeset/calm-ravens-push.md +++ b/.changeset/calm-ravens-push.md @@ -1,5 +1,5 @@ --- -'@sveltejs/kit': patch +'@sveltejs/kit': minor --- feat: expose `RemoteFormSubmitFunction` type From 52e7d15234c6ee93609a5dcb430339abfa5c1876 Mon Sep 17 00:00:00 2001 From: razinshafayet Date: Tue, 19 May 2026 10:49:24 +0600 Subject: [PATCH 4/4] update generated types --- packages/kit/types/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 21beae01a332..53f142da2ba8 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2940,7 +2940,7 @@ declare module '@sveltejs/kit' { class Redirect_1 { constructor(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, location: string); - status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308; + status: 301 | 302 | 303 | 307 | 308 | 300 | 304 | 305 | 306; location: string; }