Sudden LCP Spike in Shopify Admin? How to Diagnose Mystery Performance Jumps

Ever had that "wait, what just happened?" moment when checking your Shopify app's performance metrics? It's a common developer dilemma, and recently, our community saw a fantastic discussion around a particularly puzzling case: a sudden, significant spike in Admin LCP (Largest Contentful Paint) across multiple Shopify apps, seemingly overnight, with no corresponding changes from the app developers themselves.

The Head-Scratcher: Dashboard Spikes vs. Stable Internal Metrics

Our community member, jaymitBeladiya, kicked off the thread with a classic head-scratcher. They noticed their Admin LCP (P75) shot up dramatically, from around 2.0 seconds to 3.0–3.7 seconds, and later even higher to 7–9 seconds, starting October 27. The kicker? They hadn't deployed any changes to their apps. What made it even more suspicious was that their own internal

web-vitals
library, collecting data within the same app iframe, showed stable LCP numbers. To add another layer of mystery, they also observed a drop in CLS (Cumulative Layout Shift) in the Shopify Dev Dashboard around the same time. This screamed "measurement methodology change" rather than a real performance regression.

Jaymit was naturally looking for answers from the Shopify team: Were there changes to Admin Web Vitals collection,

App Bridge
, or how LCP and CLS are measured and reported?

Community Wisdom: Unpacking the Mystery

This is where our amazing community stepped in, offering some seriously sharp insights and actionable advice. The consensus? We needed to differentiate between whether "the measurement changed" or "real users got slower." Here's a synthesis of the best approaches shared:

1. Double-Check Your Data Sources: App Bridge vs. Your Collector

This was a recurring theme. Rio from Expatify and paulvatiche both stressed the importance of comparing your independent

web-vitals
collector with
App Bridge
's own
shopify.webVitals.onReport
output. This is crucial because it helps pinpoint where the discrepancy truly lies.

  • Action: Capture the output from
    shopify.webVitals.onReport
    while the issue is ongoing.
  • Key Detail: Paul highlighted capturing the
    version
    field on each metric. This tells you the specific
    App Bridge
    build that produced the measurement. Log this alongside the metric ID, name, value, collection time, and app route.
  • Why it matters: If
    App Bridge
    reports the high LCP while your collector stays flat, you have solid evidence for Shopify support – paired measurements from the same page load and the exact
    App Bridge
    build version. If both local collectors are flat, it points more towards the dashboard's reporting or aggregation being the culprit.

2. Pinpoint the LCP Element & Load Type

Sometimes, what counts as the LCP element can tell you a lot.

  • Action: Log which element counts as the LCP in the slow sessions from your own collector.
  • Why it matters: If it's an unexpected element (like a skeleton or a banner), the cause might be related to when content becomes visible, not necessarily slower code execution. Lauren Scott also suggested logging its load timing. If it's an image or script your app loads late, that is a real regression, even if your P75 looks flat.
  • Also Check: Rio suggested seeing if the jump comes from first loads or repeat loads in the same session. Admin-side changes often show up as worse first-load numbers while repeat loads stay flat.

3. Mind the Measurement Start Line: Iframe vs. Parent Admin

This is a subtle but critical point raised by Lauren. Where each collector starts its timer can significantly affect the reported numbers.

  • Action: Understand that
    web-vitals
    inside the iframe measures from that document's own navigation. A measurement taken from the parent admin can include the admin shell and the
    App Bridge
    handshake.
  • Why it matters: If the start points differ, the two series won't match even if nothing changed on your side. This is vital context for Shopify support.

4. Route-Level Deep Dive

Is the problem global or localized?

  • Action: Pull the Dev Dashboard LCP for the affected period (e.g., Oct 20 to Nov 3) and break it down by page or route.
  • Why it matters: If the jump shows on one route only, the cause is likely specific to that screen rather than a wholesale app issue or platform-wide change.

5. Call for Community Confirmation

There's strength in numbers!

  • Action: Check whether other app developers saw a similar jump on the same date.
  • Why it matters: If several did, that's a strong platform signal, reinforcing the idea that it's not just your app. Jaymit's original post ended by asking this very question, showing great foresight.

Bringing it All to Shopify Support

Once you've gathered your evidence, the next step is to present it clearly to Shopify Partner support. Lauren Scott provided an excellent roadmap for this:

  1. Send them the spike date.
  2. Provide the Dev Dashboard figures.
  3. Explain your collector's timing start point.
  4. Include the LCP element data you've collected.
  5. Crucially: Ask them to confirm in writing whether the metric definition or aggregation changed on the affected dates (e.g., Oct 26-27).
  6. Retain that reply: This written confirmation is your leverage if you need to ask for a recalculation of affected metrics later.

This discussion really highlights the value of the Shopify community. When you hit a wall, chances are someone else has seen something similar or can offer a fresh perspective. By methodically gathering data – comparing internal metrics with

App Bridge
's output, understanding measurement start points, and pinpointing the LCP element – you can build a strong case to either fix a real regression or get clarity from Shopify on potential platform-level reporting changes. It's all about being prepared and knowing what questions to ask!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools