Stack Innovations / Services / Web / Nuxt

Nuxt, with the render mode per route.

Most "isomorphic" Vue sites pick one rendering mode and pay for it everywhere. Nuxt 3 lets you decide route by route — SSG for marketing, ISR for content, SWR for catalogues, SSR for dashboards, Edge for auth. We tune routeRules, wire Nitro for the right runtime, auto-import the composables, and ship.

01 — In numbers

Five years shipping
composables at scale.

Each stat is an SSR-safe Nuxt composable. Hover any to see the useState declaration. Counters scrub with scroll — same primitives we use in production.

useProjectsShipped()
0+ Nuxt apps shipped
const projectsShipped = useState<number>(
  'projectsShipped',
  () => 36,
)
useRouteRulesAuthored()
0+ Route rules authored
const rulesAuthored = useState<number>(
  'rulesAuthored',
  () => 2800,
)
useNitroPresets()
0/9 Nitro presets shipped
const presets = useState<number>(
  'presets',
  () => 9,
)
useDefaultBuilds()
0 Default-config Nuxt builds
const defaultBuilds = useState<number>(
  'defaultBuilds',
  () => 0,
)
02 — What we build

A full-stack Nuxt practice.

Click the panel on the left — the active capability opens in the Nuxt DevTools-feeling editor. Each pane is a working pattern we've shipped.

Stack · Nuxt 3.x ~/stack/nuxt/nuxt.config.ts nitro · ready N S
routeRules SSG · SSR · ISR · SWR · Edge SHIPPED

Hybrid rendering, render mode per route.

uid: nitro.routeRules updated: 09:42 today by: stack-eng
summary · what this gets you

Same Nuxt project, every route picks the right runtime. Marketing pages prerender at build. Long-tail content uses ISR. Catalogues use SWR. Dashboards SSR. Auth at the edge. Configured in one routeRules block, deployed by Nitro to wherever the runtime fits.

items · what we customize
  • prerender: true · static at build
  • isr: 3600 · on-demand + revalidate
  • swr: 60 · stale-while-revalidate
  • ssr: true · fresh on every request
  • experimental.componentIslands
.nuxt/types composables · components · utils AUTO

Composables & auto-imports, ergonomics by default.

uid: imports.auto updated: yesterday by: stack-eng
summary

Nuxt's auto-imports turn every composables/ file, every components/ file, every utils/ helper, and every Nuxt + Vue + VueUse function into a globally available identifier with full TS types. We tune the import paths, type the composables to spec, and lint against direct manual imports.

items
  • composables/ · typed return shapes
  • components/ · lazy + island
  • VueUse · auto-imported
  • Custom auto-import directories
  • Type generation in .nuxt/
server/api routes · middleware · events DEPLOYED

Server routes & API, backend without a backend.

uid: server.routes updated: 2d ago by: stack-eng
summary

server/api/*.ts — one file is one endpoint. server/middleware/* for cross-cutting concerns. server/routes/* for non-API routes. Built on H3, served by Nitro, deployable to any runtime. We model auth, rate-limiting, validation (Zod), and response caching uniformly.

items
  • defineEventHandler · typed
  • Zod validation · readValidatedBody
  • Rate limit · defineRateLimit
  • Cached server functions
  • nitroApp.hooks · lifecycle
@nuxt/* image · content · pinia · ui CURATED

Modules ecosystem, 3,400+ vetted.

uid: modules.curated updated: 4d ago by: stack-eng
summary

The Nuxt modules ecosystem is its moat over hand-rolled Vue. We curate a tight stack — image, content, pinia, vueuse, i18n, sitemap, schema-org, security, fonts, OG images — vet them for maintenance, and write our own for what's missing. Modules pin themselves to compatible Nuxt versions.

items
  • @nuxt/image · AVIF/WebP/responsive
  • @nuxt/content · Markdown / YAML
  • @pinia/nuxt · SSR-safe state
  • @vueuse/nuxt · auto-imported
  • @nuxtjs/i18n · locale routing
composables useFetch · useState · useAsyncData SSR-SAFE

State & data fetching, SSR-safe by construction.

uid: data.fetching updated: 1w ago by: stack-eng
summary

useFetch for HTTP, useAsyncData for arbitrary async, useState for shared SSR-safe state, Pinia for app-wide stores. We pick the right primitive per use case and avoid the hydration footguns that bite naive Vue 3 + SSR setups.

items
  • useFetch · key-cached, hydrated
  • useAsyncData · lazy + transform
  • useState · SSR-safe ref
  • Pinia stores · persisted, typed
nitro.preset node · vercel · cloudflare · netlify · deno · bun UNIVERSAL

Universal deploy & Nitro, same code, any runtime.

uid: nitro.preset updated: 2w ago by: stack-eng
summary

Nitro is Nuxt's server engine. The same nuxt build output ships to Node, Vercel, Cloudflare Workers, Netlify, Deno Deploy, Bun, AWS Lambda — preset is a one-line config change. We pick the runtime per project (or per environment) and never get locked in.

items
  • nitro.preset: 'vercel-edge'
  • Per-env preset via NITRO_PRESET
  • Cloudflare KV / D1 bindings
  • Edge-region pinning
  • Cold start under 50ms on Workers
03 — routeRules → topology

Pick a render mode.
Topology updates.

This is what makes Nuxt 3 itself: every route picks its own render mode. Click a mode pill on each route — the deployment topology on the right rebuilds, build time and average TTFB recompute, and the JSON for routeRules updates live. anime.js spring on toggle, Mo.js burst on deploy.

deployment topology live
CDN · static 0
prerendered HTML · cached forever
    Edge · ISR / SWR 0
    cached at PoPs · revalidate in background
      Origin · SSR 0
      fresh per request · full server runtime
        build time 0s
        avg ttfb 0ms
        edge cache hit 0%
        nuxt.config.ts Δ 0
        
            
        04 — Why us

        Stack Innovations vs the typical Nuxt build.

        Same framework, two very different ways it ends up shipping. Eight criteria your team will actually feel — in plain English, with the receipts.

        1. 01

          Performance

          × Typical
          70/100
          Lighthouse, mobile

          Default config, ships ~400 KB of JavaScript. Mobile devices feel every byte of it.

          Stack Innovations
          100/100
          Lighthouse, mobile

          Lighthouse 100s as a starting line. CI fails the build on any regression.

        2. 02

          Render strategy

          × Typical
          1 mode
          picked for the whole site
          SSR SSG ISR SWR Edge

          One render mode for every page. Pay for it on the marketing pages too.

          Stack Innovations
          5 modes
          picked per route
          SSG ISR SWR SSR Edge

          Static for marketing, on-demand for content, server for dashboards, edge for auth.

        3. 03

          Caching

          × Typical
          ?
          "hopefully the CDN gets it"

          Editors guess at when stale content clears. Support tickets do the rest.

          Stack Innovations
          tagged
          per content type

          Cache rules tagged per content type, revalidated on publish, purged on demand.

        4. 04

          SEO

          × Typical
          0/4
          coverage at launch
          × Sitemap × JSON-LD × hreflang × OG images

          Bolted on as a follow-up engagement. The "we'll get to it" version of SEO.

          Stack Innovations
          4/4
          shipped at launch
          Sitemap JSON-LD hreflang OG images

          Sitemaps, structured data, hreflang, Open Graph images — live on day one.

        5. 05

          Deployment

          × Typical
          1 platform
          locked in by default
          Vercel Cloudflare Netlify Node Deno Bun

          Switching providers later means rewriting deploy pipelines and parts of the app.

          Stack Innovations
          6 runtimes
          portable by default
          Vercel Cloudflare Netlify Node Deno Bun

          Same code ships to any of them. Switching runtimes is a one-line config change.

        6. 06

          Migration

          × Typical
          ×
          "out of scope"
          Old CMS New site

          You move the content yourself. Links break, search rankings drop, editors hate you.

          Stack Innovations
          mapped
          redirects + SEO continuity
          WP / Sitecore / AEM Nuxt 3

          Source plugin, migration script, redirect map, dry-run, cutover. SEO holds.

        7. 07

          Editor handoff

          × Typical
          0/4
          onboarding artifacts
          × Walkthroughs × Role setup × Dry runs × In-app help

          "Good luck with the admin." Editors learn by trial and error in production.

          Stack Innovations
          4/4
          shipped with the site
          Loom walkthroughs Role setup Dry-run publishes In-context help

          Editors leave training feeling fluent. First publish goes through without a Slack ping.

        8. 08

          Care plan

          × Typical
          0 mo
          post-launch coverage
          launch silence

          Hand-off, then silence. Six months later you're two majors behind on Nuxt.

          Stack Innovations
          monthly cadence
          launch m+1 m+2

          Monthly version bumps, perf monitoring, real Slack channel. Features, not tickets.

        05 — Universal deployment

        One build,
        any runtime.

        Nitro is Nuxt's server engine. The same nuxt build output ships to six different runtimes — click any target to "redeploy". The runtime swaps, edge regions update, the cold-start metric changes. No code changes anywhere.

        nitro engine same code, any runtime
        runtime edge-runtime
        cold start ~30ms
        edge regions 119
        bundle size 2.4 MB
        $ NITRO_PRESET=vercel-edge nuxt build

          The Nitro engine compiles the same nuxt build source to runtime-native output. No platform-specific code in the app — the only difference between deployments is one environment variable.

          06 — How it ships

          Six weeks,
          route rules first.

          1. w 01

            Audit + render-mode mapping

            Inventory every route. Classify SSG / ISR / SWR / SSR / Edge per route. Lighthouse + TTFB baseline.

          2. w 02

            Nuxt scaffold

            Nuxt 3 + TypeScript, modules wired, routeRules drafted, design tokens, Pinia, VueUse.

          3. w 02–04

            Components + composables + server

            Pages, layouts, components, composables, server routes, validation (Zod), auth, content collections.

          4. w 04

            Performance + Nitro presets

            Image pipeline, prefetch tuning, JSON-LD, sitemap, OG images. Per-env Nitro preset, edge regions pinned.

          5. w 06

            Migration + launch

            Content migration, redirects mapped. nuxt build against the target preset, deploy, DNS cutover.

          6. Care plan

            Nuxt + module upgrades, routeRules tuning per analytics, perf monitoring, monthly review.

          Booking Q3 2026 · Avg engagement: 6 weeks · Reply within 24h