JS framework

The JavaScript framework detected on the site.

Field data PhoneDesktopAll Scope All sites Q2 2026 edition · Desktop field outcomes
Metric LCP INP CLS
1

At a glance the headline numbers for JS framework

The JavaScript framework detected on the site.

11
Categories
In the distribution
82.0%
Fleet share
Top: jquery
100.0%
Sites with any
Of jquery

jQuery appears on 82.0% of sites.

The State of Web Vitals · Q2 2026 · 189,915 sites · desktop field datacorewebvitals.io/state-of-cwv
2

The JS framework mix who uses what, and how fast each group loads

VariantShare of sitesMedian
Jquery
82%
Vue
7%
React
5%
Angular
2%
Alpine
2%
Next js
1%
Nuxt
1%
Svelte
0%
Htmx
0%
Gatsby
0%
Remix
0%

JS framework. On the fleet: 82.0% jquery, 6.8% vue, 5.4% react. 100.0% of sites use at least one jquery.

The State of Web Vitals · Q2 2026 · 189,915 sites · desktop field datacorewebvitals.io/state-of-cwv
3

Why this matters for the Core Web Vitals, and where to start fixing it

A JavaScript framework moves work onto the visitor's main thread. Hydration is the toll: the server-rendered HTML arrives fast, then the framework rebuilds its component tree in the browser before interactions fully work. That window is where frameworks pay INP.

The rendering mode decides the bill. Static or server-rendered output with islands of interactivity costs little. Full client-side rendering makes every visitor's device build the page from scratch. The framework pages compare them on field data.

Related signals Consent platforms → Ad networks on page → Third-party categories → Optimization plugins → Chrome field data from 189,915 sites, representing millions of real page loads · How we measured
Live queries (2) — admin only
Query #1: 38.2 ms
SELECT 1 AS ok FROM site_metric_bags LIMIT 0;
Query #2: 259.1 ms
WITH flat AS (
                SELECT b.cat, b.n, b.size, s.crux."desktop".lcp AS cwv_val
                FROM site_metric_bags b
                JOIN sites s ON s.origin = b.origin
                WHERE b.path = 'stack.framework'
                  AND b.cat IS NOT NULL
            ),
            totals AS (
                SELECT cat,
                    SUM(n) AS fleet_n,
                    SUM(size) AS fleet_size,
                    COUNT(*) FILTER (WHERE n IS NOT NULL) AS sample,
                    COUNT(*) FILTER (WHERE n > 0) AS with_any,
                    quantile_disc(n, 0.95) AS p95,
                    COUNT(*) AS n_rows
                FROM flat
                GROUP BY cat
                
            ),
            widths AS (
                SELECT *,
                    GREATEST(1, CAST(round(COALESCE(p95, 0)) AS INTEGER)) AS cap,
                    LEAST(GREATEST(1, CAST(round(COALESCE(p95, 0)) AS INTEGER)), 12 - 1) AS regular_buckets
                FROM totals
            ),
            widths2 AS (
                SELECT *,
                    GREATEST(1, CAST(ceil(cap * 1.0 / regular_buckets) AS INTEGER)) AS width
                FROM widths
            ),
            binned AS (
                SELECT f.cat, f.cwv_val, w.fleet_n, w.fleet_size, w.sample, w.with_any, w.width, w.regular_buckets,
                    CASE WHEN f.n IS NULL THEN NULL
                        ELSE LEAST(CAST(FLOOR(f.n * 1.0 / w.width) AS INTEGER), w.regular_buckets)
                    END AS bucket_idx
                FROM flat f
                JOIN widths2 w ON f.cat = w.cat
            )
            SELECT cat, fleet_n, fleet_size, sample, with_any, width, regular_buckets,
                bucket_idx,
                COUNT(*) AS n,
                quantile_disc(cwv_val, 0.5) AS median,
                COUNT(*) FILTER (WHERE cwv_val IS NOT NULL) AS total_cwv,
                COUNT(*) FILTER (WHERE cwv_val IS NOT NULL AND cwv_val <= 2500) AS good
            FROM binned
            WHERE bucket_idx IS NOT NULL
            GROUP BY cat, fleet_n, fleet_size, sample, with_any, width, regular_buckets, bucket_idx
            ORDER BY cat, bucket_idx;
JSON file lookups (4)
20260625/meta.json 0.04 ms
20260625/types.json 0.92 ms
20260625/loaf-scripts.json 0.46 ms
20260625/menu.json 0.36 ms