We rebuilt 90five.com as a static Astro website. It ships about 35 KB of inlined CSS and about 12 KB of JavaScript per page, and scores 96 to 99 on mobile Lighthouse performance. We still build most client sites in Webflow. This article explains why we picked Astro for our own site and what the numbers look like.
Why did we move our own website to Astro?
Our previous site lived in Webflow, and it was a good site. We are a certified Webflow partner and we still recommend Webflow to most B2B teams we talk to. So the move was not a protest against Webflow.
We moved because we wanted to find out where code is the better tool, and our own site was the safest place to test that. A studio that sells custom website development should have built one for itself. We also wanted full control over the markup, the CSS that reaches the browser, and a German version that behaves like a first-class site instead of a bolt-on.
The rebuild started from the Webflow export. We kept the markup and the class names, and rebuilt the delivery layer around them. That is why the site looks the same as before and loads very differently.
What is the stack?
The pieces are few, and each has one job.
The site is a static Astro build. Every page is rendered to plain HTML at build time. There are around 170 pages in English and German, and the German pages are real pages on their own URLs under /de, with hreflang tags pointing at their English twins. A small inline script switches first-time visitors whose browser prefers German to the German twin once, and it remembers an explicit choice. It never redirects bots.
Hosting is Cloudflare Workers with static assets. The HTML files are served from Cloudflare's edge. One small Worker handles form submissions: it checks the origin, runs a honeypot and a Turnstile spam check, validates the fields and forwards the lead to Slack or email. Page views never touch that Worker.
The blog lives in Sanity. Posts are fetched while the site builds, so a published article becomes a static page on the next build. Publishing in Sanity triggers that build.
There is no UI framework on the client. Navigation, the accordion, the cookie banner and the multi-step forms are plain TypeScript, a few kilobytes in total. Animations use CSS and the Web Animations API, and they respect the reduced-motion setting.
How much CSS and JavaScript does each page ship?
We measured the built output instead of quoting a feeling. Across the 136 indexable pages in the build, the average page carries about 35 KB of CSS, inlined into the HTML, which is about 7 KB gzipped. JavaScript averages about 12 KB per page, about 4 KB gzipped, including the small inline scripts.
CSS is the part that changed most. The Webflow stylesheet we started from was about 106 KB. During the build we purge it per page, keep only the rules that page uses, and inline the result into the document head. The browser gets one request for the HTML and has no stylesheet to wait for before it can paint.
Inlining has a cost. The CSS is repeated in every HTML file, so repeat visitors cannot cache it separately. With roughly 7 KB gzipped per page we accept that. A site with a much larger shared stylesheet should weigh the choice differently.
What do Lighthouse and Core Web Vitals say?
We ran Lighthouse in mobile mode against the deployed site. Results varied a little between runs, so these are ranges, not a single score:
- Performance: 96 to 99
- Accessibility: 97 to 100
- Best practices: 100
- SEO: 100
- Largest Contentful Paint: about 2.1 to 2.6 seconds under simulated mobile throttling
- Cumulative Layout Shift: 0
- Total Blocking Time: 0 to 10 ms
Lighthouse is a lab test with a throttled phone and a slow connection. It is not what every visitor experiences, but it is repeatable, which makes it useful for comparing builds. Google's threshold for a good LCP is 2.5 seconds, and our slower runs sit right at that line, so LCP is the number we would work on next.
TBT and CLS are where a static build helps most. With almost no JavaScript there is little to block the main thread, and with explicit image dimensions nothing jumps.
Does Astro help SEO?
Astro does not rank pages. Content, links and demand do that. What a static Astro build gives you is a clean starting position for technical SEO. This is what we got without extra work:
- Complete HTML for every page, so crawlers see the content without running scripts.
- Full control over titles, descriptions, canonical tags, hreflang and JSON-LD, written in one layout file.
- A sitemap generated from the pages that actually exist, with noindex pages removed.
- Fast pages that pass Core Web Vitals without tuning each one by hand.
We also wrote a QA script that crawls the build and checks broken links, missing assets, titles, H1 tags, hreflang reciprocity and JSON-LD parsing. We run it before changes go live. That script is as useful for SEO as the framework is. You can write the same checks for a site in any tool, and our Webflow SEO checklist for B2B websites covers what to check.
What did Astro cost us compared with Webflow?
Time, mostly, and some independence from the marketing team.
In Webflow, anyone on the team can change a headline or publish a CMS item in minutes, with a visual editor and no deployment. In our Astro setup, text changes go through the codebase unless the content sits in Sanity. That is fine for us because the people editing the site also write code. It would be a poor trade for a marketing team of four with no developer.
We also rebuilt things Webflow gives you for free: form handling, the sitemap, redirects, the consent banner wiring and image handling. Each one is small, and together they add up to real work.
When is code the better tool?
Our rule of thumb after this project: choose Webflow when marketers need to own the site and the design is the main variable. Choose Astro or another code-first approach when you need control Webflow does not give you, for example hundreds of generated pages from structured data, strict control over every byte of output, or a site that sits close to your product code.
We wrote a longer decision guide, Webflow, Astro or Next.js: which one fits your website?, for the case where you are choosing now. If you are weighing Webflow against a classic CMS, Webflow vs WordPress in 2026 covers that comparison.
If you already know you want code, our custom website development service builds Astro and Next.js sites for B2B teams. Projects start at $20k, the same minimum as our Webflow websites.
FAQ
Is Astro good for SEO?
Astro produces static HTML and gives you direct control over titles, canonicals, hreflang and structured data, which makes technical SEO straightforward. It does not improve rankings by itself. Content quality, links and search demand still decide where you rank.
Is Astro faster than Webflow?
A hand-tuned static Astro site can be lighter than a typical Webflow site because you control exactly what ships. A well-built Webflow site can also score well. The difference is who does the tuning: Astro makes small pages the default, and Webflow makes them possible.
Can marketers edit an Astro website?
Yes, if the content lives in a headless CMS such as Sanity and the site rebuilds when content is published. Layout and design changes still need a developer. If your team wants to restructure pages on its own, Webflow is the easier fit.
Do you still build websites in Webflow?
Yes. Webflow is our default recommendation for most B2B marketing sites, and we are a certified Webflow partner. We reach for Astro or Next.js when the project needs control, scale or product integration that Webflow does not give you. See our Webflow agency page for that side of the work.
What does a custom Astro website cost?
Custom Astro and Next.js websites at 90five start at $20k. The final price depends on the number of templates, the CMS setup, integrations and any migration. Our article What does a Webflow website cost? explains how those drivers work, and they apply to code builds as well.
