Shopify script loading attributes and the Core Web Vitals
29.9% of audited sites (2,463) still execute render-blocking synchronous scripts and drop to 92% good LCP (1.5s median), compared to 95% good LCP on sites using async (99.9%) and 95% on ES modules (99.5%).
99.5% of Shopify sites use ES module scripts script loading strategy, and 95% of those sites have a good LCP, against 95% of all Shopify sites.
99.6% of Shopify sites use deferred scripts script loading strategy, and 93% of those sites have a good INP, against 93% of all Shopify sites.
Core Web Vitals pass rate
Sites with ES module scripts script loading strategy have a good LCP most often: 95%, against 95% of all Shopify sites. Sites with dynamically injected scripts script loading have it least often, at 92%.
Sites with deferred scripts script loading strategy have a good INP most often: 93%, against 93% of all Shopify sites. Sites with dynamically injected scripts script loading have it least often, at 91%.
Script loading strategy usage
Inline scripts is the most used: 99.9% of Shopify sites. ES module scripts is 99.5% of Shopify sites.
LCP phase breakdown by script loading attribute
Across the four LCP sub-parts in Chrome's field data, the largest gap between ES module scripts and dynamically injected scripts sits in resource load delay: 590 ms median for ES module scripts against 690 ms for dynamically injected scripts. Overall median field LCP is 1.4s for ES module scripts (TTFB 401 ms, load delay 590 ms, load duration 206 ms, render delay 312 ms) versus 1.5s for dynamically injected scripts.
Across the four LCP sub-parts in Chrome's field data, the largest gap between ES module scripts and dynamically injected scripts sits in resource load delay: 590 ms median for ES module scripts against 690 ms for dynamically injected scripts. Overall median field LCP is 1.4s for ES module scripts (TTFB 401 ms, load delay 590 ms, load duration 206 ms, render delay 312 ms) versus 1.5s for dynamically injected scripts.
Script loading strategy per framework
Vue sets the script loading strategy to ES module scripts on 100% of its sites, and 94% of Vue sites have a good LCP, against 95% of all sites. jQuery sets the script loading strategy to inline scripts on 100% of its sites, and 93% of jQuery sites have a good LCP.
Vue sets the script loading strategy to ES module scripts on 100% of its sites, and 91% of Vue sites have a good INP, against 93% of all sites. jQuery sets the script loading strategy to inline scripts on 100% of its sites, and 92% of jQuery sites have a good INP.
Script loading attributes or the framework
Does the framework explain the script loading strategy difference?
On jQuery, 93% of sites with ES module scripts script loading strategy have a good LCP, against 93% of jQuery sites with inline scripts. Within jQuery, sites with ES module scripts and inline scripts have a good LCP about equally often. On Vue, 94% of sites with ES module scripts script loading strategy have a good LCP, against 94% of Vue sites with inline scripts. Within Vue, sites with ES module scripts and inline scripts have a good LCP about equally often.
On jQuery, 92% of sites with deferred scripts script loading strategy have a good INP, against 92% of jQuery sites with inline scripts. Within jQuery, sites with deferred scripts and inline scripts have a good INP about equally often. On Vue, 91% of sites with deferred scripts script loading strategy have a good INP, against 91% of Vue sites with inline scripts. Within Vue, sites with deferred scripts and inline scripts have a good INP about equally often.
How synchronous blocking <script> tags halt the HTML parser before LCP
When the HTML parser hits a synchronous <script src> tag without async, defer, or type="module", it must pause DOM construction, wait for the network download, and execute the script before painting. Across 2,463 sites (29.9%) with render-blocking scripts, good LCP drops to 92% (1.5s median). Sites loading scripts with async (99.9%), defer (99.6%), or type="module" (99.5%) reach 95%, 95%, and 95% good LCP.
Understanding script loading attributes
Add defer or type="module" to all first-party application scripts and async to independent third-party tags so zero synchronous <script src> tags block the HTML parser in <head>. Across all audited sites, 29.9% ship render-blocking scripts (92% good LCP, 1.5s median).
By Arjen Karel · 8,246 crawled Shopify sites (5,825 with phone Chrome field data, 8,243 sites with script loading strategy, October 2026). How we measured.