--- title: Serialize Portable Text to Svelte description: Render Portable Text in Svelte 5 and SvelteKit using @portabletext/svelte tags: [portable-text, svelte, sveltekit, serialization, rendering] --- # Serialize Portable Text to Svelte Use `@portabletext/svelte` (requires Svelte 5+) to render PT in Svelte/SvelteKit. ```bash npm install @portabletext/svelte ``` ## Basic Usage ```svelte ``` ## Custom Components Svelte components receive a `portableText` prop with `value`, `global`, and `indexInParent`. Child content is passed via Svelte snippets. ### Block Styles ```svelte {#if value.style === 'h1'}

{@render children()}

{:else if value.style === 'h2'}

{@render children()}

{:else}

{@render children()}

{/if} ``` ### Custom Types ```svelte
{value.alt {#if value.caption}
{value.caption}
{/if}
``` ### Mark Components (Annotations) ```svelte {@render children()} ``` ## Assembling Components ```svelte ``` ## Passing Context Pass external data to all components via `context`: ```svelte ``` Access in components via `portableText.global.context`. ## Plain Text Extraction ```js import {toPlainText} from '@portabletext/svelte' const text = toPlainText(blocks) ``` ## Reference - [@portabletext/svelte](https://github.com/portabletext/svelte-portabletext) - [Sanity + SvelteKit guide](https://www.sanity.io/guides/sanity-sveltekit)