PORTFOLIO
Back to writing

Next.js

Shipping the Give a Gift Flow on a Live Next.js + GraphQL Platform

February 5th, 20262 min read

Shipping a new flow on a product with real, active users is a different exercise than building it greenfield. On Qeepsake, a production Next.js + GraphQL platform, I shipped the Give a Gift flow alongside a full UI rebrand and a chatbot integration, all while the existing flows kept running for paying users.

The biggest constraint was not the new feature itself, it was not breaking what already worked. That meant evolving the GraphQL schema additively (new fields and types instead of breaking changes), rolling the new UI out behind a flag, and watching real usage before fully cutting over.

The part that made this safe to ship confidently was instrumentation, not caution. I added Mixpanel events around the new flow to see actual adoption, wired Sentry into the frontend and API so regressions surfaced before a user reported them, and wrote Cypress E2E tests covering the checkout and onboarding paths most likely to break silently during a rebrand.

give-a-gift.cy.js
cy.visit("/gift/start");
cy.findByRole("button", { name: /send a gift/i }).click();
cy.findByLabelText(/recipient email/i).type("friend@example.com");
cy.findByRole("button", { name: /continue/i }).click();
cy.findByText(/review your gift/i).should("be.visible");

None of this is exotic. It is the boring, repeatable stuff, analytics, error tracking, and E2E coverage on the paths that matter, that lets you ship UI rebrands and new flows on a live product without the rollout becoming the scary part.

Related

More to explore

June 30th, 2026

The Performance Problem That Isn't in Your Latency Dashboard

Every endpoint was fast, but screens still felt slow. The culprit was over-fetching. Here's how I used Claude Code and Codex to trace it and cut payload size by ~30% — without handing over the decisions.

GraphQLAPI DesignWeb PerformanceAI ToolsBackend
Read article

July 11th, 2026

Recall: A RAG App That Shows Its Receipts

I built a Retrieval-Augmented Generation (RAG) app that answers questions from your documents — and shows the exact passages behind every answer, with match scores. Here's how it works and why retrieval, not the model, is the hard part.

RAGAI EngineeringLLMPostgresNext.js
Read article