After a chat widget was changed to load only on first interaction, links that were meant to open the chat opened it and then immediately closed it. Separately, a first version of the loader started downloading the widget almost at once on desktop, defeating the point.
⚡ Quick Fix (TL;DR)
The Culprit: The loader remembers a click on the launcher made before the script arrives and replays it afterward, so the visitor's first tap is not lost. The widget's own script also clicks its launcher by code when a link carries an "open chat" parameter, so the loader replayed that click too: open, then closed. The early load came from using mouseover as a trigger, which desktop browsers fire whenever the cursor merely rests over the page.
The Fix: Only remember clicks the browser marks as real user clicks (isTrusted is true), and ignore clicks made by script. Trigger on pointerdown, keydown, scroll, touchstart or wheel, plus a short idle timer, never mouseover. Test each way into the widget: first tap, scroll, keyboard, direct link, saved conversation, and the idle fallback.