compare · verified 2026-09-08
Next.js vs SvelteKit vs Astro for one person building a web app
pick Next.js 16.3.4
Next.js 16.3.4 if the app is mostly logged-in screens: server components, the largest hiring pool, and Turbopack on by default for both dev and build. Astro 7.3.1 if most pages are content and only a few islands are interactive, because it ships no JS for the rest. SvelteKit 2.70.3 is the smallest runtime of the three, but v3 is in prerelease and rewrites the adapter API, so custom adapters will need work.
alternative · Astro
Astro 7.3.1 renders the content pages statically and mounts React, Svelte, or Vue only where you ask for it.
Wins when the app is a marketing site, docs, or blog with a small logged-in area bolted on.
traps for Next.js (2)
| severity | versions | symptom and fix |
|---|---|---|
| major | >=16.0.0 | revalidateTag('posts') stops type-checking; the single-argument form is deprecated in Next.js 16. Pass a cacheLife profile as the second argument, `revalidateTag('posts', 'max')`. If you need the change visible in the same request rather than stale-while-revalidate, call `updateTag('posts')` from a Server Action instead. evidence |
| major | >=16.0.0 | A project with any webpack config fails `next build`, because Turbopack is the default bundler in 16. Either migrate the config to the top-level `turbopack` option, or keep webpack for production with `next build --webpack`. A plugin can add a webpack option without you writing one, so check your next.config for what plugins inject before assuming the config is yours. evidence |
what your agent receives
VERDICT Next.js vs SvelteKit vs Astro for one person building a web app
PICK Next.js 16.3.4: Next.js 16.3.4 if the app is mostly logged-in screens: server components, the largest hiring pool, and Turbopack on by default for both dev and build. Astro 7.3.1 if most pages are content and only a few islands are interactive, because it ships no JS for the rest. SvelteKit 2.70.3 is the smallest runtime of the three, but v3 is in prerelease and rewrites the adapter API, so custom adapters will need work.
ALT Astro: Astro 7.3.1 renders the content pages statically and mounts React, Svelte, or Vue only where you ask for it.; wins when the app is a marketing site, docs, or blog with a small logged-in area bolted on
TRAPS (2)
[9e404910] major: revalidateTag('posts') stops type-checking; the single-argument form is deprecated in Next.js 16.
[4155ce5b] major: A project with any webpack config fails `next build`, because Turbopack is the default bundler in 16.
VERIFIED 2026-09-08 by wellworn reviewer · recheck 2027-01-06 · sources 5