Get Senior Engineers Straight To Your Inbox

Slashdev Engineers

Every month we send out our top new engineers in our network who are looking for work, be the first to get informed when top engineers become available

Slashdev Cofounders

At Slashdev, we connect top-tier software engineers with innovative companies. Our network includes the most talented developers worldwide, carefully vetted to ensure exceptional quality and reliability.

Top Software Developer 2026 - Clutch Ranking

Scaling a Next.js Site to 10K+ Daily Users/

Patrich

Patrich

Patrich is a senior software engineer with 15+ years of software engineering and systems engineering experience.

0 Min Read

Scaling a Next.js Site to 10K+ Daily Users

Scaling a Next.js Site to 10K+ Daily Users

Here’s a pragmatic case study: how we took a greenfield Next.js marketing-to-product site from zero to 10K+ daily users in six weeks, without hiring an SRE team or racking up pager fatigue. The stack choice was boring on purpose, and the process leaned on Product discovery and MVP scoping, disciplined automation, and Claude Code workflow integration to keep iteration tight.

Week 0-1: Scope like a ruthless PM

We started with a one-sentence value thesis, then mapped pages and user intents to measurable outcomes. Three KPIs: time-to-first-contentful-interaction under 2s globally, visitor-to-signup rate above 4%, and <200 ms P95 API reads. Anything that didn't move those needles was backlog. This is where Product discovery and MVP scoping mattered: we killed personalization, deferred payments, and kept one hero CTA.

Architecture that refuses to be clever

Hosting on Vercel, Next.js 14 app router, Server Components, and Incremental Static Regeneration for 95% of routes. Dynamic bits-auth, lead capture, and dashboard-ran on serverless functions with edge caching. Data lived in PlanetScale (MySQL) via Prisma; anonymous analytics and feature flags ran through PostHog; session and computed fragments sat in Upstash Redis. Images went through Vercel’s optimizer.

Flat lay of a modern digital workspace with blockchain theme, featuring a smartphone and calendar.
Photo by Leeloo The First on Pexels
  • ISR: revalidate core pages every 60-300 seconds, stale-while-revalidate enabled.
  • API composition: one read-optimized endpoint per page; no waterfall calls on the client.
  • Edge Middleware: geo and A/B cohorting via signed cookies, zero origin hits.
  • Zero-cron: background refresh with Vercel cron + idempotent tasks in Redis.

Claude Code workflow integration sped up shipping

We wired Claude Code to our repo via a CLI loop: generate test-first scaffolds, propose diff, run pnpm test, and open a PR with context-linked traces. The rule: humans own interfaces and acceptance criteria; Claude proposes implementation and test vectors. Average PR time dropped from 3.1 hours to 58 minutes, and we kept a clean commit history with auto-squash.

Gigster managed teams vs in-house cadence

On another track, we benchmarked against Gigster managed teams for a parallel feature. Their strength was predictable throughput and clear estimates; our in-house+AI loop beat them on cycle time for small slices but lost on cross-discipline orchestration. The hybrid lesson: use managed execution for big, cross-functional epics; keep rapid iteration on your core funnels.

Businesswoman conducts virtual meeting via laptop at her office desk.
Photo by Jack Sparrow on Pexels

Performance truths from the trenches

  • Measure user-facing, not lab-only. We shipped Real User Monitoring via OpenTelemetry + Sentry, sampled at 5%.
  • Eliminate hydration waste. RSC plus islands for interactive components cut JS payload by 38%.
  • Data proximity beats bigger instances. PlanetScale’s read replicas in three regions shaved 90 ms median.

Load test without melting your wallet

Before launch, we ran k6 scenarios mirroring 12K daily users spiking to 1K RPS for bursts. Adjustments: bump serverless concurrency limits, pre-warm lambdas with scheduled pings, and cap payload size at 50 KB via JSON schema validation. P95 stabilized at 170 ms; cold starts fell below 5% of requests.

Incident zero: the inevitable cache stampede

Day nine, a marketing blast invalidated the homepage cache. The fix was textbook but essential: distributed lock on recomputes via Redis, request coalescing at the edge, and jittered TTLs. We also moved the heaviest query to a materialized read model refreshed every two minutes. Result: from a 10-minute wobble to a 45-second blip next time.

Professionals analyze financial data on laptop during office meeting.
Photo by Yan Krukau on Pexels

SEO and marketing, without hurting ops

We generated sitemaps and RSS on build, used ISR to propagate changes quickly, and pinned canonical tags. Bot traffic can nuke quotas, so we rate-limited non-human agents at the edge and served prerendered HTML with zero client JS. Marketing campaigns got ephemeral landing pages built from a JSON schema, compiled to static at publish.

Team model and partners

The staffing recipe was one product lead, one full-stack, one designer, and a fractional data engineer. Claude Code handled scaffolding and refactors; humans made tradeoffs. When capacity spiked, we tapped slashdev.io for senior Next.js and data contractors; their remote engineers plugged into our CI within a day and kept the same quality bar.

The playbook you can copy

  • Scope: one KPI per surface; defer anything not on the path to value.
  • Ship: start static, add serverless where interaction proves lift.
  • Cache: edge-first; deterministic keys; coalesce misses.
  • Test: contract tests for APIs; visual diffs for marketing pages.
  • People: hybrid in-house, Claude, and targeted partners; consider Gigster managed teams for complex epics.

Six weeks later we crossed 10K users per day with infra spend under $400/month, zero weekend pages, and headroom for 5x traffic. The principle is simple: pick boring tech, automate the toil, and let scope discipline carry you. Everything else is noise.