Chat button still on your store after uninstalling the app?

Why a WhatsApp button or pop-up stays in your Shopify theme after uninstall, how ScriptTags and theme edits differ from app embeds, and how to remove it.

You uninstalled a WhatsApp chat app, refreshed your storefront, and the green button is still there. Or the pop-up it added still slides in on every page. Or the button is gone but Lighthouse still lists a script from the app's domain. If you are searching how to remove a WhatsApp button after uninstalling an app on Shopify, the answer depends entirely on how the app put it there in the first place. Shopify has three integration methods with three different behaviours on uninstall, and only one of them guarantees a clean exit. This guide explains all three, shows you how to find and remove leftover code safely, and describes how Beacon Messenger's chat button is built so that uninstalling it leaves nothing behind.

What merchants report

The GetButton 1- and 2-star reviews include a 27 June 2026 review stating that "even you make uninstall to the app still shown in your website", and a 7 March 2024 review complaining that "it slows down the website loading significantly"; the developer's reply to that one says the button "works asynchronously and loads after every other content". Among SuperLemon's 1- and 2-star reviews, a merchant wrote on 11 July 2023 that the app "shove[s] pop-ups into your theme" and that "you cannot remove it from the settings". We have not audited either app's code, and both may have changed since; what the reviews show is that leftover widgets and page-speed worries are the two things merchants actually experience, and both come down to the integration method.

The three ways an app can put a button on your storefront

Shopify's own migration guide describes the traditional approach and its cost in one paragraph: apps "will traditionally modify theme code to inject assets", merchants "are frequently required to edit theme code", and "uninstalling apps often leaves the code edits, or ghost code, behind in the theme, which can cause quality and performance issues and takes merchants off their theme upgrade paths" (Migrate to theme app extensions). The same page names the two legacy methods: writing to the theme with the Asset API and injecting JavaScript with ScriptTags.

  • Theme code edits. The app, or its support team on your behalf, adds a snippet to theme.liquid or a section file that loads the widget from the developer's servers. Shopify does not track these edits, so nothing removes them when you uninstall. This is the case that produces a button that survives uninstall, and if the developer's server later goes away, it produces a broken request on every page instead. Shopify's help centre warns merchants about it directly: "Some apps add code to your online store theme that isn't automatically removed when you uninstall the app" (Uninstalling apps).
  • ScriptTags. The app registers a script URL with Shopify, and Shopify injects a script element pointing to the developer's host on every storefront page. Shopify removes an app's ScriptTags when the app is uninstalled (ScriptTag), so the button disappears, but while installed the script is fetched from a third-party domain on every page load, is not versioned with your theme, and is not visible or configurable in the theme editor. The same reference notes that script tags "can only be used with vintage themes" and that apps submitted to the App Store "must use theme app extensions instead", so on a current Online Store 2.0 theme a ScriptTag-based button may simply not render at all.
  • Theme app extensions. The app ships app blocks or an app embed block that Shopify renders inside the theme. Assets are hosted on Shopify's CDN, merchants turn the block on and off in the theme editor, and Shopify states that "when merchants uninstall apps, blocks associated with the apps are automatically and entirely removed from online store themes" (UX for theme app extensions). Floating elements such as chat buttons use the app embed variant, which Shopify injects before the closing head or body tag (Configure theme app extensions).

How to find and remove a leftover button

  1. Check the theme editor first. Open Online Store > Themes > Customize, then Theme settings > App embeds. If the widget is listed there, it is an app embed and turning it off removes it; if the app is uninstalled and the toggle is still there, save the theme once to let Shopify clear it.
  2. View the storefront source. Right-click the page, choose View page source, and search for the app's name, its domain, or words like "whatsapp" and "chat". Note whether the match is inside a script tag pointing at an external domain or inside your own theme's markup.
  3. Search the theme code. In Online Store > Themes > Edit code, use the search box for the same terms. Typical locations are layout/theme.liquid just before the closing body tag, a snippets file with the app's name, and sections/footer.liquid. Duplicate the theme before editing so you can roll back.
  4. Remove the snippet and its include. Delete the script or include line, then the snippet file it referenced if nothing else uses it. Save and preview. If you are not comfortable editing Liquid, Shopify's help centre suggests contacting the developer through Settings > Apps > Get support, and the theme's own support if the developer is unresponsive.
  5. Check for remaining requests. Open the storefront with your browser's developer tools on the Network tab and filter by the developer's domain. If nothing loads, the removal is complete.
  6. Look for the same code in your other themes. Apps that edit theme code often edit every theme you had at the time, including unpublished backups you may publish later.

Why some buttons slow the page down

A chat button is a small thing, so when merchants say one slows their store, the cause is usually not the button but how it is loaded. A script fetched from a third-party host adds a DNS lookup and connection before the first byte arrives; if that host is slow, every page waits on it. A widget that then downloads a framework, a font file, and an avatar image before it can paint pulls hundreds of kilobytes for a 60-pixel circle. Loading asynchronously helps, as the GetButton reply noted, but asynchronous does not mean free: the work still happens on the customer's device. The things that make a button cheap are being served from the same CDN as the rest of the theme, being small, using the theme's fonts, and doing nothing until the customer taps.

How Beacon Messenger's chat button is built

Beacon Messenger's chat button is a theme app extension, specifically an app embed block targeting the body. It lives in the app's extension folder, not in your theme code, and Shopify serves its assets from its own CDN alongside the theme. You turn it on from Theme settings > App embeds in the theme editor after installing, and you turn it off the same way. On uninstall it is removed by Shopify's theme app extension mechanism described above; the app registers no ScriptTags and never writes to your theme files, and the app's uninstall handler only deletes your data on our side. The storefront JavaScript and stylesheet are a single unminified file each, about 9 KB and 5 KB in source, with no framework and no external font, and the script waits for the document to finish parsing before it draws the button. Agents, roles, avatars and business hours are rendered into the block server-side by Shopify as Liquid, so the button makes no request to Beacon Messenger's servers on page load; the only external link is the wa.me link the customer taps. The WhatsApp chat button guide compares this approach with the alternatives in more detail, and the landing page shows the widget options.

Frequently asked questions

Why is the WhatsApp button still on my store after I uninstalled the app?

The app most likely added code directly to your theme files, which Shopify does not remove on uninstall. Search the theme code for the app's name or domain, remove the snippet and its include, and check unpublished themes as well.

Does uninstalling an app remove its ScriptTags?

Yes. Shopify removes ScriptTags created by an app when that app is uninstalled. If a script from the developer's domain still loads, it was added to the theme code, not through a ScriptTag.

How do I know if a chat app uses a theme app extension?

Its button will appear as a toggle in the theme editor under Theme settings > App embeds, or as an app block you can add to a section. Apps that ask you to paste code or that edit your theme for you are not using theme app extensions.

Will a chat button hurt my Core Web Vitals?

It depends on what it loads. A small, CDN-served script that waits for the page to parse and loads nothing else has a negligible effect. Third-party scripts that pull in frameworks, fonts and images before painting are what shows up in Lighthouse.

What does Beacon Messenger leave behind on uninstall?

Nothing in your theme. The app embed is removed by Shopify, no ScriptTags or theme edits were ever created, and the app deletes your shop's settings, message log and queue on its side when Shopify sends the uninstall webhook.

More guides