Svelte

fix: prevent #each array key from blowing up on updates

#17723

Closing issue

Pull request

Closed
R
RazinShafayet2007
Feb 17, 2026, 8:10 AM

Fixes

Keyed #each blocks accept any object, but array-literal keys (e.g. ([thing.group, thing.id])) could crash on updates because get_key was called multiple times per update, producing new array instances and causing internal Map lookups to miss. This change computes keys once per update, stores them in key_list, and reuses them throughout reconcile() (including the animation prepass), preventing the runtime error even though array-literal keys remain inherently unstable for identity across updates.


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
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.
  • If this PR changes code within packages/svelte/src, add a changeset (npx changeset).

Tests and linting

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

Info

Closed at Feb 17, 2026, 9:21 AM
Assignees None
Reviewers None
Labels None
Milestone None

Pro tip: You can prefix GitHub URLs of issues, PRs or discussions with svcl.dev/ to view them on this page! Also try it on a GitHub release ;)