Data Flow

+page.server.ts  load()  →  return { item }  →  +page.svelte  data.item
<script lang="ts">
  import type { PageProps } from "./$types";
  let { data }: PageProps = $props();   // typed by ./$types
</script>
  • ./$types is generated by SvelteKit. If it is missing, run pnpm exec svelte-kit sync and restart the TypeScript server.
  • Older SvelteKit: use PageData and { data }: { data: PageData }.
  • The item return but page.server.ts will be in the data now.

Request flow

  1. First visit: server runs load, renders +page.svelte to HTML, sends it.
  2. Browser hydrates it, so clicks and inputs work.
  3. Clicking a link: only the new page's data is fetched, and the page is drawn in the browser.