Use a unique key to help Svelte efficiently update the list:
Copy
{#each expression as name (key)}...{/each}
Always use keys when the list can be reordered, filtered, or items can be added/removed from the middle. This ensures correct DOM updates and preserves component state.
{#each items as item (item.id)} <li>{item.name} x {item.qty}</li>{/each}<!-- With index -->{#each items as item, i (item.id)} <li>{i + 1}: {item.name} x {item.qty}</li>{/each}
<script> let uniqueTags = $state(new Set(['svelte', 'javascript', 'web']));</script>{#each uniqueTags as tag (tag)} <span class="tag">{tag}</span>{/each}
Always use keys when items can be reordered or removed
Use unique, stable keys - prefer IDs over indexes
Avoid creating new objects in the template - they break key identity
Copy
<!-- Good: Stable key -->{#each items as item (item.id)} <Item data={item} />{/each}<!-- Bad: Index as key when list can change -->{#each items as item, i (i)} <Item data={item} />{/each}<!-- Bad: Creating new object -->{#each items as item ({ id: item.id })} <Item data={item} />{/each}