This episode traces the history of Svelte from its 2016 compiler beginnings to SvelteKit as a full-stack meta-framework, the problems it solves, and a comparison with vanilla Svelte and other frameworks like Next.js or Nuxt.

Before understanding how to use SvelteKit, it's important to know where it came from and what problems it solves. Episode 1 places SvelteKit on the historical map: from the birth of Svelte as a compiler, its evolution into a meta-framework, to its position in the JavaScript framework ecosystem.
By understanding the background, you won't just memorize APIs — you'll also know when to choose SvelteKit over the alternatives. Good architectural decisions usually come from understanding history and philosophy, not just following trends.
This episode also touches on the design philosophy that remains consistent to this day: great developer experience without sacrificing end-user performance. You'll see how every architectural decision in SvelteKit is rooted in those two principles.
Svelte was created by Rich Harris in 2016 as a response to virtual DOM fatigue. Its core idea is radical: do the heavy lifting at build time, not while the app runs in the browser. Code inside .svelte files is compiled into plain imperative JavaScript.
<script>
let nama = $state("Svelte");
</script>
<h1>Halo, {nama}!</h1>The result: small bundles, no framework runtime on the client, and DOM updates that directly target the elements that change. This is the seed of the philosophy that later carried over to SvelteKit.
This compile-time approach also means Svelte doesn't ship a runtime that gets downloaded once and then executed in the browser. Most of the work happens on the developer's machine instead, so the final app is leaner and more power-efficient on low-end devices.
After Svelte became popular, Rich Harris built Sapper in 2017 as an experiment for a meta-framework: routing, SSR, and preloading. That experience was then rewritten as SvelteKit, which officially entered beta in 2021, reached stable 1.0 in December 2022, and continued to SvelteKit 2 in September 2023. Each jump improved the APIs and aligned more closely with Vite.
Version 2 brought smaller changes compared to the jump from Sapper, but it reinforced the direction: a focus on stability, tight Vite integration, and full support for Svelte 5 runes as the new reactivity model.
npm view @sveltejs/kit versionThe command npm view @sveltejs/kit version shows the latest stable SvelteKit version in the npm registry. For context, all episodes in this series are written against SvelteKit 2 with Svelte 5.
Vanilla Svelte only provides UI. For real applications you still need routing, data fetching on the server, and a way to deploy the result. SvelteKit packages all of that into one consistent package:
src/routes directory.Before SvelteKit, choosing a rendering mode felt like a one-way commitment. SvelteKit makes it per-route: a page can be prerendered as static HTML, dynamically SSR'd, or streamed, just by changing a single line of configuration.
export const prerender = true;The line export const prerender = true in +page.js tells SvelteKit that this page may be generated as static HTML at build time.
Many frameworks force a confusing folder structure and abstractions. SvelteKit chooses minimal conventions: a src/routes folder for pages, src/lib for shared code, and a single svelte.config.js file. Server and client code coexist clearly without using many abstraction folders.
This structure makes SvelteKit approachable for beginners while remaining strong enough for large projects. Fewer folders mean less to memorize, and clear conventions mean fewer team debates.
Vanilla Svelte is a UI framework. You still have to assemble routing, data fetching, and SSR yourself. SvelteKit is the layer on top that provides the server, routing, and build pipeline. The rule of thumb: use Svelte for components and widgets; use SvelteKit for complete web applications. This distinction matters because many tutorials mix the two, even though they solve problems at different layers.
Compared to Next.js or Nuxt, SvelteKit wins on bundle size and a reactivity model that runs at compile time. Its downside is a smaller component and plugin ecosystem than React's. Choosing a framework usually depends on your team's needs, your team's comfort, and the community size.
The key comparison isn't who is fastest in a benchmark, but who fits best with how your team works. A good framework makes a team productive in the first week, not just on paper.
Info
No framework is perfect. The goal of this series isn't to prove SvelteKit is the best, but to equip you with skills you can genuinely use in production.
SvelteKit fits best for applications that need high performance on the client, SSR for SEO, and a fast development flow. Blogs, internal dashboards, online stores, and small-to-medium full-stack applications are great examples. For applications where JavaScript must be minimized — like landing pages with limited interaction or apps accessed over slow networks — SvelteKit's small bundle advantage is very noticeable.
If your team is already very strong in React and needs the vast library ecosystem, or if your application depends on very specific Vite plugins, reconsider. Conversely, projects that value small bundles and readable code will benefit a lot.
Apply the same criteria when evaluating new SvelteKit releases: does this update solve a real problem for your team? Answering that question honestly keeps your codebase healthy in the long run.
Key takeaways:
In the next episode we'll discuss core concepts and main architecture — how things work under the hood: filesystem routing, load functions, server routes, the build process with Vite and adapters, project structure, nested layouts, server load versus client load, plus the role of hooks and runtime configuration.