Shopify Page Builder Speed Test: Methodology & RUM Best Practice

Published
•
Last updated
•
Expert reviewed
•
5 min read

Key takeaways

  • In our analysis of 500+ Shopify stores, sites using app-rendered page builders were consistently slower than equivalent sites built on native theme code. The gap is structural, not configuration.
  • A common mistake stores make when testing speed is trusting a single Lighthouse run. Lighthouse is one page load in a synthetic environment; real users hit your site with different networks, devices, and pages.
  • Use real-user monitoring (RUM) at the 75th percentile to measure what customers actually feel. That is also what Google uses for ranking.
  • Synthetic testing (Lighthouse, WebPageTest) is fine as a relative comparison between tools. It is not a reliable measure of your live UX.

The fastest Shopify page builders are the ones that output native theme code, because they add no builder runtime to the page; app-rendered builders all carry a speed tax from their per-visit app runtime. In our analysis of 500+ Shopify stores, sites using app-rendered page builders were consistently slower than equivalent sites built on native theme code. A page builder that slows your store down costs you conversions, ad ROAS, and SEO rankings simultaneously. This guide explains what actually causes the slowdown, how to measure it honestly with real-user data, and a template you can copy-paste to test each tool yourself.

Why you can trust us

We have over 15 years of development experience and have worked in the Shopify ecosystem for more than four years. We have measured performance across 500+ Shopify stores running Fudge and other tools, and have rebuilt themes specifically to recover speed lost to apps. We also build Fudge, the AI operator for Shopify stores, with a 4.9 rating on the Shopify App Store. Its page builder writes pages directly into your theme rather than adding a runtime — a design choice driven by exactly this issue.


What actually slows a Shopify store when you install a page builder

There are four contributors. They compound.

1. The builder’s runtime JavaScript

Most drag-and-drop builders inject a JavaScript bundle on every visit to a page they render. That bundle handles layout hydration, lazy-loaded blocks, animations, and the editor preview link. It runs even when the customer is just browsing.

The weight varies. Some tools have pared their runtime down. Others ship 200KB+ of JavaScript that the customer parses before the page is interactive. The difference shows up in Total Blocking Time and Largest Contentful Paint.

2. Render-blocking CSS injected into the head

Page builders frequently inject a stylesheet into the document head before the page renders. That stylesheet has to download and parse before the browser starts painting. On slow networks this is a major contributor to a slow LCP.

3. Large hero images served without modern formats

Not the builder’s fault per se — but page-builder templates often default to oversized hero images. The customer downloads a 1.5MB hero on a mobile connection. Fix this by using WebP/AVIF, correct sizes, and proper loading attributes.

4. Stacked apps each adding their own footprint

A page-builder app + a reviews app + a chat widget + an upsell app adds up to 1-2MB of JavaScript before the page does anything useful. The page builder is rarely the only culprit, but it’s usually one of the heaviest. Audit everything.


What “no runtime” means in practice

A page builder that outputs native theme code writes Liquid + CSS + HTML into your theme files and adds nothing else. When the customer visits, the server renders the page exactly like any other Shopify page. No app SDK, no builder runtime, no runtime layout.

Fudge works this way: you describe the page, Fudge writes it into your theme, and the published page has the same JavaScript footprint as a page your developer hand-coded. The Lighthouse score is bounded by your theme, your images, and your other apps — not by Fudge. When you ask, Fudge can also run a speed audit on the rest of the store and draft the fixes in your theme for you to approve.

This is the structural advantage of the category. It’s not that AI builders are inherently faster; it’s that builders writing native code don’t add a runtime to slow them down.

Want pages with no runtime on every visit?
Start free trial

How to measure Shopify speed honestly

Most “speed test” articles run a single Lighthouse audit and report the score. That is not enough. The number you get from one Lighthouse run is not what your customers experience — and it is not what Google uses to rank your store.

The techniques below are listed in order of usefulness for actually assessing speed’s impact on UX, SEO traffic, and conversions.

1. Real-user data (RUM) — what we and Google use

The most reliable way to measure Shopify speed is the data collected from real customers. This is what Google uses in its ranking systems via Core Web Vitals. RUM data captures the confounding factors that synthetic tests cannot: different network speeds, screen sizes, device capabilities, geographic regions, and the actual mix of pages customers visit.

Because a single user’s experience is too noisy to draw conclusions from, you aggregate. We — and Google — prefer the 75th percentile (P75) of every Core Web Vital. So an LCP of 4.5s at P75 means 75% of your users experience that LCP or better. P75 is the right percentile because it captures the experience of the vast majority of users while mitigating extreme outliers (a customer on a 2G connection in a tunnel doesn’t define your store’s UX).

If your P75 metric is good, you know most users have a good experience.

Where to find this data:

  • Your own RUM script — for example Google’s web-vitals library, reporting P75 by template and device
  • Chrome User Experience Report (CrUX) — Google’s public RUM dataset, lags real-time by ~28 days
  • Google Search Console — Core Web Vitals report, fed from CrUX

If you make a speed change today, your own RUM script shows it as soon as new traffic arrives; it appears in CrUX and Search Console within 28 days.

2. Synthetic testing (Lighthouse, WebPageTest)

Synthetic testing means running a page through a controlled environment that simulates a user. The Lighthouse audit in PageSpeed Insights is the most common example. It is useful, but always differs from real-user data. Run a Lighthouse audit on Amazon, eBay, or Walmart and compare to their CrUX numbers — the gap is large.

Three things to remember when reading synthetic results:

Synthetic is one page load, RUM is thousands. A single Lighthouse run can be 30%+ off the median of three runs. Always take the median of at least three runs, on the same network conditions, at the same time of day.

Total Blocking Time can mislead. Tools that defer non-critical scripts to load after the main content (which is the right pattern for UX) often score a higher TBT in Lighthouse than tools that block on those scripts. The Lighthouse number can go up while the actual UX improves. Cross-check with RUM before reacting to a TBT regression.

LCP measurement caveats. Lighthouse and WebPageTest measure the largest paint of the entire page load. Google’s RUM measurement uses the largest paint before the user interacts with the page. On a product page, that often means the product image — but WebPageTest will sometimes measure how long it takes for an exit-intent popup to render. Configure your synthetic tool to stop measuring at first interaction, or you will overstate the problem.

When forced to choose a synthetic tool, WebPageTest is the gold standard in the web-performance community because it lets you finely tune the environment to match a P75 user (network throttling, device emulation, geographic location). We use it ourselves when comparing the experience of a site with and without Fudge before real-user data is available.

3. The order of operations

  1. Connect a RUM tool (the web-vitals library, a RUM service, or pull from CrUX)
  2. Establish a 28-day P75 baseline across your top templates and device classes
  3. Make one change
  4. Watch P75 in RUM. Use Lighthouse only for relative comparison between configurations, never as the source of truth

If you don’t have RUM yet, start there. Synthetic comparisons without RUM context are guesses.


A copy-paste speed test template

Use this when you need to compare page builders on a development store before committing. Pair the synthetic median with at least a week of RUM data once you go live.

BuilderBaseline LCPBuilder Page LCPΔ LCPINPCLSJS AddedEditable After Uninstall?Notes
FudgeYesNative theme code; no runtime
PageFlyNoApp-rendered runtime
GemPagesNoApp-rendered runtime
ShogunNoApp-rendered runtime
ReploNoApp-rendered runtime
InstantYesNative Liquid from a drag-and-drop editor

How to fill it in:

  1. Install a fresh copy of Horizon (or Dawn) on a development store. Run Lighthouse Mobile 3× on the homepage; record the median LCP as your baseline.
  2. Install one builder. Publish a representative page (hero, three image+text blocks, testimonial slider, FAQ, CTA). Run Lighthouse Mobile 3×; record the median.
  3. The Δ LCP is your synthetic estimate of that builder’s cost. Note: this is one page load. Confirm with RUM after a week of live traffic.
  4. Uninstall the builder fully — including any theme.liquid script tags it left behind — before testing the next.
  5. Use Chrome DevTools → Coverage tab to count “JS Added” (unused vs total) for each builder.

The “Editable After Uninstall” column is the bit no Lighthouse run can show you. Test it: build a page, uninstall the app, see what’s left. Native theme code stays and stays editable; app-rendered output breaks or freezes.


What “good” looks like

Target numbers for a Shopify page on mobile, measured at P75:

  • LCP (Largest Contentful Paint): under 2.5s
  • INP (Interaction to Next Paint): under 200ms
  • CLS (Cumulative Layout Shift): under 0.1
  • Total page weight: under 1.5MB (excluding video)

The first three are Google’s Core Web Vitals thresholds, measured at the 75th percentile of page loads across mobile and desktop (web.dev, 2024); the page-weight figure is our own guideline. Google has confirmed Core Web Vitals are used by its ranking systems, and missing them can cost rankings against otherwise similar pages.

The easiest way to hit them consistently across every page you publish is to use a builder that adds no runtime, which today means a builder that writes native theme code rather than an app rendering pages through its own runtime. The gap between app-rendered and native-code builders isn’t a configuration problem; it’s the architecture.

Categories that have a structural disadvantage on speed

Without naming specific tools:

  • App-rendered pages with iframe embeds. The iframe alone costs you LCP and complicates CLS.
  • Builders that inject a global stylesheet sitewide, not just on builder-rendered pages. Every page in the store pays the cost, even the ones the builder didn’t touch.
  • Builders with heavy animation runtimes. Smooth scroll, parallax, and entrance animations cost INP.
  • Builders that lazy-load layout (not just images). Layout that depends on JavaScript before paint hurts LCP and CLS together.

Tools that ship lean runtimes can still be acceptable — the cost is real but bounded. Tools that ship heavy runtimes plus heavy templates plus iframes compound the cost.

For the wider comparison, see our best Shopify page builders ranking and our what is a Shopify page builder explainer.


A short note on hosting and CDN

Shopify hosts every store on its own CDN with edge caching built in. Page-builder slowness is rarely a hosting problem — it’s almost always a payload problem. Improving images, removing unused JavaScript, and consolidating apps fixes more than any hosting change.

Where the category is going

To restate our bias: we built Fudge, which writes pages directly into your theme rather than rendering them through an app runtime. We chose that design because the speed tax of the runtime model isn’t a fixable bug; it’s the architecture. App-rendered tools can pare their runtimes down, but they can’t ship zero. Builders that output native theme code can.

For most stores in 2026 — especially those running paid traffic where every 100ms of LCP costs ROAS — the question stops being “which page builder is fastest” and starts being “which category has no structural ceiling on speed.” That’s a different choice than the one the category was framed around a year ago.


FAQ

Which Shopify page builder is the fastest?

The fastest are the ones that output native theme code with no runtime, because their pages render with no app-imposed overhead. In our analysis of 500+ Shopify stores, sites using app-rendered builders were consistently slower than sites built on native theme code. Verify with your own RUM data once you go live; Lighthouse alone is not enough.

Should I trust a single Lighthouse run?

No. Lighthouse is one page load in a controlled environment; real users hit your site under thousands of different conditions. Use the median of three Lighthouse runs as a relative comparison between configurations, then validate with at least a week of real-user data at the 75th percentile.

What is RUM and why does it matter?

Real User Monitoring is data collected from your actual customers' browsers, aggregated to the 75th percentile. It is what Google uses for ranking via Core Web Vitals. Synthetic tools (Lighthouse, WebPageTest) approximate what one user might experience; RUM tells you what most customers actually feel.

Will a page builder hurt my Shopify SEO?

It can, if it adds enough JavaScript to push your P75 LCP and INP outside Core Web Vitals thresholds. Failing Core Web Vitals can cost rankings against otherwise similar pages. Test on mobile RUM, not desktop Lighthouse.

Does Shopify's built-in CDN make page-builder speed irrelevant?

No. The CDN delivers files fast, but the customer's browser still has to parse and execute every JavaScript bundle the builder loads. Heavy runtime = slow page, no matter how fast the CDN is.

How do I test a page builder without installing it on my live store?

Use a development store. Install Shopify's free Horizon theme, install the builder, publish a representative page, run Lighthouse 3× on mobile, and take the median. Uninstall before testing the next. Once a builder is on your live store for a week, the RUM data is the source of truth; synthetic was just the screening pass.

Should I uninstall page-builder apps I'm not using to recover speed?

Yes — and check the theme for leftover snippets after uninstalling. Some builders leave script tags or CSS imports in theme.liquid even after the app is gone. Search your theme for the builder's domain or asset names. Fudge can also find leftover app code in your theme and draft a clean-up for you to approve.

Jacques's signature
Want page-builder output that adds zero runtime?

Related posts

Jacques Blom
Jacques Blom
CTO at Fudge.
Jacques is CTO at Fudge and has been coding since age 13 and building on Shopify for 15+ years. He previously led engineering at several YC-backed startups before joining Fudge, where he architected the AI operator that has shipped 640,000+ pages and sections for 3,100+ Shopify stores. He writes about Shopify performance, theme architecture, and applying LLMs safely to production Liquid code.