diff --git a/.claude/rules/svelte-components.md b/.claude/rules/svelte-components.md index bc5b6c3e0..ad3bb9fb2 100644 --- a/.claude/rules/svelte-components.md +++ b/.claude/rules/svelte-components.md @@ -57,6 +57,8 @@ Use `$props()`, `$state()`, `$derived()`, `$effect()` in all components: - **Component**: independent logic, >30 lines, multi-file reuse - Define snippets at **top level** (outside tags) +**Context trap:** Snippets capture context at definition site, not render site. Never define a snippet outside a context provider (e.g. ``) and `{@render}` it inside — `TabItem` calls `getContext` on init and throws during HMR when `` is not in its ancestor chain. Place children directly inside the provider. + ## Async/Abort Handling When user can trigger same action multiple times, use `AbortController`: diff --git a/src/routes/problems/+page.svelte b/src/routes/problems/+page.svelte index 504e6f13d..ca943f540 100644 --- a/src/routes/problems/+page.svelte +++ b/src/routes/problems/+page.svelte @@ -1,6 +1,4 @@