2026-08-01

Why We Rebuilt Our Own Website Off Flutter Web

For our first year, thedotapps.in ran on Flutter Web. It looked good, it was fast to build, and it used the same stack we use for client products. It also produced zero organic search leads in eleven months.

The actual problem

Flutter Web renders the entire UI to a <canvas> element using CanvasKit. That's fantastic for an interactive product — pixel-perfect, consistent across platforms, and it feels native. But it means the page has no real DOM text. Search engines and screen readers don't see your headline, your service list, or your case studies. They see whatever static fallback HTML you hand-wrote into index.html — and that fallback is the same on every route, because a single-page app only ships one HTML file.

We had good meta tags, a correct sitemap, JSON-LD structured data, and a hand-rolled per-route title swap in JavaScript. None of it mattered, because the content itself was never actually there for a crawler to read.

What we moved to instead

We rebuilt the marketing site in Next.js with server-rendered and statically generated pages. Every route now ships real, unique HTML: real headings, real paragraphs, real internal links. The animation layer — smooth scrolling and scroll-driven reveals — is handled separately with GSAP and Lenis, so the visual experience doesn't cost us the content.

Flutter is still exactly right for our client work: the products behind a login, the admin panels, the cross-platform apps. It was just never the right tool for a public page whose entire job is to be found.