From 9656e5d2018523d49ab27bdd5f8b5a49970b053c Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Wed, 8 Oct 2025 15:50:00 +0200 Subject: [PATCH] fix: prevent access of Svelte 5-only `untrack` function Fixes #14657 --- .changeset/thick-ideas-mate.md | 5 +++++ packages/kit/src/runtime/form-utils.svelte.js | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/thick-ideas-mate.md diff --git a/.changeset/thick-ideas-mate.md b/.changeset/thick-ideas-mate.md new file mode 100644 index 000000000000..6df85ce2abd5 --- /dev/null +++ b/.changeset/thick-ideas-mate.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: prevent access of Svelte 5-only `untrack` function diff --git a/packages/kit/src/runtime/form-utils.svelte.js b/packages/kit/src/runtime/form-utils.svelte.js index 1f7e90b3e53b..4d0ff75d7318 100644 --- a/packages/kit/src/runtime/form-utils.svelte.js +++ b/packages/kit/src/runtime/form-utils.svelte.js @@ -3,7 +3,9 @@ /** @import { StandardSchemaV1 } from '@standard-schema/spec' */ import { DEV } from 'esm-env'; -import { untrack } from 'svelte'; +import * as svelte from 'svelte'; +// Svelte 4 and under don't have `untrack` - you'll not be able to use remote functions with Svelte 4 but this will still be loaded +const untrack = svelte.untrack ?? ((value) => value()); /** * Sets a value in a nested object using a path string, not mutating the original object but returning a new object