Why Merlin's storefront was built with Astro
An online store is only useful if people can find it. That constraint decided the tool I used to build Merlin's storefront.
Written
An online store is only useful if people can find it. That constraint decided the tool I used to build Merlin's storefront.
As soon as Merlin's storefront started getting built, one requirement was obvious: the store had to reach buyers through search. Someone types a product name into Google, and the store has to show up there.
Searching by three criteria
This time, the process was different from when I searched for a backend.
Back then I'd first stopped at a candidate that turned out to be no better than what I was trying to leave, before finding the real answer — a story I've already told in an earlier entry.
For the storefront, I searched directly against three criteria: SEO-friendly, lightweight, and a high Lighthouse score. Those three criteria were what I held onto, not whichever framework happened to be trending.
One thing that helped point the search in the right direction was a conversation with a senior frontend developer I know — that's how Astro first entered my radar as a candidate worth checking against these criteria.
The consequence
Out of those three criteria, the answer landed on Astro — pages get shipped as plain HTML, lightweight and immediately readable by search engines.
The result was measurable, not just a framework's promise: all 14 of Merlin's storefront pages — one landing page and 13 stores — scored 100 out of 100 on Lighthouse for accessibility, best practices, and SEO.
Same constraint, different answer
Merlin's admin panel — where shop owners manage products and orders — I still built with React. Its constraint is different: it never needs to show up in search results, what it needs instead is high interactivity for everyday work.
A different constraint produces a different tool.
Back to the original question
A store that can't be found in search — who is it for?
Astro is in Merlin's storefront because that question got answered first — not because the framework was trending, but because this store genuinely had to reach people before anything else.
Category: Build
More entries
Why we rebuilt a variant grid already running in production
Merlin's admin variant grid had passed development and was running in production, until one complaint from real use got it completely rebuilt within hours.
Why Merlin changed from single-tenant to multi-tenant
An architecture decision that felt final turned out to rest on a business assumption. Once the assumption changed, the decision deserved a second look.
Why we left Laravel for Go
An overloaded server is what made us start looking for an alternative. But what kept us with Go ever since turned out to have nothing to do with that.