---
name: svelte-template-directives
# prettier-ignore
description: "Svelte template directives ({@attach}, {@html}, {@render}, {@const}, {@debug}). Use for DOM manipulation, third-party libs, tooltips, canvas, dynamic HTML. @attach replaces use: actions."
---
# Svelte Template Directives
## @attach (Svelte 5.29+)
**The reactive alternative to `use:` actions.** Re-runs when dependencies
change, passes through components via spread, supports cleanup functions.
```svelte
```
## Quick Reference
| Directive | Purpose | Reactive? |
| ---------------- | ------------------------------ | --------- |
| `{@attach}` | DOM manipulation, 3rd-party | Yes |
| `{@html}` | Render raw HTML strings | Yes |
| `{@render}` | Render snippets | Yes |
| `{@const}` | Local constants in blocks | N/A |
| `{@debug}` | Pause debugger on value change | N/A |
| `{#each (key)}` | Keyed iteration (always key!) | Yes |
| `` | Window event listeners | N/A |
## @attach vs use: Actions
| Feature | `use:` | `@attach` |
| --------------------- | ------- | ------------------- |
| Re-runs on arg change | No | **Yes** |
| Composable | Limited | **Fully** |
| Pass through props | Manual | **Auto via spread** |
| Convert legacy | N/A | `fromAction()` |
## Reference Files
- [attach-patterns.md](references/attach-patterns.md) - Real-world @attach
examples
- [other-directives.md](references/other-directives.md) - @html, @render,
@const, @debug
## Notes
- `@attach` requires Svelte 5.29+
- Use `fromAction` from `svelte/attachments` to convert legacy actions
- Attachments pass through wrapper components when you spread props
- Always use keyed each blocks — never use index as key
- Use ``/`` for global events, not `$effect`
- **Last verified:** 2026-03-12