Skip to content

feat: warn on unread validation issues#15653

Merged
teemingc merged 5 commits into
mainfrom
warn-on-unread-issues
May 7, 2026
Merged

feat: warn on unread validation issues#15653
teemingc merged 5 commits into
mainfrom
warn-on-unread-issues

Conversation

@Rich-Harris

Copy link
Copy Markdown
Member

Little quality of life improvement: if you neglect to handle validation issues, SvelteKit will warn at you in dev. If you have a form like this...

export const signup = form(
	v.object({
		user: v.object({
			name: v.literal('Dan', "If your name's not Dan, you're not coming in")
		}),
		password: v.pipe(v.string(), v.minLength(8, 'Password must have at least 8 characters'))
	}),
	(data) => {
		// ...
	}
);

...being used like this...

<form {...signup}>
	<input {...signup.fields.user.name.as('text')} />
	<input {...signup.fields.password.as('password')} />
	<button>sign up</button>
</form>

...then if you don't handle the issues you'll see this:

image

I didn't add a test because testing console logs is annoying and our test suite is already too slow and bloated — adding another one just for this felt like overkill.


Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests

  • Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

  • If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

Edits

  • Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.

@changeset-bot

changeset-bot Bot commented Apr 5, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2de2be8

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@sveltejs/kit Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@svelte-docs-bot

Copy link
Copy Markdown

@teemingc teemingc added the forms Stuff relating to forms and form actions label Apr 6, 2026
@Rich-Harris Rich-Harris mentioned this pull request Apr 8, 2026
Comment thread packages/kit/src/runtime/client/remote-functions/form.svelte.js
Comment thread packages/kit/src/runtime/client/remote-functions/form.svelte.js Outdated
Comment thread .changeset/slow-clocks-brush.md Outdated
Rich-Harris and others added 2 commits May 7, 2026 09:49
Co-authored-by: Tee Ming <chewteeming01@gmail.com>
Co-authored-by: Tee Ming <chewteeming01@gmail.com>
@teemingc

teemingc commented May 7, 2026

Copy link
Copy Markdown
Member

/autofix

@teemingc teemingc merged commit a45e720 into main May 7, 2026
6 checks passed
@teemingc teemingc deleted the warn-on-unread-issues branch May 7, 2026 15:35
@github-actions github-actions Bot mentioned this pull request May 7, 2026
Rich-Harris pushed a commit that referenced this pull request May 14, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @sveltejs/kit@2.60.0

### Minor Changes

- feat: allow 'submit' and 'hidden' form fields to accept numbers and
booleans ([#15802](#15802))


- feat: warn on unread `form` remote function validation issues
([#15653](#15653))

### Patch Changes

- fix: abort navigation after async rendering if obsolete
([#15811](#15811))


- fix: skip refreshing queries on full-page reload form submissions
([#15803](#15803))

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ollema added a commit to ollema/skiftesgatan.se that referenced this pull request May 26, 2026
## Summary
- Bumps deps (commit c861d37).
- Adapts the codebase to API changes that landed in SvelteKit 2.61:
- **RemoteForm enhance callback**
([kit#15657](sveltejs/kit#15657)): the callback
now receives the form instance directly. The old `form` field on the
callback arg is gone; the underlying `HTMLFormElement` is now `element`.
Migrated `konto/+page.svelte` (changeName, changeEmail, changePassword)
and `admin/[username]/+page.svelte` (updateUserName, updateUserEmail).
- **Calendar prop drop**: bits-ui's Calendar no longer accepts the
`slotCount` prop. Removed the unused derived value and prop pass in
`BookingPage.svelte`.

Other SvelteKit changes reviewed but no code changes needed here:
- [kit#15779](sveltejs/kit#15779) (isomorphic
query caching, `.run` removal): we don't call `.run` anywhere.
- [kit#15878](sveltejs/kit#15878) (LiveQuery
self-iterability): additive; existing `await live` pattern still works.
- [kit#15802](sveltejs/kit#15802) (hidden/submit
accept numbers/booleans): no `as('hidden'|'submit')` call sites today.
- [kit#15653](sveltejs/kit#15653) (warn on
unread validation issues): every form already renders
`fields.allIssues()`.

## Test plan
- [x] `pnpm check` — 0 errors / 0 warnings
- [x] `pnpm test` — 55 unit tests passed, 36 e2e tests passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

forms Stuff relating to forms and form actions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants