The results apps (such as https://2025.stateofjs.com/) are currently using Gatsby.
Requirements
The requirements for the app are:
- TypeScript support
- React support
- Static site generation (generate HTML files)
- Can build/deploy many pages relatively fast
In addition, two nice-to-have more advanced features would be:
Hybrid Rendering
The ability to prerender some routes as HTML pages at build time, but also support dynamically server-side rendered routes at the same time (useful for things like dedicated metatags routes for social media sharing).
"Soft" SPA-style internal navigation
The ability to navigate the site without refreshing the page and having to reload the JavaScript bundle, while maintaining state etc. from page to page.
Gatsby ❌
This is what we currently use. There are a couple issues with the current system:
- Gatsby is not well-supported anymore, and if things break they might not get fixed.
- Very long build times
- We don't really use any of Gatsby's features.
Astro ❌
Astro is great but presents two issues:
- Loses some of its benefits if you don't use
.astro components (in our case we want 100% of the components to remain in React for easier portability).
- Does not support "soft" SPA-style internal navigation (as far as I know)
Next.js ❌
Pros:
- Supports all requirements
- Already used elsewhere in the stack
Cons:
- It's Next.js (complex, heavy, etc.)…
Waku ✅
The other options I've been considering is Waku. Although it's much newer and smaller than Astro, it supports all requirements and doesn't have the baggage of Next.js.
Something else?
I'm not aware of other good options but if there are, I'd love to hear about them!
The
resultsapps (such as https://2025.stateofjs.com/) are currently using Gatsby.Requirements
The requirements for the app are:
In addition, two nice-to-have more advanced features would be:
Hybrid Rendering
The ability to prerender some routes as HTML pages at build time, but also support dynamically server-side rendered routes at the same time (useful for things like dedicated metatags routes for social media sharing).
"Soft" SPA-style internal navigation
The ability to navigate the site without refreshing the page and having to reload the JavaScript bundle, while maintaining state etc. from page to page.
Gatsby ❌
This is what we currently use. There are a couple issues with the current system:
Astro ❌
Astro is great but presents two issues:
.astrocomponents (in our case we want 100% of the components to remain in React for easier portability).Next.js ❌
Pros:
Cons:
Waku ✅
The other options I've been considering is Waku. Although it's much newer and smaller than Astro, it supports all requirements and doesn't have the baggage of Next.js.
Something else?
I'm not aware of other good options but if there are, I'd love to hear about them!