sveltejs/kit · warning

Updates can only be sent once per form submission. Ignoring

Error message

Updates can only be sent once per form submission. Ignoring additional updates.

What it means

Remote form submissions return a promise with an `.updates(...)` method for sending incremental updates during submission. The runtime warns and ignores extra calls if `.updates()` is invoked more than once per single form submission, mirroring the command-function restriction. The promise itself is still returned and the first update stands.

Source

Thrown at packages/kit/src/runtime/client/remote-functions/form.svelte.js:311

						} finally {
							overrides?.forEach((fn) => fn());

							void tick().then(() => {
								if (entry) {
									entry.count--;
									if (entry.count === 0) {
										instances.delete(key);
									}
								}
							});
						}
					})()
				);

			let updates_called = false;
			promise.updates = (...args) => {
				if (updates_called) {
					console.warn(
						'Updates can only be sent once per form submission. Ignoring additional updates.'
					);
					return promise;
				}
				updates_called = true;

				try {
					({ refreshes, overrides } = categorize_updates(args));
				} catch (error) {
					updates_error = /** @type {Error} */ (error);
				}

				return promise;
			};

			return promise;
		}

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Call `.updates(...)` once per submission, combining all data into one payload
  2. Split long-running work into separate commands if multiple update stages are required
  3. Audit submit/enhance callbacks so only one code path calls `.updates`

Example fix

// before
const p = myForm.submit();
p.updates({ stage: 'validating' });
p.updates({ stage: 'saving' }); // ignored + warning
// after
const p = myForm.submit();
p.updates({ stages: ['validating', 'saving'] });
Defensive patterns

Strategy: validation

Validate before calling

const sendUpdate = (p, data) => { if (p.__updateSent) throw new Error('updates already sent'); p.__updateSent = true; p.updates(data); };

Prevention

When it happens

Trigger: Calling `promise.updates(...)` more than once on the promise produced by one form submission (e.g. from `callback`, the enhance callback instance, or the submission path calling it twice).

Common situations: Sending progress updates at multiple stages of a long form action; duplicated calls after refactoring submit handlers; framework code paths both invoking updates for the same submission.

Related errors


AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02). Data as JSON: /api/errors/0c8edefa531a2c11. Report an issue: GitHub.