Remove or optimize apps causing render-blocking issues
Third-party apps that inject render-blocking JavaScript or CSS can significantly delay page rendering, increasing First Contentful Paint and Largest Contentful Paint times. Identifying and optimizing or removing these apps improves the initial page load performance.
Render-blocking resources prevent the browser from displaying content until the resource has been downloaded, parsed, and executed. Each render-blocking app adds latency to the critical rendering path, delaying when customers see meaningful content.
Third-party apps are common culprits because:
- Synchronous script loading: Many apps inject
<script>tags withoutasyncordeferattributes. - Critical CSS bloat: Apps often add CSS that blocks rendering even if it's not immediately visible.
- Multiple HTTP requests: Each app typically requires separate resource requests.
- Unoptimized delivery: Third-party resources might not be served from optimized CDNs.
- Cascading dependencies: Apps can load additional resources synchronously.
Third-party code is a large part of that latency. The Web Almanac 2022 third parties chapter reports an average median blocking time of 1.4 seconds across the 10 most popular third parties, so a page that loads several of them can spend seconds blocked before it paints.
Anchor to Audit installed appsAudit installed apps
Identify render-blocking resources:
-
Run a Lighthouse audit:
- Open Chrome DevTools.
- Navigate to the Lighthouse tab.
- Run the Performance audit.
- Check Eliminate render-blocking resources.
- Note all third-party scripts and stylesheets.
-
Use WebPageTest:
- Test the page at
https://webpagetest.org. - Review the waterfall chart.
- Identify resources that block rendering (red bars).
- Note third-party domains.
- Test the page at
-
Check the Network panel:
- Open the Chrome DevTools Network tab.
- Reload the page.
- Filter by JS and CSS.
- Sort by Waterfall to see blocking resources.
- Identify third-party domains from Shopify app vendors.
Common render-blocking app types:
- Chat widgets: Intercom, Drift, Zendesk Chat.
- Review apps: Yotpo, Judge.me, Loox.
- Email capture: Klaviyo, Privy, Justuno.
- Analytics: Google Analytics, Facebook Pixel, Hotjar.
- A/B testing: Optimizely, VWO.
- Recommendation engines: LimeSpot, Wiser, Nosto.
Anchor to Evaluate app necessityEvaluate app necessity
Decision framework:
For each render-blocking app, ask:
- Is this app actively used? Check usage metrics in the app dashboard, review the last configuration date, and confirm the business value.
- Does it need to load on every page? Can it be limited to specific pages or loaded conditionally?
- Is there a lighter alternative? Consider native Shopify features, theme-integrated solutions, or more performant apps.
- Can it be deferred? Does it need to render immediately, or can it load after the initial paint?
Priority for removal:
-
High priority (remove immediately):
- Unused or rarely used apps.
- Apps with duplicate functionality.
- Apps with native Shopify alternatives.
- Apps causing 500 ms or more of blocking time.
-
Medium priority (optimize or replace):
- Apps used occasionally.
- Apps with async loading options.
- Apps that can be conditionally loaded.
-
Low priority (optimize only):
- Business-critical apps.
- Apps with no alternatives.
- Apps with minimal blocking time (under 100 ms).
Anchor to Optimize remaining appsOptimize remaining apps
Defer non-critical apps:
Conditional loading by page type:
Lazy load apps outside the initial viewport:
Use the facade pattern for heavy widgets:
Anchor to Replace with native alternativesReplace with native alternatives
Review apps to standard review metafields:
If an app writes to the standard reviews metafield namespace, then you can render the rating and review count from Liquid, so the summary displays without waiting for the app's script. reviews.rating is a rating type metafield, so its value is an object: read the number from .value.rating and the scale from .value.scale_max. Outputting the metafield directly renders the raw stored JSON.
Email capture to a native email signup form:
Analytics to Shopify Analytics:
Use Shopify's native analytics instead of multiple third-party tracking scripts. Shopify Analytics provides traffic sources, conversion tracking, customer behavior, and sales attribution.
For advanced needs, use Google Analytics 4 with async loading:
Anchor to ExamplesExamples
Anchor to Example 1: Remove an unused review appExample 1: Remove an unused review app
Before (render-blocking):
After (removed, using native reviews):
Anchor to Example 2: Defer a chat widgetExample 2: Defer a chat widget
Before (render-blocking):
After (deferred with facade):
Anchor to Example 3: Conditional app loadingExample 3: Conditional app loading
Before (loads everywhere):
After (product pages only):
Anchor to TestingTesting
-
Lighthouse audit:
- Run before and after optimization.
- Check Eliminate render-blocking resources.
- Verify FCP and LCP improvements.
- Target: Remove all non-critical blocking resources.
-
WebPageTest:
- Compare waterfall charts before and after.
- Check the Start Render time improvement.
- Verify that no new blocking resources were introduced.
- Target: 500 ms or more of improvement in Start Render.
-
Chrome DevTools Coverage:
- Open the Coverage tab (Cmd+Shift+P, then
Coverage). - Record a page load.
- Identify unused CSS and JavaScript from apps.
- Verify that removed apps no longer appear.
- Open the Coverage tab (Cmd+Shift+P, then
-
Real user monitoring:
- Monitor FCP and LCP in Shopify Analytics.
- Track before and after metrics for two or more weeks.
- Check the conversion rate impact.
- Target: 10 to 20 percent improvement in Core Web Vitals.
-
Functionality testing:
- Test that all remaining apps work correctly.
- Verify that deferred apps load properly.
- Check that conditional loading triggers correctly.
- Test on multiple devices and browsers.
-
Business metrics:
- Monitor app-specific metrics, such as reviews and chat.
- Verify no drop in app engagement.
- Check that conversion rates remain stable or improve.
- Track customer feedback.
Anchor to ReferencesReferences
- Shopify app performance best practices.
- Eliminate render-blocking resources on web.dev.
- Chrome DevTools Coverage tool.
- HTTP Archive: third-party impact.
- Managing apps in the Shopify Help Center.