✨ Strapi MCP is now Generally Available - let your agents manage your Strapi content ✨

Ecosystem12 min read

Comprehensive Review of Top JavaScript Frontend Frameworks in 2026

September 16, 2024Updated on August 24, 2026

Incremental hydration now activates deferred content on specified triggers, while Server Islands render sections on request independently behind fallbacks. Partial Prerendering (PPR) combines static and request-time content in the same route. Astro joined Cloudflare, while Remix v2 reached end of life. React Foundation governance changed too.

In brief:

What developer surveys say about frontend frameworks

The 2025 survey from Stack Overflow (49,009 respondents, published July 2025) puts usage at: React 44.7%, Next.js 20.8%, Angular 18.2%, Vue.js 17.6%, Svelte 7.2%, Astro 4.5%, and Nuxt 4.0%.

Sentiment tells a different story. Every major framework's admired score dropped between 2024 and 2025, with Svelte holding the top spot at 62.4% and Next.js falling from 59.5% to 45.5%.

The State of JavaScript 2025 survey documents the same divergence between usage and happiness. Next.js keeps gaining ground in the meta-framework category, yet it is also losing satisfaction at the same time, with a 39% satisfaction gap behind leader Astro. On the framework side, Solid has held the highest satisfaction rating for five consecutive years despite roughly 10% usage. We covered what these numbers mean for teams in our State of JavaScript 2025 key takeaways.

TypeScript GitHub data shows that TypeScript became the most used language on GitHub in August 2025, and nearly every framework below now scaffolds with TypeScript by default. If you're weighing TypeScript for your own projects, our TypeScript overview covers the practical tradeoffs.

React-based framework versions, rendering, and stability

React 19: Server Components, the compiler, and a new foundation

React 19.2.x is the current stable line, at roughly 162 million weekly npm downloads.

Since React 19 shipped in December 2024, Actions and useActionState have been stable for application authors. React Server Components (RSC) are stable too. 'use server' marks Server Functions only. No RSC directive exists; they are the default in RSC-compatible environments. Our guide to React Server Components with Strapi 5 walks through the data-fetching implications.

Two more changes affect how you start projects. React Compiler 1.0 went stable in October 2025. It automates memoization so previous computation results can be reused. And the Create React App sunset means the React team recommends Next.js, React Router, or Expo for frameworks, or Vite, Parcel, or Rsbuild as build tools.

Governance changed too. React, React Native, and JavaScript XML (JSX) moved to the React Foundation under the Linux Foundation in February 2026, with Amazon, Meta, Microsoft, and Vercel among the platinum members. Calling React "Meta's framework" is no longer accurate.

Strapi's React integration guide covers wiring a Vite-scaffolded React app to a Strapi 5 backend. For a deeper look at how React fits into modern frontend development, you can also explore our headless content management system (CMS) guide for frontend developers.

Next.js 16: Cache Components and Turbopack by default

Next.js 16.2 is the Active Long-Term Support (LTS) release. Turbopack is now the default bundler. It passed 8,298 integration tests before going stable.

Caching flipped in Next.js 15: fetch requests, GET Route Handlers, and the Client Router Cache are uncached by default, so caching requires an explicit opt-in.

The old experimental.ppr flag from 2024 is gone. The related Next.js 16 changes are:

  • PPR is now the default behavior when you enable Cache Components with cacheComponents: true, using the use cache directive plus cacheLife() and cacheTag().
  • middleware.ts was replaced with proxy.ts.
  • next lint was removed.
  • Accelerated Mobile Pages (AMP) support was removed.

These changes replace several 2024-era configuration and tooling conventions.

For content sites, incremental static regeneration (ISR) supports revalidation options for time-based and on-demand revalidation: time-based revalidation via export const revalidate and on-demand invalidation via revalidateTag, which you can invoke from a CMS webhook. If you want to build with Next.js and Strapi end to end, consider the Epic Next.js tutorial or the Next.js integration guide. Our overview of Next.js 16 features covers the full set of changes. Next.js handles revalidation, while the hosting platform or content delivery network (CDN) controls deployment and edge-cache behavior.

React Router v8, Remix 3, and TanStack Start: read the version labels carefully

Three products currently carry the Remix or React Router name, and confusing them is easy. React Router v7 (November 2024) absorbed Remix's bundler and server runtime as "framework mode"; the team stated plainly that React Router v7 is the next major version of Remix after v2.

React Router v8.3.0 is now stable and drops the react-router-dom package in favor of imports from react-router. With v8's release, Remix v2 officially reached End of Life in June 2026 and receives no further security updates. Remix 3 is a separate rebuild, in beta and not production ready yet.

Server-side rendering (SSR) is the default among framework rendering modes. Single-page application (SPA) mode is available via ssr: false; static pre-rendering is also supported. Strapi maintains a React Router 7 integration guide using framework-mode loaders. Shopify backs the project and runs it at scale: the rebuilt Shopify admin serves 67 million daily page views across 1,017 routes.

TanStack Start remains a release candidate, feature-complete with a stable API but not yet 1.0, and its RSC support is experimental. Its per-route selective SSR (ssr: true, false, or 'data-only') is unusually granular.

The surrounding stable libraries reduce the risk of adopting the release candidate: TanStack Router v1 with fully inferred type-safe routing, TanStack Query v5 with adapters for React, Vue, Solid, Svelte, Angular, and Lit, and TanStack Form v1. The TanStack integration guide shows TanStack Start application code using createServerFn to call Strapi's Content API.

TanStack has independent project operations with no venture capital funding, and the Netlify partnership makes Netlify its official deployment partner.

Vue and Angular rendering and reactivity updates

Vue 3.5 and Nuxt 4: Vapor Mode nears, hybrid rendering matures

Vue 3.5.x is stable; Vue 3.6 sits at release candidate, and the official release policy says release candidates should not be used in production. Vue 3.6's Vapor Mode compilation skips the virtual document object model (DOM) for lower memory use. It is fully opt-in via <script setup vapor> and not yet stable; the current release candidate doesn't support the Options API or v-memo.

For state management, Pinia is recommended and Vuex is in maintenance mode, so new Vue tutorials citing Vuex are dated.

Nuxt 4.5 is the current stable release, with Vite 8, Rspack 2 support, and experimental SSR streaming. Nuxt's hybrid rendering via routeRules supports several per-route options: you can prerender, use stale-while-revalidate, enable ISR-style CDN caching, or drop to client-only rendering. You can see how the pieces fit in this Nuxt hotel booking build. Lazy hydration strategies (visible, idle, interaction, and others) landed in v3.18.

Angular v22: Signals complete, zoneless by default

Angular v22 (June 2026) closes out the Signals migration: signal, computed, effect, linkedSignal, and now stable resource APIs. Zoneless change detection, experimental back in v18, is the default in v21+. New applications no longer include zone.js.

The SSR story improved just as much. Incremental hydration is stable and enabled by default in v22's provideClientHydration(), using @defer blocks with hydrate triggers:

@defer (hydrate on viewport) {
  <comments-section />
}

Route-level rendering modes (RenderMode.Client, RenderMode.Prerender, RenderMode.Server) went stable in v20, so the old "Angular is client-side rendering (CSR)-only and bad for search engine optimization (SEO)" framing no longer holds. The Angular logistics app provides a full-stack example. Angular's release policy guarantees 24 months of support per major version, which matters for enterprise planning. Google maintains Angular and runs hundreds of zoneless apps in production internally.

Compiler-first and content-focused frontend frameworks

Svelte 5 and SvelteKit 2: Runes are the standard now

Svelte 5 has been stable since October 2024, and Svelte runes ($state, $derived, $effect) are the standard reactivity model. Note a syntax change that trips up readers of older tutorials: the on: directive is deprecated in Svelte 5 in favor of event attributes.

<script>
	let count = $state(0);
</script>

<button onclick={() => count += 1}>
	clicks: {count}
</button>

SvelteKit 2 handles SSR by default, with per-page options for prerender, ssr, and csr; setting ssr to false on the root layout gives you a full SPA, and csr: false ships zero JavaScript for a page. Two features remain experimental and opt-in: async SSR (Svelte 5.36+) and remote functions (SvelteKit 2.27+). SvelteKit 3 exists only as pre-release builds.

This SvelteKit e-commerce build provides a practical example with a Strapi backend. Svelte has Vercel and community backing, and production users named on the official blog include The New York Times, Apple, Spotify, and IKEA.

Solid.js and SolidStart: small usage, highest satisfaction

Solid 1.9.x is the current stable release, with Solid 2.0 in beta since March 2026. The 2.0 beta rewrites signals from scratch around async-first reactivity: computations can return Promises, a new <Loading> component and isPending() handle pending states, and onMount gives way to onSettled. Treat 2.0 as a preview; production apps stay on 1.9.

SolidStart 1.0 is officially stable (currently 1.3.2) and provides routing and SSR. It also provides server data loading. A 2.0 release candidate is in pre-release. Strapi's Solid.js integration guide covers the CMS connection.

Solid is community-funded with sponsors including Netlify, Vercel, and JetBrains. The State of JS finding cited earlier, five straight years of top satisfaction, provides evidence for considering Solid's fine-grained reactivity despite its smaller community.

Astro 7: Server Islands, a Rust compiler, and Cloudflare

Astro 7.1 is current, and Astro 7 (June 2026) brought Vite 8, a new Rust compiler, and background dev server support. Astro's defaults remain the same: static prerendering at build time, with on-demand rendering requiring an adapter and a per-page export const prerender = false. Astro 5 merged the old static and hybrid output modes into one static default. For more on what Astro brings to the table, our Astro explainer covers the core concepts.

With Server Islands, stable since Astro 5.0, the server:defer directive renders the page immediately with a fallback while each deferred server-rendered island fetches independently. For client-side page transitions, current docs use the <ClientRouter /> transition component, replacing the <ViewTransitions /> name from 2024 documentation.

The project site showcase pairs Strapi with Astro in a hands-on build.

The Astro Technology Company joined Cloudflare in January 2026; the framework stays open-source and MIT-licensed. GitHub's Octoverse 2025 counted 45,600+ Astro developers, up 78% year over year.

Frontend framework comparison table (mid-2026)

SSR vs CSR defines the rendering terms used below.

FrameworkStable versionRendering optionsBacking
ReactReact 19.2.xCSR, streaming SSR, Server Components (via a framework)React Foundation (Linux Foundation)
Next.jsNext.js 16.2 (LTS)SSR default, PPR via Cache Components, ISR, and static site generation (SSG), covered in ISR and SSG docsVercel maintains Next.js
Vue.jsVue.js 3.5.xCSR default; SSR via Nuxt or custom setupCommunity-funded Vue, no corporate owner
NuxtNuxt 4.5.xUniversal SSR default; per-route prerender, stale-while-revalidate (SWR), ISR, client-onlyNuxt MIT license
AngularAngular v22CSR default; route-level render modes and incremental hydrationGoogle maintains Angular
Svelte / SvelteKitSvelte 5.x / SvelteKit 2.xSSR default; per-page prerender, ssr, csrVercel and community
Solid / SolidStartSolid 1.9.x / SolidStart 1.xCSR; SSR and SSG via SolidStartCommunity-funded Solid
AstroAstro 7.1.xStatic default; on-demand via adapter; Server IslandsCloudflare
React RouterReact Router 8.3.xSSR, SPA, pre-renderingShopify
TanStack StartTanStack Start RCPer-route selective SSR, streaming, prerenderingIndependent; Netlify partner

Connecting any frontend framework to Strapi 5

A headless CMS separates content infrastructure from the frontend framework. Strapi owns content modeling and API delivery. Its content model can remain unchanged when you switch or mix frontends, but frontend integration code, queries, preview settings, and deployment configuration may need updates. For teams evaluating this composable architecture, that decoupling is the core benefit.

You own data fetching, rendering, routing, framework-specific preview behavior, and error handling on the frontend side. The headless CMS explainer takes one minute.

The REST API docs confirm that REST is built in and enabled by default. The main API details are:

  • Every Content-Type gets auto-generated endpoints. Strapi 5 responses are flattened, with attributes at the first level of the data object and documents addressed by documentId, replacing the numeric id.
  • You need to configure Content API access through public-role permissions or authentication and write the frontend requests.
  • REST responses don't populate relations, media, components, or Dynamic Zones unless you request them with the populate parameter.
  • GraphQL requires installing the @strapi/plugin-graphql GraphQL plugin, which must then be configured and auto-generates a schema from your Content-Types. The GraphQL overview covers how this works in practice.
  • Media uploads use REST, including when the application otherwise uses GraphQL.

Strapi exposes the content, while each frontend remains responsible for requesting, rendering, and handling it.

This REST vs GraphQL comparison for Strapi 5 helps you pick the API approach that fits your frontend.

Starting a project takes one command, on Node.js Active or Maintenance LTS (currently v22, v24, or v26 per the Quick Start Guide):

npx create-strapi@latest my-strapi-project

Strapi maintains integration guides for React, Next.js, Vue, Nuxt, Angular, Svelte/SvelteKit, Solid, Astro, React Router 7, and TanStack Start. There is no dedicated Remix 3 integration guide. The Angular guide does not explicitly target Strapi 5 and still uses the deprecated --quickstart flag, so the current Quick Start command above is the better choice.

These pages are supplementary guides, and the Strapi Support Team does not provide assistance with them. They demonstrate frontend-side Content API integration. Native framework adapters are unavailable, so you still configure permissions or authentication and implement fetching, queries, rendering, preview, and error handling.

Some capabilities are plan-gated: Live Preview requires a Growth or Enterprise plan.

How to choose a JavaScript frontend framework

Artificial intelligence coding tools and framework choice

The data on artificial intelligence (AI) is more mixed than the hype suggests. The Stack Overflow 2025 AI survey found 84% of developers using or planning to use AI tools, yet 46% actively distrust AI accuracy, and 66% cite "almost right but not quite" AI solutions as their top frustration. A METR controlled trial of experienced open-source developers found they took 19% longer on real issues when using AI tools, despite predicting a speedup.

Tooling is converging on frontend work specifically. Next.js 16+ ships MCP support so agents can inspect routes, errors, and live state. Teams that depend on AI tooling should weigh that support alongside the satisfaction data.

Match a frontend framework to your workload

Use the workload as the primary framework selection criterion. Popularity data provides additional context. Content-heavy sites with limited interactivity point toward Astro or SvelteKit; large enterprise apps with long support horizons point toward Angular; teams deep in the React hiring pool get the most from Next.js or React Router framework mode; and if your team prizes reactivity performance and developer satisfaction, Solid and Svelte are worth serious evaluation. Our rundown of the best JavaScript frameworks and how to choose between them goes deeper on the decision criteria. You can also explore current web development trends to see which frameworks are gaining traction.

Prototype the full loop early by scaffolding the frontend, spinning up Strapi 5, configuring API permissions or authentication, and fetching real content through the REST API before committing. A working vertical slice tells you more about a framework than any comparison table.

Ready to pair your frontend framework with Strapi 5? Start building with Strapi Cloud or spin up a local instance with npx create-strapi@latest and connect it to your frontend of choice.


Juliet is a developer and technical writer who helps developers understand and use complex technical concepts.

Juliet OfoegbuWeb developer and Technical writer

Juliet is a developer and technical writer whose work aims to break down complex technical concepts and empower developers of all levels.

Related Posts

Next.js or SvelteKit: Which One is Better for Your Next Strapi App?
EcosystemBeginner·21 min read

Next.js vs SvelteKit: Which One is Better for Your Next Strapi App?

Learn the differences between Next.js and SvelteKit and which frameworks will best suit your next Strapi application.

·April 12, 2023
Complete Astro and Strapi Tutorial Part 1
TutorialsAdvanced·21 min read

Astro & Strapi Website Tutorial: Part 1 - Intro to Astro

Learn Astro and Strapi by building a multilingual blog website.

·June 17, 2024
Comparing Next.js, Astro, and Remix: Which is the Best?
EcosystemBeginner·26 min read

Next.js vs Astro vs Remix: Choosing the Right Front-end Framework

Discover the differences between Next.js, Astro, and Remix to find the right one for your next Strapi project.

·April 24, 2023