# Svelte 5 Snippets Reference ## Table of Contents - [Replacing Slots with Snippets](#replacing-slots-with-snippets) - [Rendering with @render](#rendering-with-render) --- ## Replacing Slots with Snippets Svelte 5 replaces `` with snippets - a more powerful and type-safe composition primitive. ### Default Content (children) **Svelte 4:** ```svelte
``` **Svelte 5:** ```svelte
{@render children?.()}
``` ### Named Slots to Named Snippets **Svelte 4:** ```svelte

Title

Content

Footer
``` **Svelte 5:** ```svelte
{@render header?.()}
{@render children?.()}
{#snippet header()}

Title

{/snippet}

Content

{#snippet footer()}Footer{/snippet}
``` ### Slot Props to Snippet Parameters **Svelte 4:** ```svelte {item.name} ``` **Svelte 5:** ```svelte {#snippet children(item)} {item.name} {/snippet} ``` ### Slot Fallback to Snippet Fallback ```svelte {#if children} {@render children()} {:else}

Default content

{/if} ``` ### Defining Snippets Within Components ```svelte {#snippet normalItem(item)}
  • {item.name}
  • {/snippet} {#snippet featuredItem(item)} {/snippet} ``` ### TypeScript Typing ```svelte ``` --- ## Rendering with @render Snippets must be rendered using `{@render}`. Optional snippets need null-safe calling. ### Basic Snippet Rendering ```svelte
    {@render children()}
    ``` ### Optional Snippets Always use optional chaining for snippets that might not be provided: ```svelte {@render children?.()} ``` ### Conditional Rendering ```svelte {#if header}
    {@render header()}
    {/if}
    {@render children?.()}
    {#if footer} {/if} ``` ### Rendering with Arguments ```svelte {#snippet itemTemplate(item, index)} {index + 1}. {item.name} {/snippet} ``` ### Rendering Multiple Times Snippets can be rendered multiple times: ```svelte ``` ### Rendering Dynamic Snippets ```svelte {@render currentView?.()} ``` ### TypeScript with @render ```svelte {@render header?.()} {@render children()} {@render row({ id: 1, name: 'Test' })} ``` ### Passing Snippets to Child Components ```svelte {#each items as item} {@render itemRenderer?.(item)} {/each} ```