---
title: "JavaScript Framework Speed 2026: Alpine Leads at 56%"
description: "React passes Core Web Vitals on 37.1 percent of mobile sites, Vue 33.7, Angular 33.6. Alpine.js leads at 56.3. Analysis of 3.5 million plus origins."
lang: en
json-ld: |
  [
    {
      "@context": "https://schema.org",
      "@type": "Article",
      "headline": "The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3%",
      "datePublished": "2026-07-15",
      "dateModified": "2026-07-15",
      "author": {
        "@type": "Person",
        "name": "Matt Suffoletto",
        "jobTitle": "Performance Optimization Expert",
        "url": "https://www.pagespeedmatters.com/resources/author/matt-suffoletto"
      }
    },
    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://www.pagespeedmatters.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Resources",
          "item": "https://www.pagespeedmatters.com/resources"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Data Studies",
          "item": "https://www.pagespeedmatters.com/resources/data-studies"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3%"
        }
      ]
    },
    {
      "@context": "https://schema.org",
      "@type": "Dataset",
      "name": "The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3%",
      "description": "React passes Core Web Vitals on 37.1 percent of mobile sites, Vue 33.7, Angular 33.6. Alpine.js leads at 56.3. Analysis of 3.5 million plus origins.",
      "url": "https://www.pagespeedmatters.com/resources/data-studies/core-web-vitals-by-javascript-framework",
      "creator": {
        "@type": "Organization",
        "name": "PageSpeed Matters",
        "url": "https://www.pagespeedmatters.com"
      },
      "datePublished": "2026-07-15",
      "dateModified": "2026-07-15",
      "license": "https://creativecommons.org/licenses/by/4.0/",
      "isAccessibleForFree": true,
      "creativeWorkStatus": "Published",
      "variableMeasured": "Core Web Vitals pass rate and web performance metrics",
      "measurementTechnique": "HTTP Archive technology detection (June 2026 crawl, Wappalyzer) joined to Chrome UX Report (CrUX) field data via BigQuery"
    },
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Which JavaScript framework performs best for Core Web Vitals?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "React 37.1%, Vue 33.7%, Angular 33.6% - Alpine.js Beats Them All at 56.3%."
          }
        },
        {
          "@type": "Question",
          "name": "How was this measured?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "HTTP Archive technology detection (June 2026 crawl, Wappalyzer) joined to Chrome UX Report (CrUX) field data via BigQuery (May 2026). Root-page origins with a detected framework and a CrUX reading, each bucket at least 30,000 mobile origins, measured at the 75th percentile against the strict all-three Core Web Vitals pass convention."
          }
        }
      ]
    }
  ]
---

[![PageSpeed Matters](/assets/logo-DtyG_mQE.png)](/)

-   [Benefits](/why-speed-matters)
-   [Services](/services)
-   [ROI Calculator](/roi)
-   [Pricing](/pricing)
-   [Proof](/proof)
-   [Resources](/resources)
-   [About](/about)

[Speed Audit](/contact)

[Let's Talk](/contact)

 [![PageSpeed Matters](/assets/logo-DtyG_mQE.png)](/)

[Benefits](/why-speed-matters)[Services](/services)[ROI Calculator](/roi)[Pricing](/pricing)[Proof](/proof)[Resources](/resources)[About](/about)

Popular Services

[

Core Web Vitals Optimization ](/services/core-web-vitals-optimization)[

![WordPress Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eWordPress%3c/title%3e%3cpath%20d='M21.469%206.825c.84%201.537%201.318%203.3%201.318%205.175%200%203.979-2.156%207.456-5.363%209.325l3.295-9.527c.615-1.54.82-2.771.82-3.864%200-.405-.026-.78-.07-1.11m-7.981.105c.647-.03%201.232-.105%201.232-.105.582-.075.514-.93-.067-.899%200%200-1.755.135-2.88.135-1.064%200-2.85-.15-2.85-.15-.585-.03-.661.855-.075.885%200%200%20.54.061%201.125.09l1.68%204.605-2.37%207.08L5.354%206.9c.649-.03%201.234-.1%201.234-.1.585-.075.516-.93-.065-.896%200%200-1.746.138-2.874.138-.2%200-.438-.008-.69-.015C4.911%203.15%208.235%201.215%2012%201.215c2.809%200%205.365%201.072%207.286%202.833-.046-.003-.091-.009-.141-.009-1.06%200-1.812.923-1.812%201.914%200%20.89.513%201.643%201.06%202.531.411.72.89%201.643.89%202.977%200%20.915-.354%201.994-.821%203.479l-1.075%203.585-3.9-11.61.001.014zM12%2022.784c-1.059%200-2.081-.153-3.048-.437l3.237-9.406%203.315%209.087c.024.053.05.101.078.149-1.12.393-2.325.609-3.582.609M1.211%2012c0-1.564.336-3.05.935-4.39L7.29%2021.709C3.694%2019.96%201.212%2016.271%201.211%2012M12%200C5.385%200%200%205.385%200%2012s5.385%2012%2012%2012%2012-5.385%2012-12S18.615%200%2012%200'/%3e%3c/svg%3e)

WordPress Speed Optimization ](/services/wordpress-speed-optimization)[

![WooCommerce Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eWoo%3c/title%3e%3cpath%20d='M2.227%204.857A2.228%202.228%200%20000%207.094v7.457c0%201.236%201.001%202.237%202.237%202.237h5.36l2.39%202.076-.462-2.076h4.238a2.228%202.228%200%20002.237-2.237V7.094a2.228%202.228%200%2000-2.237-2.237H2.227zm4.636%201.885h.053c.115.002.22.04.316.117a.46.46%200%2001.183.336c.014.098-.003.177-.058.283-.23.422-.418%201.131-.57%202.12-.147.957-.202%201.706-.166%202.24a.694.694%200%2001-.07.387.377.377%200%2001-.31.213c-.153.01-.314-.06-.466-.22-.548-.558-.982-1.393-1.3-2.504-.382.752-.664%201.316-.846%201.692-.347.665-.643%201.005-.888%201.022-.16.012-.295-.122-.412-.403-.302-.771-.624-2.258-.97-4.464a.526.526%200%2001.096-.393c.083-.113.205-.168.37-.18.3-.024.47.114.511.42.183%201.23.384%202.272.596%203.124l1.286-2.453c.117-.224.265-.34.443-.352.258-.018.42.147.483.495.147.78.333%201.445.558%202.01.152-1.493.412-2.57.779-3.234a.452.452%200%2001.386-.26zm2.288.637c.099%200%20.205.01.318.035.411.088.728.313.938.683.19.318.286.699.286%201.156%200%20.607-.154%201.157-.46%201.663-.355.587-.813.884-1.383.884a1.557%201.557%200%2001-.318-.039.763.763%200%2001-.141-.05%201.351%201.351%200%2001-.799-.63%202.277%202.277%200%2001-.28-1.166c0-.605.151-1.158.457-1.658.358-.59.818-.88%201.382-.878zm3.687%200c.099%200%20.205.01.318.035.418.088.728.313.938.683.19.318.283.699.283%201.156%200%20.607-.153%201.157-.459%201.663-.354.587-.812.884-1.382.884a1.557%201.557%200%2001-.318-.039%201.352%201.352%200%2001-.94-.68%202.277%202.277%200%2001-.283-1.166c0-.605.154-1.158.46-1.658.358-.59.818-.88%201.383-.878zm-3.504.636a.636.636%200%2000-.534.373%201.908%201.908%200%2000-.354%201.13c0%20.17.035.354.106.536.087.23.207.35.347.38.147.029.306-.034.478-.187.218-.195.363-.483.446-.87.028-.137.041-.283.041-.436%200-.171-.035-.354-.106-.535-.088-.23-.206-.35-.347-.38a.436.436%200%2000-.077-.011zm3.688%200a.636.636%200%2000-.535.373%201.908%201.908%200%2000-.354%201.13c0%20.17.036.354.107.536.086.23.206.35.347.38.147.029.306-.034.478-.187.217-.195.362-.483.445-.87.024-.137.041-.283.041-.436%200-.171-.035-.354-.106-.535-.088-.23-.206-.35-.347-.38a.436.436%200%2000-.076-.011z'/%3e%3c/svg%3e)

WooCommerce Speed Optimization ](/services/woocommerce-speed-optimization)[

![Shopify Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eShopify%3c/title%3e%3cpath%20d='M15.337%2023.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.018-.116-.114-.192-.211-.192s-1.929-.136-1.929-.136-1.275-1.274-1.439-1.411c-.045-.037-.075-.057-.121-.074l-.914%2021.104h.023zM11.71%2011.305s-.81-.424-1.774-.424c-1.447%200-1.504.906-1.504%201.141%200%201.232%203.24%201.715%203.24%204.629%200%202.295-1.44%203.76-3.406%203.76-2.354%200-3.54-1.465-3.54-1.465l.646-2.086s1.245%201.066%202.28%201.066c.675%200%20.975-.545.975-.932%200-1.619-2.654-1.694-2.654-4.359-.034-2.237%201.571-4.416%204.827-4.416%201.257%200%201.875.361%201.875.361l-.945%202.715-.02.01zM11.17.83c.136%200%20.271.038.405.135-.984.465-2.064%201.639-2.508%203.992-.656.213-1.293.405-1.889.578C7.697%203.75%208.951.84%2011.17.84V.83zm1.235%202.949v.135c-.754.232-1.583.484-2.394.736.466-1.777%201.333-2.645%202.085-2.971.193.501.309%201.176.309%202.1zm.539-2.234c.694.074%201.141.867%201.429%201.755-.349.114-.735.231-1.158.366v-.252c0-.752-.096-1.371-.271-1.871v.002zm2.992%201.289c-.02%200-.06.021-.078.021s-.289.075-.714.21c-.423-1.233-1.176-2.37-2.508-2.37h-.115C12.135.209%2011.669%200%2011.265%200%208.159%200%206.675%203.877%206.21%205.846c-1.194.365-2.063.636-2.16.674-.675.213-.694.232-.772.87-.075.462-1.83%2014.063-1.83%2014.063L15.009%2024l.927-21.166z'/%3e%3c/svg%3e)

Shopify Speed Optimization ](/services/shopify-speed-optimization)[

![Wix Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eWix%3c/title%3e%3cpath%20d='m0%207.354%202.113%209.292h.801a1.54%201.54%200%200%200%201.506-1.218l1.351-6.34a.171.171%200%200%201%20.167-.137c.08%200%20.15.058.167.137l1.352%206.34a1.54%201.54%200%200%200%201.506%201.218h.805l2.113-9.292h-.565c-.62%200-1.159.43-1.296%201.035l-1.26%205.545-1.106-5.176a1.76%201.76%200%200%200-2.19-1.324c-.639.176-1.113.716-1.251%201.365l-1.094%205.127-1.26-5.537A1.33%201.33%200%200%200%20.563%207.354H0zm13.992%200a.951.951%200%200%200-.951.95v8.342h.635a.952.952%200%200%200%20.951-.95V7.353h-.635zm1.778%200%203.158%204.66-3.14%204.632h1.325c.368%200%20.712-.181.918-.486l1.756-2.59a.12.12%200%200%201%20.197%200l1.754%202.59c.206.305.55.486.918.486h1.326l-3.14-4.632L24%207.354h-1.326c-.368%200-.712.181-.918.486l-1.772%202.617a.12.12%200%200%201-.197%200L18.014%207.84a1.108%201.108%200%200%200-.918-.486H15.77z'/%3e%3c/svg%3e)

Wix Speed Optimization ](/services/wix-speed-optimization)[

![BigCommerce Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eBigCommerce%3c/title%3e%3cpath%20d='M12.645%2013.663h3.027c.861%200%201.406-.474%201.406-1.235%200-.717-.545-1.234-1.406-1.234h-3.027c-.1%200-.187.086-.187.172v2.125c.015.1.086.172.187.172zm0%204.896h3.128c.961%200%201.535-.488%201.535-1.35%200-.746-.545-1.35-1.535-1.35h-3.128c-.1%200-.187.087-.187.173v2.34c.015.115.086.187.187.187zM23.72.053l-8.953%208.93h1.464c2.281%200%203.63%201.435%203.63%203%200%201.235-.832%202.14-1.722%202.541-.143.058-.143.259.014.316%201.033.402%201.765%201.48%201.765%202.742%200%201.78-1.19%203.202-3.5%203.202h-6.342c-.1%200-.187-.086-.187-.172V13.85L.062%2023.64c-.13.13-.043.359.143.359h23.631a.16.16%200%200%200%20.158-.158V.182c.043-.158-.158-.244-.273-.13z'/%3e%3c/svg%3e)

BigCommerce Speed Optimization ](/services/bigcommerce-speed-optimization)[

![Webflow Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eWebflow%3c/title%3e%3cpath%20d='m24%204.515-7.658%2014.97H9.149l3.205-6.204h-.144C9.566%2016.713%205.621%2018.973%200%2019.485v-6.118s3.596-.213%205.71-2.435H0V4.515h6.417v5.278l.144-.001%202.622-5.277h4.854v5.244h.144l2.72-5.244H24Z'/%3e%3c/svg%3e)

Webflow Speed Optimization ](/services/webflow-speed-optimization)[

![Squarespace Speed Optimization](data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eSquarespace%3c/title%3e%3cpath%20d='M22.655%208.719c-1.802-1.801-4.726-1.801-6.564%200l-7.351%207.35c-.45.45-.45%201.2%200%201.65.45.449%201.2.449%201.65%200l7.351-7.351c.899-.899%202.362-.899%203.264%200%20.9.9.9%202.364%200%203.264l-7.239%207.239c.9.899%202.362.899%203.263%200l5.589-5.589c1.836-1.838%201.836-4.763.037-6.563zm-2.475%202.437c-.451-.45-1.201-.45-1.65%200l-7.354%207.389c-.9.899-2.361.899-3.262%200-.45-.45-1.2-.45-1.65%200s-.45%201.2%200%201.649c1.801%201.801%204.726%201.801%206.564%200l7.351-7.35c.449-.487.449-1.239.001-1.688zm-2.439-7.35c-1.801-1.801-4.726-1.801-6.564%200l-7.351%207.351c-.45.449-.45%201.199%200%201.649s1.2.45%201.65%200l7.395-7.351c.9-.899%202.371-.899%203.27%200%20.451.45%201.201.45%201.65%200%20.421-.487.421-1.199-.029-1.649h-.021zm-2.475%202.437c-.45-.45-1.2-.45-1.65%200l-7.351%207.389c-.899.9-2.363.9-3.265%200-.9-.899-.9-2.363%200-3.264l7.239-7.239c-.9-.9-2.362-.9-3.263%200L1.35%208.719c-1.8%201.8-1.8%204.725%200%206.563%201.801%201.801%204.725%201.801%206.564%200l7.35-7.351c.451-.488.451-1.238%200-1.688h.002z'/%3e%3c/svg%3e)

Squarespace Speed Optimization ](/services/squarespace-speed-optimization)

[Book a Call](/contact)

[Home](/) [Resources](/resources) [Data Studies](/resources/data-studies) The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3% 

Data Study · Frameworks

# The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3%

![Matt Suffoletto](/assets/matt-CEkmAuBN.jpg)Written by [Matt Suffoletto](/resources/author/matt-suffoletto) 

Published July 15, 2026  8 min read 

Share 

[](https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework&text=The%20Fastest%20JavaScript%20Framework%20Isn't%20React%2C%20Vue%20or%20Angular%20-%20Alpine.js%20Passes%2056.3%25)[](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework)[](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework)[](https://www.reddit.com/submit?url=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework&title=The%20Fastest%20JavaScript%20Framework%20Isn't%20React%2C%20Vue%20or%20Angular%20-%20Alpine.js%20Passes%2056.3%25)

On This Page

-   [Methodology](#methodology-source "Methodology")
-   [Key Findings](#key-findings "Key Findings")
-   [Summary](#summary "Summary")
-   [What the Data Covers](#what-the-data-covers "What the Data Covers")
-   [Popular Frameworks Sit Below Average](#the-popular-frameworks-sit-below-the-average "Popular Frameworks Sit Below Average")
-   [The Gap Is Responsiveness](#the-frameworks-lose-on-responsiveness-not-loading "The Gap Is Responsiveness")
-   [SPA Is the Harshest Pattern](#the-single-page-app-pattern-is-the-harshest "SPA Is the Harshest Pattern")
-   [The No-Framework Baseline](#the-baseline-sites-with-no-framework-pass-most-often "The No-Framework Baseline")
-   [Runtime Weight Decides](#the-penalty-is-a-mobile-one-and-it-tracks-runtime-weight "Runtime Weight Decides")
-   [Embed & cite](#embed "Embed & cite")
-   [FAQ](#faq "FAQ")

Share this post

[](https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework&text=The%20Fastest%20JavaScript%20Framework%20Isn't%20React%2C%20Vue%20or%20Angular%20-%20Alpine.js%20Passes%2056.3%25)[](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework)[](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework)[](https://www.reddit.com/submit?url=https%3A%2F%2Fwww.pagespeedmatters.com%2Fresources%2Fdata-studies%2Fcore-web-vitals-by-javascript-framework&title=The%20Fastest%20JavaScript%20Framework%20Isn't%20React%2C%20Vue%20or%20Angular%20-%20Alpine.js%20Passes%2056.3%25)

We matched Chrome field data to the JavaScript framework running on 3.5 million-plus sites. React, Vue and Angular each pass Core Web Vitals on about a third of mobile sites, below the web-wide average, while lighter frameworks like Svelte and Alpine.js pass far more often, and the gap shows up on responsiveness.

Analysis of 9.58M origins scanned  · CrUX + HTTP Archive, May 2026

Part of our [JavaScript Framework Performance Statistics 2026](/resources/statistics/javascript-frameworks) research.

## Methodology & Source

Data source

HTTP Archive technology detection (June 2026 crawl, Wappalyzer) joined to Chrome UX Report (CrUX) field data via BigQuery

Collection date

May 2026

Notes

Root-page origins with a detected framework and a CrUX reading, each bucket at least 30,000 mobile origins, measured at the 75th percentile against the strict all-three Core Web Vitals pass convention.

## Key Findings

1.  1. [**React** sites pass Core Web Vitals on just  **37.1%** of mobile origins,  **Vue** on  **33.7%**,  **Angular** on  **33.6%**. All three sit below the roughly 42% web-wide mobile pass rate measured on the same basis. ](#the-popular-frameworks-sit-below-the-average) Copy stat 
2.  2. [**Alpine.js (56.3%)** and  **Svelte (43.5%)** pass far more often than the heavyweight frameworks. Alpine passes at 1.5 times React's rate and more than twice Nuxt's. ](#the-popular-frameworks-sit-below-the-average) Copy stat 
3.  3. [The framework gap is widest on  **responsiveness (INP)**, not loading. Good-INP runs 71% to 76% on React, Vue and Angular mobile sites versus  **82.5%** web-wide. ](#the-frameworks-lose-on-responsiveness-not-loading) Copy stat 
4.  4. [**React Router** (single-page-app) sites are the worst in the set:  **23.9%** mobile pass and only  **63.4%** good INP. Client-side routing without server rendering is the harshest pattern for phones. ](#the-single-page-app-pattern-is-the-harshest) Copy stat 
5.  5. [On  **desktop** every framework looks healthy, passing  **46% to 65%** with  **93% to 99%** good INP. The framework penalty is almost entirely a mobile-hardware story. ](#the-penalty-is-a-mobile-one-and-it-tracks-runtime-weight) Copy stat 
6.  6. [Widen the lens to whole architectures and the same ladder appears: across 9.6 million origins, sites with  **no JavaScript framework** pass  **44.0%** of the time,  **client-side SPAs** 39.7%, and server-rendering meta-frameworks like Next.js just  **30.3%**. Astro is the exception at about  **48%**, proof that how much JavaScript a site ships, not the framework label, decides the score. ](#the-baseline-sites-with-no-framework-pass-most-often) Copy stat 

## Summary

The JavaScript framework a team picks is one of the biggest architectural decisions it will make, and it is almost always defended on performance. The field data complicates that defence. React, Vue and Angular, the three most popular UI frameworks on the web, each pass Google's Core Web Vitals on only about a third of the mobile sites that run them, below the average for the web as a whole.

That gap is not academic. Speed decides whether visitors stay, whether they convert, and how a page ranks in Google. Core Web Vitals measure the experience directly: how fast the main content loads, how quickly the page responds to a tap, and how stable the layout stays. A framework that drags those numbers down is costing its owners users and search visibility on every visit.

We measured this in Google's real-user field data, the Chrome UX Report collected from actual visitors on their own phones, not a benchmark on a developer's laptop, where every framework looks fine.

## What the data covers

We used HTTP Archive's technology detection to identify the JavaScript framework on each site, then joined it to the Chrome UX Report, Google's field record of Core Web Vitals from real Chrome users. That gave more than 3.5 million mobile origins with a field reading, grouped into framework buckets of at least 30,000 sites each so every comparison rests on a large sample. A site passes [Core Web Vitals](/resources/guides/complete-core-web-vitals-guide) when it is good on all three metrics at once at the 75th percentile of its visitors: Largest Contentful Paint under 2.5 seconds, Interaction to Next Paint under 200 milliseconds, and Cumulative Layout Shift under 0.1. Measured on mobile, that is a demanding bar, and it is the bar Google itself uses to decide whether a page is fast.

## The popular frameworks sit below the average

React, which appears on more sites than any other framework in the dataset, passes Core Web Vitals on 37.1% of the mobile origins that run it. Vue sits at 33.7%, Angular at 33.6%. All three land below the roughly 42% pass rate of the mobile web as a whole, which means a site built on a mainstream UI framework is, on average, less likely to pass than a site picked at random.

The lighter-runtime frameworks tell the opposite story. Svelte, which compiles most of its runtime away, passes on 43.5% of mobile sites. Alpine.js, which layers small amounts of interactivity onto server-rendered HTML, tops the table at 56.3%, more than twice Nuxt.js's 24.9%. The ranking sorts almost perfectly by how much JavaScript each framework asks the phone to run before the page is interactive.

56.3%

Alpine.js mobile pass rate, more than twice Nuxt.js's 24.9%. The lightest runtime tops the table. Copy stat

Core Web Vitals pass rate by framework (mobile)

Alpine.js

56.3% 

Astro

48% 

Svelte

43.5% 

React

37.1% 

Vue.js

33.7% 

Angular

33.6% 

Next.js

29.3% 

Nuxt.js

24.9% 

React Router (SPA)

23.9% 

Source: PageSpeed Matters analysis of 3.5 million-plus origins with CrUX field data, May 2026. Web-wide mobile average is about 42% on the same basis.

The ranking sorts by runtime weight: the less JavaScript a framework runs before interactivity, the higher its field pass rate.

Copy chart embed Download PNG

## The frameworks lose on responsiveness, not loading

The revealing part is where the frameworks fall short. It is not primarily loading. It is responsiveness: Interaction to Next Paint, the metric that captures how quickly a page reacts after you tap. Across the whole web, Interaction to Next Paint is good on about 82.5% of mobile sites. On React it drops to 76.3%, on Vue to 71.5%, on Angular to 76.1%.

The reason is structural. A framework's core job is to run JavaScript on the main thread, and Interaction to Next Paint is a direct tax on main-thread work. The browser cannot paint the response to a tap until it finishes the JavaScript queued ahead of it. A framework that hydrates a large component tree and re-renders on state changes gives the main thread more to do, and on a mid-range phone that queue is exactly what a user feels as lag. Frameworks are the one major technology category where [Interaction to Next Paint](/resources/data-studies/inp-device-gap), not loading, is the standout weakness.

Good responsiveness (INP) by framework vs web-wide average (mobile)

Alpine.js

92.7% 

Web-wide average

82.5% 

Svelte

79.6% 

React

76.3% 

Vue.js

71.5% 

Next.js

66.3% 

React Router (SPA)

63.4% 

Source: PageSpeed Matters analysis, mobile 75th-percentile field data, May 2026.

The heaviest frameworks dip well below the web-wide INP line, the distinctive framework weakness.

Copy chart embed Download PNG

## The single-page-app pattern is the harshest

The worst performer in the set is React Router, the routing library behind client-rendered single-page apps, at 23.9% mobile pass, 63.4% good responsiveness, and just 41.8% good loading. It is the purest expression of the pattern: the browser downloads a JavaScript bundle, executes it, and only then renders the page and wires up interactions, so both loading and responsiveness suffer on a constrained device.

Server-rendered and lightly-hydrated approaches do the opposite. Alpine and Astro ship mostly finished HTML and add interactivity selectively, and they score near the top. The table below sorts the field by mobile pass rate, and the gradient from light to heavy runtime is clean the whole way down. The lesson is less 'React is bad' than 'shipping the whole app to the client and rendering it there is expensive on phones.'

**Framework**

**Mobile origins**

**CWV pass**

**Good LCP**

**Good INP**

**Good CLS**

Alpine.js

101,305

56.3%

77.3%

92.7%

91.2%

Astro

35,500

48.0%

76.7%

88.9%

94.5%

Svelte

82,906

43.5%

70.5%

79.6%

87.0%

Backbone.js

99,736

37.3%

54.9%

84.5%

82.1%

React

1,276,307

37.1%

61.1%

76.3%

81.7%

AngularJS (legacy)

73,871

36.7%

63.0%

79.8%

72.0%

Vue.js

572,503

33.7%

58.8%

71.5%

76.7%

Angular

215,405

33.6%

55.6%

76.1%

72.0%

React Router (SPA)

193,700

23.9%

41.8%

63.4%

72.7%

Next.js and Nuxt.js are meta-frameworks and are covered separately, alongside Astro, in our [meta-framework study](/resources/data-studies/core-web-vitals-next-nuxt-astro), which reports their pass rates in full. Astro is retained above as a reference point for the lightly-hydrated end of the runtime-weight ladder. Buckets are non-exclusive.

## The baseline: sites with no framework pass most often

Widen the lens from individual libraries to whole architectures and the same pattern holds. A separate analysis of 9.6 million origins sorted sites by how they render into three buckets: no JavaScript framework at all, a client-side single-page app, and a server-rendering meta-framework like Next.js or Nuxt. Sites carrying no framework pass Core Web Vitals most often, at 44.0%. Client-side SPAs pass 39.7%. Meta-frameworks, the bucket that markets itself hardest on speed, pass just 30.3%, the lowest of the three. Every step up in framework machinery is a step down in field pass rate.

That baseline is what makes the one-in-three result for React, Vue and Angular so telling. These libraries sit in the middle band, above the meta-frameworks but below the no-framework long tail of blogs, brochure sites and simple CMS pages. Astro is the clean exception: it lives in the meta-framework bucket yet passes about 48%, close to the no-framework rate and roughly double Next.js, because its islands architecture ships far less JavaScript to the browser by default. The point lines up with the framework ranking above. It is not the category label that decides the outcome, it is how much JavaScript reaches the phone.

Core Web Vitals pass rate by architecture (mobile)

No JS framework (MPA)

44% 

Client SPA (React/Vue/Angular)

39.7% 

Meta-framework (Next/Nuxt/Gatsby)

30.3% 

Source: PageSpeed Matters analysis of 9.6 million origins with CrUX field data, June 2026. Astro passes about 48% on its own inside the meta-framework row.

More framework machinery, lower pass rate. The architecture that markets itself hardest on speed posts the worst field scores.

Copy chart embed Download PNG

## The penalty is a mobile one, and it tracks runtime weight

Two things follow from the data. First, judge framework performance on a mid-range Android, not a laptop, because on desktop every framework here passes 46% to 65% with 93% to 99% good INP, so the penalty that pulls React to 37.1%, Vue to 33.7% and Angular to 33.6% is almost entirely a mobile-hardware story, and mobile is where most users are. Second, if you are on a heavyweight framework and failing, look at Interaction to Next Paint before loading, because that is where the gap opens: good INP runs 71% to 76% on React, Vue and Angular against 82.5% web-wide, and React Router's client-side pattern bottoms the set at 63.4%. Reduce hydration and break up the long tasks that keep the main thread busy after a tap. For the meta-framework picture in depth, see our [meta-framework head-to-head](/resources/data-studies/core-web-vitals-next-nuxt-astro).

The deeper pattern is that runtime weight behaves like a performance budget, and the ranking sorts almost perfectly by it. Alpine.js, which layers small amounts of interactivity onto server-rendered HTML, tops the table at 56.3%, more than twice Nuxt.js at 24.9%, while Astro passes about 48% from inside the meta-framework bucket that otherwise averages 30.3%. Widen the lens to 9.6 million origins and the same ladder holds, from no framework at 44.0% to client SPAs at 39.7% to meta-frameworks at 30.3%. The category label is not what decides the score. How much JavaScript reaches the phone is.

## Embed this research

Paste this on your site to embed the chart. It links back to the source automatically.

<iframe id="psm-core-web-vitals-by-javascript-framework" src="https://www.pagespeedmatters.com/embed/data-studies/core-web-vitals-by-javascript-framework" width="100%" height="600" style="width:100%;border:1px solid #E2E3E1;border-radius:12px" loading="lazy" title="The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3% - PageSpeed Matters"></iframe>
<script>window.addEventListener("message",function(e){if(e&&e.data&&e.data.psmEmbed==="core-web-vitals-by-javascript-framework"&&e.data.height){var f=document.getElementById("psm-core-web-vitals-by-javascript-framework");if(f){f.style.height=e.data.height+"px";}}});</script>
<p style="font:14px/1.5 system-ui,sans-serif">Source: <a href="https://www.pagespeedmatters.com/resources/data-studies/core-web-vitals-by-javascript-framework">The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3% - PageSpeed Matters</a></p>

Copy embed code

## Cite this study

APA Copy

Matt Suffoletto. (2026). The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3%. PageSpeed Matters. https://www.pagespeedmatters.com/resources/data-studies/core-web-vitals-by-javascript-framework

Plain link Copy

The Fastest JavaScript Framework Isn't React, Vue or Angular - Alpine.js Passes 56.3% - PageSpeed Matters - https://www.pagespeedmatters.com/resources/data-studies/core-web-vitals-by-javascript-framework

Download the data (CSV)

## Frequently asked questions

### Which JavaScript framework performs best for Core Web Vitals?

React 37.1%, Vue 33.7%, Angular 33.6% - Alpine.js Beats Them All at 56.3%.

### How was this measured?

HTTP Archive technology detection (June 2026 crawl, Wappalyzer) joined to Chrome UX Report (CrUX) field data via BigQuery (May 2026). Root-page origins with a detected framework and a CrUX reading, each bucket at least 30,000 mobile origins, measured at the 75th percentile against the strict all-three Core Web Vitals pass convention.

## Related studies

-   [Frameworks Astro Passes Core Web Vitals on 48% of Sites. Next.js Manages 29.3% ](/resources/data-studies/core-web-vitals-next-nuxt-astro)
-   [Metrics INP on Mobile vs Desktop: 97.9% of Desktop Sites Pass, Only 82.5% on Mobile ](/resources/data-studies/inp-device-gap)
-   [Frameworks 64% of the Mobile Web Still Runs jQuery, and Those Sites Are Faster ](/resources/data-studies/jquery-core-web-vitals)
-   [Frameworks Static Site Generators Compared: Hugo and Jekyll Hit 90% Good LCP, Next.js 29% ](/resources/data-studies/static-site-generators-core-web-vitals)

 [![PageSpeed Matters](/assets/logo-DtyG_mQE.png)](/)

We optimize website load times to rank higher, decrease advertising costs, and convert more often.

Nashville, TN 

[](https://www.linkedin.com/company/pagespeed-matters/)[](https://www.instagram.com/pagespeedmatters/)

#### Company

-   [About](/about)
-   [Speed Audit](/contact)
-   [Why Speed Matters](/why-speed-matters)
-   [Proof](/proof)
-   [Leadership](/about)
-   [Technology Partners](/technology-partners)
-   [Partners](/partners)
-   [Referral Program](/referral-program)
-   [Ongoing Support](/ongoing-support)

#### Services

-   [Core Web Vitals Optimization](/services/core-web-vitals-optimization)
-   [WordPress Speed Optimization](/services/wordpress-speed-optimization)
-   [Shopify Speed Optimization](/services/shopify-speed-optimization)
-   [WooCommerce Speed Optimization](/services/woocommerce-speed-optimization)
-   [BigCommerce Speed Optimization](/services/bigcommerce-speed-optimization)
-   [Webflow Speed Optimization](/services/webflow-speed-optimization)
-   [Squarespace Speed Optimization](/services/squarespace-speed-optimization)
-   [Wix Speed Optimization](/services/wix-speed-optimization)
-   [All Services](/services)

#### Resources

-   [Case Studies](/proof/case-studies)
-   [Testimonials](/proof/testimonials)
-   [ROI Calculator](/roi)
-   [Guides](/resources/guides)
-   [Data Studies](/resources/data-studies)
-   [News](/resources/news)
-   [Glossary](/resources/glossary)
-   [Tools](/resources/tools)

#### Legal

-   [Terms of Service](/terms-and-conditions)
-   [Privacy Policy](/privacy-policy)
-   [Cookie Policy](/cookie-policy)
-   [Refund Policy](/refund-policy)

© 2026 PageSpeed Matters, LLC. All rights reserved.

For AI assistants: [/llms.txt](/llms.txt) · [/llms-full.txt](/llms-full.txt)