Skip to main content
Rearchitecture · Next.js migration · 2026 · 6–8 weeks

Relay.

A seven-second wait, gone.

White-label and under NDA — anonymized. The work, stack, and outcomes are real; only the client's name is masked.

~7s → instant
API response
6–8 wk
full rebuild
Background
processing, decoupled
Live
stable in production
The brief

An older app, written in another language, was slow exactly where it hurt: every request ran synchronously, so users watched a spinner for around seven seconds before anything came back. The client wanted to move into the TypeScript world — and, more than that, to make it fast.

What we built

We rebuilt it in Next.js around an asynchronous core. Instead of doing the work while the user waits, the API accepts the request, stores what it needs, and responds immediately — while a background job picks up the task and works through it independently. The UI polls and updates itself as results land, so a user can fire a request and close the tab; the processing carries on without them. The hard parts were the shift itself — turning a synchronous pipeline into a reliable background one — and wiring authentication into the client's existing database rather than starting clean.

The outcome

The seven-second wait is gone; responses are instant. Processing is fully decoupled from the interface — it runs to completion whether or not anyone is watching. The result is a markedly more stable system that no longer makes people wait on work that doesn't need them.

Built with
Next.jsTypeScriptTailwind CSSshadcn/uiKyselyTurborepo
Next case →
SinerPay

An omnichannel Pay-by-Link payments platform — grown from a single-client tool into a product handling thousands of transactions a day, now on its fifth, ground-up-rebuilt version.

Read case →
Get in touch

Gotathingyouneedshipped?

Relay — Studio Seahorse