Why Your Framework Determines Server Size
SSR frameworks like Next.js and Nuxt render every page on the server. That costs CPU per request. Static frameworks serve pre-built HTML files and need almost nothing.
The runtime footprint differs between frameworks. A small Next.js SSR app uses ~0.5-0.7 GB RAM idle. Nuxt SSR sits at ~0.3-0.5 GB. These are directional estimates from community reports, not benchmarks. Your actual numbers depend on app complexity and middleware.
For most small projects, the database and framework base footprint determine the VPS size. The traffic term only dominates above roughly 100,000 monthly visitors.
Next.js on a VPS: What to Watch For
Next.js was designed around Vercel. On your own VPS there are three common pitfalls:
Image optimization: next/image uses the native sharp library on your CPU. On small instances, image processing and requests share the same cores. In Docker builds, sharp is frequently missing.
ISR cache: By default Next.js stores the ISR cache locally. With multiple instances the caches diverge. The fix is a custom cacheHandler backed by Redis.
Cloudflare and ISR: ISR's stale-while-revalidate needs a CDN that supports the header. Cloudflare does not. The typical "VPS behind Cloudflare" setup does not get the intended ISR behavior.
More details in our blog article on Next.js vs Nuxt.
Nuxt as a Lighter Alternative
Nuxt's server engine Nitro produces a portable .output folder. One command starts the server:
node .output/server/index.mjs
No platform assumptions, no edge network required. Caching policy lives in routeRules in one place. A comparable small SSR app often fits one VPS tier below the equivalent Next.js setup with Nuxt.
