← Back to blog
Tool Friday EP. 06

Astro

Static when you want. Server when you need. Zero JS by default.

The workflow
01
Write .astro files
HTML + components
02
Build
Static or SSR
03
Deploy
Netlify, Vercel, anywhere
Try Astro free → Partner link

962,000 websites run on Astro.

I bet most developers I talk to haven’t heard of it. No hype cycle, no Twitter wars, no “is it the Next.js killer?” discourse. Just a free, open-source framework that ships zero JavaScript by default and gets out of your way.

I built two production sites with it. Here’s what actually happened.

What Astro does

Astro is a web framework for content-driven websites. The core idea is simple: your pages are static HTML unless you explicitly say otherwise. No JavaScript ships to the browser by default.

That’s not “minimal JavaScript.” That’s zero. Your blog post, your landing page, your portfolio — they load as HTML files. The browser has nothing to parse, nothing to execute. It just renders.

When you need interactivity — a form, a dashboard, auth — you flip one switch and Astro becomes a server-rendered framework. Same syntax, same project structure, same mental model. You just change the output mode.

ModeWhat it doesUse case
Static (default)Generates HTML files at build timeBlogs, portfolios, marketing sites
ServerRenders pages on each requestApps with auth, databases, dynamic content
HybridMix of both per pageSites that are mostly static with a few dynamic pages

What I built with it

Two very different sites. Same framework.

stratega.co (here you are) — my main site. Static. 14 blog posts. Sitemap. SEO. The entire config file is 16 lines. Total dependencies: 3 (Astro, Tailwind, sitemap plugin).

I wrote about the full build process here. The short version: I went from zero to production in 48 hours. Astro was never the bottleneck. The framework disappeared — I was just writing HTML with components.

Stratega Academy — a full-stack learning platform. Server-side rendered via Netlify. Supabase for auth, database, and row-level security. Interactive exercises, a dashboard, course progress tracking, a GTM Kit with PDF export (live soon). The config file is 13 lines.

Same framework. One ships HTML files. The other runs a full application with a database behind it.

That’s the thing I didn’t expect: I didn’t have to learn a new framework when the requirements changed. I just changed one line in the config.

The stack

Both sites run on the same foundation:

Astro 5 + Tailwind 4 → Deploy on Netlify

For the main site, that’s literally it. Three dependencies in package.json. No React. No Vue. No runtime framework at all.

For the Academy, I added Supabase (auth + database), Resend (transactional emails), and the Netlify adapter for SSR. Total dependencies: 7. For a full-stack app with auth, exercises, and email — that’s nothing.

What surprised me

The Lighthouse scores. stratega.co scores 100/100 Performance, 100/100 Best Practices, and 100/100 SEO — desktop, incognito, no optimization work on my end. No manual lazy-loading, no code-splitting, no CDN configuration. The framework handles it because there’s no JavaScript to slow things down.

The .astro file format. It’s just HTML with a frontmatter block for server logic. If you know HTML, you know Astro. There’s no JSX to learn, no hooks, no state management. The learning curve is essentially zero for anyone who’s built a website before.

---
// This runs on the server
const posts = await getCollection('blog');
---

<!-- This is just HTML -->
<ul>
  {posts.map(post => <li>{post.data.title}</li>)}
</ul>

Content collections. The blog on stratega.co runs on Astro’s built-in content layer. I write markdown files, Astro validates the frontmatter against a schema, and generates typed data I can query. No CMS, no database, no API calls. The blog is a folder of .md files.

What it won’t do

Be clear about where it stops.

Use caseWorks?Notes
Blogs, portfolios, marketing sitesYesThis is its sweet spot
Full-stack apps with authYesSSR mode + external services
Content-heavy sitesYesBuilt for this
Real-time features (chat, live data)NoNo WebSocket support out of the box
SPAs with complex client stateNoUse React/Next.js or SvelteKit
Teams that only know ReactPartialLearning curve is low but it’s a different mental model

If your app is mostly client-side interactions — drag-and-drop interfaces, real-time collaboration, complex state machines — Astro is the wrong choice. It’s built for content and pages, not for applications that live entirely in the browser.

If your team is deep in the React ecosystem and doesn’t want to learn a new file format, the switching cost might not be worth it. Though honestly, the .astro syntax is close enough to JSX that most React developers pick it up in an afternoon.

Pricing

Free. Open source. MIT license.

WhatCost
Framework$0
CLI$0
All features$0
HostingDepends on your provider (Netlify free tier works)

Astro offers a paid product called Astro Studio for hosted databases, but it’s entirely optional. The framework itself has no paid tier, no premium features, no “upgrade to unlock SSR” gate.

Alternatives

FrameworkBest forHow it compares
Next.jsReact-first full-stack appsMore mature ecosystem, better for complex React apps. But heavier — you’re shipping a React runtime whether you need it or not.
SvelteKitPerformance-focused apps with interactivityExcellent DX, small bundle sizes. Better than Astro if your site is interaction-heavy. Worse for pure content sites.
HugoStatic sites from markdownBlazing fast builds, battle-tested. But it’s Go templates — the DX is rough compared to Astro components.
11tySimple static sitesLightweight and flexible. Good if you want minimal tooling. Astro gives you more structure and the component model.

My take: if you’re building a content site or a marketing site and you want modern DX without the JavaScript bloat, Astro is the best option available right now. If you’re building a SPA or a complex web app, stick with Next.js or SvelteKit.

The verdict

Astro is the first framework where I spend more time building than configuring.

Two production sites. One static, one full-stack. Both fast, both simple, both running on the same 13-16 lines of config. The framework disappears when you’re working — you’re just writing HTML, adding components where you need them, and deploying.

The zero-JavaScript-by-default philosophy isn’t a gimmick. It’s the reason my sites load instantly, score near-perfect Lighthouse scores, and don’t break in unexpected ways. There’s nothing to break — it’s just HTML.

962,000 websites. No hype. Just a framework that works.

Score: 9.0/10

The point off: the ecosystem is smaller than Next.js or React, so you’ll find fewer tutorials, fewer Stack Overflow answers, and fewer third-party integrations. If you hit an edge case, you’re reading GitHub issues, not blog posts. For everything else — speed, simplicity, flexibility — it’s the best framework I’ve used.

Start building — astro.build


Tool Friday is a weekly series where I review one tool I actually use in my workflow. Just tools that made my work better.

Verdict

The first framework where I spend more time building than configuring.

9
/10
Free
Open source · MIT license