From c6ad266ec85bdecc00cc54db95c658bdf8458c17 Mon Sep 17 00:00:00 2001 From: Nic Polumeyv Date: Thu, 23 Jul 2026 15:04:52 -0400 Subject: [PATCH] perf: use a Set to check element ids when validating fragment links --- .changeset/spotty-pandas-brake.md | 5 +++++ packages/kit/src/core/postbuild/prerender.js | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/spotty-pandas-brake.md diff --git a/.changeset/spotty-pandas-brake.md b/.changeset/spotty-pandas-brake.md new file mode 100644 index 000000000000..ce4c21736855 --- /dev/null +++ b/.changeset/spotty-pandas-brake.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +perf: use a `Set` to check element ids when validating fragment links during prerendering diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 491702c376af..f496a9f72f8d 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -265,7 +265,7 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env, vit /** @type {Map>} */ const expected_hashlinks = new Map(); - /** @type {Map} */ + /** @type {Map>} */ const actual_hashlinks = new Map(); /** @@ -394,7 +394,7 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env, vit handle_invalid_url({ href, referrer: decoded }); } - actual_hashlinks.set(decoded, ids); + actual_hashlinks.set(decoded, new Set(ids)); /** @param {string} href */ const removePrerenderOrigin = (href) => { @@ -646,7 +646,7 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env, vit // ignore fragment links to pages that were not prerendered if (!hashlinks) continue; - if (!hashlinks.includes(id) && !SPECIAL_HASHLINKS.has(id)) { + if (!hashlinks.has(id) && !SPECIAL_HASHLINKS.has(id)) { handle_missing_id({ id, path, referrers: Array.from(referrers) }); } }