SolisReach
← Journal
Web Performance6 min read

Why third-party scripts are the most common performance killer we find

Written by the SolisReach team

If we had to name the single most common cause of a slow site across every audit we've run, it wouldn't be unoptimized images or bloated CSS. It would be third-party scripts: chat widgets, analytics tools, ad pixels, A/B testing platforms, all installed over time by different people for different reasons, and almost never audited as a group once they're in place.

Each one seems harmless in isolation

A single chat widget script rarely feels like a problem when it's added. The issue compounds because nobody's tracking the total: we routinely find sites running eight to twelve third-party scripts, each added independently by marketing, sales, or a previous agency, none of them ever removed even after the tool stopped being used or was replaced by something else.

The real cost is what they block, not their file size

Script file size matters less than execution timing. A script loaded synchronously in the document head blocks the browser from doing anything else until it finishes downloading and executing, even if the script itself is small. That's the actual mechanism behind a page that looks blank for a beat longer than it should, and it's why two sites with similar total page weight can feel very different in practice.

The fix that takes an afternoon

Most of this is fixable without a rebuild: defer non-critical scripts until after the main content renders, load chat widgets on user interaction rather than on page load, and audit for tools nobody's used in months. We ran this exact pass for a client last year and cut their mobile load time by nearly a full second just by removing four dead scripts and deferring three more, no code changes to the actual site at all.

How we run the audit itself

We open the network tab in browser developer tools, sort by load time, and identify every third-party domain the page is calling out to. For each one, we ask whether the tool is actually in active use, whether it's blocking render, and whether it could load later without affecting functionality. Most audits turn up at least one or two scripts nobody on the client's team even remembered adding.

Why this gets skipped anyway

Nobody owns third-party scripts as a category. Marketing owns the pixel, sales owns the chat tool, analytics owns the tag manager, and none of them are checking whether the others' tools are still needed or how they're all loading together. Making one person responsible for a quarterly script audit is a small process change that pays for itself almost immediately in load time.

A checklist we now run on every new client site

Before any performance work starts, we list every third-party script currently loading, note who requested it and when, and mark whether anyone can confirm it's still needed. Scripts nobody can account for are the first candidates for removal, pending confirmation from the relevant team that nothing breaks without them.

The chat widget problem specifically

Chat widgets are consistently the single heaviest third-party script we find, sometimes loading their own analytics, their own fonts, and a full messaging UI regardless of whether a visitor ever interacts with it. Loading it only after a short delay or on user interaction routinely recovers meaningful load time without losing any real chat functionality.

Chat widgets are consistently the single heaviest third-party script we find, sometimes loading their own analytics, their own fonts, and a full messaging UI regardless of whether a visitor ever interacts with it.

Why marketing teams resist removing scripts, understandably

Nobody wants to be the person who removed a tracking pixel that turns out to matter for a campaign three months later. We address this by documenting exactly what's being removed and why, and keeping an easy path to re-add anything that turns out to be needed, which makes teams far more comfortable agreeing to a cleanup.

What good looks like after a cleanup

A typical result from this kind of pass is going from ten or twelve third-party scripts down to four or five genuinely necessary ones, with the remaining scripts deferred or lazy-loaded appropriately. That alone often accounts for a meaningful share of the total performance improvement in an engagement, ahead of any image or code optimization.

How we get buy-in from teams who feel ownership over "their" script

Removing or deferring a script someone championed adding can feel like a personal critique if it's not handled carefully. We frame these conversations around the shared goal, faster load times benefit the same campaigns that script was meant to support, rather than as a judgment on the original decision to add it, which makes the conversation collaborative rather than adversarial.

A specific category of script we're especially cautious about

Heat-mapping and session-recording tools tend to be some of the heaviest scripts we encounter, since they're actively capturing and transmitting detailed interaction data throughout a visit. We recommend sampling, running them on a percentage of sessions rather than every single one, which preserves most of the analytical value while meaningfully reducing the performance cost across the whole site.

How we handle a client's marketing team who wants to add a new script mid-project, after a cleanup has already happened

We ask marketing teams to route any new third-party script addition through a quick review before implementation, once a site has gone through a cleanup, specifically to prevent the same accumulation problem from quietly starting over. This is a small process change, but it's the difference between a one-time cleanup and a lasting improvement in how disciplined the site stays over the following years.

We also share a simple, plain-language explanation with client marketing teams of exactly why script loading order and timing matter, using concrete, non-technical analogies rather than deep technical jargon they'd have no real reason to already understand. Teams that genuinely understand the underlying reasoning, not just a bare instruction to "be careful adding new scripts," make noticeably better independent decisions about future tool additions on their own, without needing to escalate every single new tool request back to us for a full technical review each time.

How we measure the actual impact before and after a cleanup

We don't just eyeball the difference. We pull real user Core Web Vitals data from before the cleanup and compare it against the same metrics several weeks after, isolating the change from other seasonal or traffic-mix effects as much as possible, so the client sees an actual measured improvement rather than a general impression that things feel faster.

This measurement step also protects the recommendation itself. If a particular script turns out to matter more than expected once it's removed, a drop in a specific conversion metric that only that tool was tracking, we catch it in the data quickly and can re-add it with a better-optimized loading strategy rather than leaving the client to notice the gap on their own weeks later.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.