Draft
CoinTracker




CoinTracker

Three systems, one deadline. We consolidated CoinTracker's fragmented website into a single Sanity-powered system in four weeks.

Sectors
FintechCrypto
TimelineOngoing
Technologies
SanityReact RouterVercel
ClientCoinTracker
Services
DevelopmentConsultancy




Introduction

Three systems for one solution

CoinTracker helps millions of people with crypto taxes, as no one enjoys doing it manually. Using their solution, customers can sync wallets, calculate cost basis, and generate reports, without accidentally upsetting the tax authorities and removing all frustration with manual crypto tax filing. This means accuracy is non-negotiable.

The product is solid, resolving a major repetitive crypto-tax issue, but the website needed a bit of work. Under the hood, it was split across three systems. One system for Remix, Astro for another, and Webflow layered on top to keep different teams happy.

They wanted to sync all the systems for maximum operational efficiency. Financial products don't get a grace period. We had four weeks to consolidate everything into a single Sanity environment, clean up the frontend, and noticeably improve performance. The brief that was given was very clear. It was to make every page editable, create a cohesive system, and provide a clear visual separation between personal and enterprise sections through theming, without turning the site into a maintenance nightmare. Oh, and it all needed to work flawlessly with their existing React Router setup.





Unified System

Create page builders on every route

Three systems meant three workflows, three content models, and zero momentum. We consolidated everything into Sanity and used React Router on the frontend.

CoinTracker was already heavily invested in React Router, so we leaned into it properly instead of forcing a framework switch. That decision became TurboStart React Router with the Turbo Start Sanity editorial experience, without Next.js.

The migration took a week. The content model was clean enough to move 100% of the site, including blogs, integrations, and learning resources. We replaced brittle JSON configs with flexible page blocks on any route, added section-level theming for personal vs enterprise, and wired in set-and-forget JSON-LD across the site.

Four weeks later, CoinTracker went to one working system, which, to no one's surprise, helped them ship faster.





Flexibility

UI, but make it flexible

With the plumbing fixed, we turned to UI. CoinTracker can now build page blocks on any route, which means spinning up a landing page takes minutes.

The theming system needed special care. CoinTracker wanted a clear visual split between personal and enterprise without turning the site into a color-theory experiment. So we built component-level theming, with light, dark, and hue-tinted options, switchable per section and per block. Everything feels distinct, but nothing breaks brand consistency.

We also refined key flows like the tax assessment experience. Mobile-first with a proper drawer (thanks, Revola), subtle direction-aware animations instead of jumpy transitions, and modals with alerts when needed, drawers when not.





Result

Flawless website, finally

The migration itself was intentionally boring, which is exactly how you want it.

Because CoinTracker's content model was clean, we moved 100% of the site in a week. The payoff was immediate. Performance is already sitting in the top percentile, JSON-LD validates cleanly across Google's schema tools, and SEO is now set up to grow.

Operationally, the team works from a single Sanity environment, spins up new landing pages without engineering bottlenecks, and finally has a site that behaves like one system instead of three stitched together.

The foundation is solid enough that ongoing improvements don't feel risky anymore. CoinTracker is already planning a broader brand refresh across key pages, reusing the same blocks and structure, updating the look without touching the plumbing.