[ Case study ]
Developers — the buyers — reported the documentation feeling sluggish: code samples re-rendered slowly, search lagged, and tab switches stuttered. Field INP sat at 280ms, and the docs' bounce rate on mobile was the highest of any section.
CLIENT a product-analytics SaaS vendor — FOCUS Isolate the interactive islands
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Product analytics for engineering teams is this vendor's business, which means the docs are the sales call: developers evaluate the product by reading and poking interactive samples. Docs content lives in Markdown repositories that engineering owns and merges like code; marketing owns the surrounding site; both ship from one deployment. The team could point to every metric that mattered except the one developers actually felt — the docs lagged when you used them.
Developers — the buyers — reported the documentation feeling sluggish: code samples re-rendered slowly, search lagged, and tab switches stuttered. Field INP sat at 280ms, and the docs' bounce rate on mobile was the highest of any section.
We proposed rebuilding the shared surface on Next.js with strict boundaries: docs pages stream from the server, while code samples and search become isolated client-side islands with per-component bundle splitting. Engineering's Markdown repositories remain the source of truth — the pipeline validates and renders MDX without asking their workflow to change. A per-route bundle budget in CI holds the line, and field Web Vitals monitoring moves onto the release checklist, because the lab demonstrably could not see the problem developers were feeling.
Just as important is what we ruled out, and why:
Code samples and search became client-side islands with their bundles split per component; the surrounding pages ship almost no JavaScript.
Long sidebar and content trees stream server-side, so the first paint carries readable content while the rest resolves.
We added field INP monitoring to the release checklist — the lab could not see the problem, so the fix had to be verified where it lived.
Delivered by the systems pod — 2 engineers over 9 weeks, with working increments reviewed with the client every week.
Obstacle
Engineering's Markdown repositories referenced custom MDX components that no longer existed in the pipeline; the first full build failed across dozens of historical files.
Handled: We added a build-time lint that maps unknown components to fallback renderers and reports them per pull request, so drift gets caught in the repos where it starts.
Obstacle
An aggressive docs caching rule briefly served stale release notes on the marketing side — the shared deployment meant one route's policy could leak into another's.
Handled: We split caching policy per route group, added a deploy smoke check that diffs release-note timestamps, and documented the boundary where future rules belong.
The headline: p75 inp on docs and marketing pages, 28-day field window after rollout — 280ms → 120ms, read from Web vitals field data. A second check: docs bounce rate on mobile at −18%.
Developers stopped prefacing demos with an apology for the docs. Code samples respond the way the product does, and engineering stopped treating docs deploys as risk — the shared deployment held. DevRel ships sample updates through the same pull-request flow as product code, so docs work stopped being a favor from engineering and became engineering work. Mobile bounce complaints vanished from the release retro agenda.
The result was read from Web vitals field data against the pre-engagement baseline over the stated window, with a guardrail check on docs bounce rate on mobile. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have set an INP budget on the existing site before rebuilding — having the 'before' distribution would have made the win provable per deploy.
[ Related service ]
[ Related builds ]
9 installs 1 adminSites maintained from one WordPress admin, migration completed over 9 weeks
3 weeks 4 daysMedian landing-page turnaround, measured across the first 12 campaign pages post-handover
[ Next step ]
Next case study