Look, I don't have perfect benchmarks. On my machine, the React checkout takes forever. Same functionality in SvelteKit loads way faster - maybe 800ms vs 3+ seconds on my shitty test phone, but honestly depends on how much crap you're loading.
After 6 years of React, I'm sick of explaining to clients why their checkout takes forever to load on mobile. SvelteKit compiles away the framework at build time, so your users download actual code instead of a virtual DOM library. Not gonna lie - migrating was a nightmare, but the performance difference is legit.
File System Routing That Actually Makes Sense
File-based routing that doesn't randomly shit itself like Next.js does. Drop a +page.svelte
file in src/routes/about/
and boom - you get /about
. No config hell, no route manifests that break mysteriously in production.

Each route directory gets these files:
+page.svelte
- Your component (duh)+page.server.js
- Server-side data loading that actually runs before the page renders+layout.svelte
- Headers, nav, shared crap+error.svelte
- Error pages that don't make users want to kill themselves
Here's the magic: your site works without JavaScript. No really. Forms submit, links work, users can actually use your app while the JavaScript downloads. Try pulling that off with a React app - you'll get a beautiful white screen while your 200KB bundle slowly tortures mobile users.
Performance That Actually Matters
Bundle sizes drop dramatically when you ditch React - your mileage depends on how much React ecosystem cruft you were dragging around. Mobile performance gets way better because there's no virtual DOM burning CPU cycles.
Lighthouse scores improve, but don't expect miracles if you're loading a ton of third-party analytics garbage. The real win is your app actually works on slow connections instead of showing a white screen while 200KB of React slowly downloads.
Build System That Doesn't Make You Want to Quit Programming
Vite development server that hot reloads without making you sacrifice goats to the JavaScript gods. No more "clear cache and restart everything" when your components mysteriously stop updating. No webpack config files that look like they were written by someone having a mental breakdown.
Hot reload on Windows is still dogshit. WSL2 helps but now you're debugging Linux paths on Windows drives. The TypeScript integration crashes when you have a few hundred components - language server just gives up and eats all your RAM.
I spent 4 hours debugging why builds suddenly took 8 minutes instead of the usual 30 seconds. Tried clearing cache, restarting Docker, updating dependencies, switching Node versions, chanting incantations to the JavaScript gods, sacrificing a rubber duck to Stack Overflow. Even tried the nuclear option of deleting node_modules and reinstalling everything from scratch - twice.
Turns out I had circular imports that Vite couldn't cache properly. Found the fix completely by accident when I was reorganizing files because I got frustrated and wanted to clean up the mess. Still have no fucking clue why it worked perfectly for the first 500 builds before deciding to shit itself.
Deployment That Actually Works
Pick an adapter, run the command, shit works. No 200-line Docker configs that break when you look at them sideways. No mysterious Vercel build failures that only happen in production. No hunting down the one fucking environment variable that makes everything explode.
- Vercel: Works flawlessly unless you get cute with dynamic imports
- Netlify: Solid choice, edge functions don't randomly break
- Node.js: Standard deployment that works everywhere that runs JavaScript
- Static hosting: Generates flat files you can throw on any CDN
The adapter system means you can switch hosting providers without rewriting your entire architecture. Try that with Next.js - oh wait, you can't, because you're locked into Vercel unless you want to deal with their half-assed export mode.
The 3AM Reality Check
Last month my SvelteKit app broke because I upgraded some dependency and everything went to hell. Spent 6 hours trying random shit - downgrading packages, clearing caches, restarting Docker, updating VS Code, downgrading VS Code, reading GitHub issues from 2019 that were supposedly "fixed", creating a fresh SvelteKit project to see if it was just me (it wasn't), posting desperate questions on Discord while slowly losing my sanity.
Turned out to be a TypeScript version mismatch between what SvelteKit expected and what I had installed. Still don't understand why it worked perfectly after I nuked node_modules for the third time - the first two attempts at rm -rf node_modules && npm install
did absolutely nothing, but the third time was apparently the charm.
VS Code craps out when I have more than a few hundred components. Language server runs out of memory and just dies. I'm running 32GB RAM and this thing still chokes. Found out on GitHub discussions that projects over 300k lines hit this constantly.
Had to bump Node memory limits to --max-old-space-size=8192
just to keep the extension alive. Still crashes randomly during big refactors. Sometimes I just switch to vim when VS Code decides to take a coffee break.
Our production app has a memory leak I can't track down - happens every few days, requires a restart. Works fine locally, of course. Sveltekit doesn't scale well on large projects, but nobody talks about this until you hit it.