After struggling with Astro for a long time, I upgraded my blog to 11ty yesterday.
Listing the reasons why I migrated will help my future self stop bike-shedding over this choice. It’s worth doing now, especially given how easy it’s become to port a project from one framework to another.
I was initially drawn to Astro as a developer who’d recently moved from AngularJS to React. I liked the idea of static pages with optional dynamic content from any framework – no unnecessary SPA overhead. Astro delivered on that promise.
But Astro is designed for much larger sites and emphasizes best practices – great for teams managing substantial content. It supports components from multiple frontend frameworks, handles sitemaps across multiple files, and has a large processing pipeline. I don’t need any of that. The constant update cycle adds maintenance burden I don’t want. I often fought the framework: adding a deferred script should be simple, not a workaround with script is:inline.
With 11ty, I’m back to simple text templates. I have exact control over HTML output and the freedom to shoot myself in the foot. Template filters are easy to write and chain together which is something I miss from my AngularJS days. In short, I’m back in control with minimal tooling, which is how my personal site should be.