v2.0.0
Migration guide: https://superforms.rocks/migration-v2
More detailed list of what's new: https://superforms.rocks/whats-new-v2
Removed
superForm.fields
was a rarely used and lesser version offormFieldProxy
, switch to that instead.- Removed
fields
options when setting tainted status. - Remvoed
message
parameter inonError
event, use$message
directly instead.
Changed
- Adapters required for validation! Import from
sveltekit-superforms/adapters
and usesuperValidate(zod(schema))
instead ofsuperValidate(schema)
. If type parameters are used, it must now be wrapped withInfer
for schemas. - Default
superForm
options now follow SvelteKit more closely:resetForm: true
andtaintedMessage: false
are default now. Adddefine: { SUPERFORMS_LEGACY: true }
invite.config.ts
to keep the old behavior. superValidateSync
is renamed todefaults
. It returns default values for the schema, and does no validation anymore. Use+page.ts
if initial validation is required, as described on the SPA page.arrayProxy
:fieldErrors
renamed tovalueErrors
.- Enums must have an explicit default value in the schema.
- Numeric enums cannot be parsed with their string values anymore.
- Superform validator functions, previously just an object with functions, requires the
superformClient
adapter. The input for the validator functions can now beundefined
. - If
superValidate
is called with just the schema, the default values aren't validated (i.e. no side-effects for default values) unlesserrors
is set totrue
. - Properties with default values don't have
required
in their constraints anymore. - Form id cannot be
undefined
anymore, must bestring
. (Set automatically by default now). flashMessage.onError.message
option insuperForm
renamed toflashMessage.onError.flashMessage
.constraints
are now optional in theSuperValidated
type, and are returned only when loading data, not posting. This is only relevant if you modify constraints before callingsuperForm
.- Removed the
defaultValidators
option,'clear'
can now be set directly onvalidators
instead. - Removed the
emptyIfZero
setting fromnumberProxy
andintProxy
. validate()
called with no arguments is renamed tovalidateForm()
and can take two extra options,update
andschema
.
Added
- Support for unions in schemas. A union must have an explicit default value, and multi-type unions can only be used with
dataType: 'json'
set. - Added
superForm.isTainted(path?)
andsuperForm.isTainted($tainted)
for better tainted fields check. - File upload support! Use
withFiles
when returning in form actions:return withFiles({ form })
. - SuperDebug now displays
File
andFileList
. - All proxies can now take the whole
superForm
object (previously only theform
store was accepted), with an extrataint
option to prevent tainting. taintedMessage
can now be an async function resolving totrue
if navigation should be allowed, despite the form being tainted.- Added an
onChange
event tosuperForm
, that returns a list of modified fields whenever$form
is updated. - Added
'zero'
to the empty option ofnumberProxy
andintProxy
. Also addedinitiallyEmptyIfZero
option, to show the placeholder for numeric inputs, which would otherwise display0
.