Shopify apps are hidden latency
Every Shopify app adds JavaScript. Most add API calls. Some add third-party tracking. The cumulative effect is a site that loads fast but responds slowly.
A Shopify store launches with 14 apps. The theme is fast. Lighthouse scores are good. Six months later, conversion rate has declined and nobody can explain why.
The mechanism is cumulative script injection.
Each app adds JavaScript to the page. Loyalty widget — 180KB. Review aggregator — 220KB. Upsell modal — 95KB. Wishlist — 140KB. Analytics overlay — 60KB. Most apps also inject their own fonts, stylesheets, and tracking pixels.
Individually, each addition is small. Collectively, the page now loads 1.2MB of third-party JavaScript that executes after initial render. Lighthouse doesn't penalise most of this because it measures initial paint, not post-load execution weight.
But the user experiences all of it. Scroll jank appears because layout shifts occur as widgets render asynchronously. Interaction latency increases because the main thread is occupied parsing and executing app scripts. Cart operations slow down because multiple apps hook into the same AJAX events.
The failure mode is invisible in standard testing because it's emergent. No single app causes the problem. The interaction between fifteen apps, each making independent API calls and manipulating the DOM, creates a performance ceiling that no individual optimisation can fix.
The fix isn't removing all apps. It's auditing the actual execution cost of each one against its commercial contribution. In most stores, 3-4 apps generate meaningful revenue impact. The rest are legacy installs that were never removed and are quietly degrading the experience.
Removing an app that contributes nothing commercially but adds 200ms of interaction latency is the highest-ROI performance work most Shopify stores can do. It requires no code. Just a decision.