Case study · Stack

How Vercel builds Vercel on its own tools

Vercel is a cloud platform for deploying web apps and the company behind Next.js. Its own site and dashboard run on Next.js and Turborepo, while the platform underneath mixes AWS Lambda, a Rust core, Go at the edge and a Kafka and ClickHouse data pipeline.
Copy this stackvercel.com Cloud platform for web apps · United States · founded 2015

Language

UI library

Full-stack framework

  • Next.jsvercel.com

    Framework for vercel.com and the dashboard, split into Multi-Zones.

    Why: They split into zones to cut build times and simplify dependencies as the app grew.

Hosting

  • AWSvercel.com

    Cloud where Vercel Functions run, on AWS Lambda.

Database

Payments

  • Stripevercel.com

    Payments in the dashboard, with its script lazy-loaded only when needed.

Styling and UI kit

  • Geistvercel.com

    In-house design system with colors, typography, React components and the Geist Sans and Mono fonts.

Build and runtime

  • Turborepovercel.com

    Runs the vercel.com monorepo, with remote cache and affected-only tasks.

  • Turbopackvercel.com

    Bundler used for local development of vercel.com.

Data fetching

Backend framework

  • Rustvercel.com

    Powers the Fluid compute core and Turborepo.

    Why: Turborepo moved to Rust once Go began to underserve it after merging with Turbopack.

  • Gojob-boards.greenhouse.io

    Language of the CDN services, alongside Lua.

  • Node.jsjob-boards.greenhouse.io

    Runtime for back-end services, and one of the languages Fluid compute runs for customers.

Error monitoring

  • Sentryvercel.com

    Error tracking in the dashboard through @sentry/nextjs.

How they built it

Dogfooding Next.js on vercel.com

vercel.com started as one large Next.js app serving both marketing pages and the logged-in dashboard. As it grew, build times climbed and small changes triggered full builds.

The team split it into vertical microfrontends with Next.js Multi-Zones inside a Turborepo monorepo, using feature flags to move traffic over gradually. The result was over 40% faster preview builds and local compilation.

Sources:vercel.com

Making the dashboard twice as fast

In 2022 the team took the dashboard's Lighthouse score from 51 to 94. Most of the wins were about shipping less JavaScript: importing only the needed parts of Sentry, lazy-loading Stripe and Google Tag Manager scripts, and caching functions that ran hundreds of times per render.

They also leaned on Next.js features such as next/image and inlined font CSS.

Sources:vercel.com

Turborepo moved from Go to Rust

Turborepo was first written in Go, which fit the project early on. As the codebase grew and merged with Turbopack, which is written in Rust, Go started to underserve it.

The team ported it incrementally, running Rust and Go side by side for a while, and finished the migration with Turborepo 1.11.

Sources:vercel.com vercel.com

Fluid compute on top of AWS Lambda

Vercel Functions run on AWS Lambda, which at first could not stream responses. To add streaming, Vercel built a secure TCP-based protocol from Lambda back to its own infrastructure, with a Rust core as the glue.

That work became Fluid compute, which reuses running instances across requests to cut cold starts and costs for I/O-heavy workloads such as AI apps.

Sources:vercel.com

Also detected on their website

Found on the homepage with the open Wappalyzer rules (HTML, scripts and headers). It shows what runs in the browser, not the whole backend.

  • Amazon S3
  • Amazon Web Services
  • HSTS
  • Linkedin Insight Tag
  • Vercel
  • Webpack