← Back to articles

Why I chose SvelteKit to rebuild this portfolio

The problem with the old portfolio

I had a portfolio built in React that I never touched. Not because it was badly built, but because every small change — updating a detail, adding a project — meant wrestling with a build layer I no longer fully understood. I ended up avoiding it altogether, which is the worst way to end up with an outdated portfolio.

When I decided to rebuild it, the premise was simple: editing it should be as easy as writing a text file, and the final site should weigh as little as possible.

Why SvelteKit and not something else

I considered sticking with React out of habit, but most of what I needed — a mostly static site with a bit of interactivity here and there — didn't justify loading a framework built for large applications. SvelteKit solved the same problem with a lot less code in the way.

The best framework isn't the one you know best, it's the one that gets out of your way before you notice it's there.

With adapter-static the site compiles down to plain HTML and assets, no server to maintain. For a portfolio, that's exactly what you need.

Svelte 5 and runes

What convinced me the most was Svelte 5. The reactivity model with $state and $derived is explicit, without the implicit magic of earlier versions:

let theme = $state<"light" | "dark">("light");

function toggle() {
	theme = theme === "light" ? "dark" : "light";
	localStorage.setItem("theme", theme);
}

No extra dependencies to manage local state, no re-renders to guess at. It reads like regular JavaScript, because it basically is.

What I got out of rebuilding it from scratch

Three things stuck with me after this change[1]1. The full migration —from moving the content over to deciding on the reading typography— took a long weekend.:

  1. A lightweight site, with no extra JavaScript shipping to the browser for features I don't use.
  2. A real editing flow: markup and content live in the same place, no CMS in between.
  3. The itch to start writing again — which was, at bottom, the problem I wanted to solve in the first place.

This very article is the proof that the flow works: it's the first one I published here.


  1. The full migration —from moving the content over to deciding on the reading typography— took a long weekend.
esen