lunalink.ai
← lunalink.ai blog
September 7, 2026 · The lunalink.ai team

Should Shopify apps have permission to edit your theme?

Hands typing on a laptop with an e-commerce website open, showcasing online shopping.
Photo by Shoper .pl on Pexels

You install an app because you need it to do a job. Then Shopify asks whether it can edit your theme.

That permission deserves a pause.

Your theme runs the parts of the store customers see and use: product pages, cart, navigation, search, and checkout links. A bad change can affect all of them. It can also leave code behind after an app is gone.

For most public Shopify App Store apps, the answer is now straightforward: they should not need direct access to change theme files.

Shopify’s App Store requirements say apps that modify a merchant’s theme must use theme app extensions rather than direct theme-code changes. That does not mean an app cannot appear on your storefront. It means it should use Shopify’s supported way of appearing there.

What an app should use instead

Theme app extensions give apps two main ways to show up in a theme:

  • App blocks are sections or blocks you place in a page template, such as a reviews panel on a product page.
  • App embeds are features you switch on for the whole theme, such as a chat button or tracking feature.

You manage both in the Shopify theme editor. You can preview them, move them, turn them off, remove them, and change their settings there.

That matters because the change stays visible. You do not need to open code to find out where an app put something.

Say you add a size guide app. An app block lets you place it below the product description on one product template. If it crowds the page, you can move it. If you want it on a different template, you can put it there. You are changing the store layout, not asking an app to rewrite a Liquid file behind the scenes.

Shopify designed theme app extensions to avoid direct code access. Shopify also says they reduce the risk of breaking changes and improve what happens when you uninstall an app.

For apps using theme app extensions, Shopify’s Built for Shopify requirements say uninstalling the app automatically removes its related blocks from online-store themes.

That is a much cleaner ending than hunting through `theme.liquid` for a script tag you do not recognise.

Why direct theme access is different

A theme is not one simple setting. It is a set of files that work together.

An app with permission to write theme files may be able to add a snippet, edit a template, add JavaScript, or change an existing file. A small change can have a large reach. One script loaded across the site is loaded on product pages, collection pages, the cart, and every other page that uses that layout.

The risk is not that every app will make a mistake. The risk is that theme changes are harder to see, test, undo, and attribute later.

You may update your theme months after installing an app. You may change agencies. You may uninstall an app and assume its storefront code left with it. If the app edited files directly, that assumption is less safe.

This is also why “we’ll ask before every change” is not the same as using Shopify’s supported extension model. Shopify has said that even a merchant-approved write to an existing theme file still needs approved `write_themes` access. There is no separate exception just because the merchant approves a single change.

Shopify has narrowed this permission for public apps

Shopify restricted direct theme-file writes through its legacy REST Asset API starting with Admin API version `2023-04`.

`PUT` and `DELETE` operations require Shopify approval for the `write_themes` scope. Shopify said public apps needed to migrate away from that approach or obtain an exemption by March 31, 2024.

There is an exception process. It is not a general setting that any public app can use because a merchant says yes.

Shopify’s current documentation says an App Store app needs a `write_themes` exemption for direct writes. A Shopify staff response from October 2025 says exemptions are granted for specific use cases.

So when a public app asks for theme-write permission, do not treat it like a routine request. Ask what it needs to edit, why an app block or embed will not work, and whether the app has Shopify’s exemption.

A clear answer should name the feature and the file or kind of change involved. “We need theme access for setup” is not a clear answer.

We made this choice in our own app

We ship Descriva without theme-write permission on purpose.

Descriva builds an `llms.txt` file for a store. The obvious technical route would have been writing a file into the theme. That would have required broader theme access than we wanted to ask merchants for.

So we built another route. Descriva publishes the file as a Shopify page, then uses a redirect. It gives the store the needed public URL without asking the app to edit theme code.

That decision made the product design more constrained. It also made the permission request easier to understand.

Fewer permissions mean less for a merchant to trust. They also force a useful question during product design: does this feature truly need access to this part of the store?

Often, it does not.

What to check before you install

You can do a quick permission review before installing an app.

First, read the access request in Shopify. If an app asks to edit themes, stop there for a minute. Do not assume the permission is harmless because the app has a polished listing.

Then check these points:

  • What storefront feature is the app adding? A product-page widget, popup, form, badge, or chat tool will often fit an app block or app embed.
  • Can you place it in the theme editor? Open Online Store → Themes → Customize. In the left panel, look for Apps or App embeds.
  • Can you turn it off without deleting code? Toggle an app embed off in a duplicate theme first. A well-contained feature should be easy to disable.
  • What happens on uninstall? Look in the app’s help documentation before you install. If it uses app blocks or embeds, Shopify says associated blocks are removed on uninstall.
  • Does the app explain why it needs theme writes? If it does not, ask. You are not being difficult. You are checking access to the code that runs your storefront.

You can do one useful check right now, even for apps already installed. Open your theme editor and select App embeds. Look through the list of active embeds. If you see an app you no longer use, turn it off and confirm the storefront still looks right in a preview.

Do this in a duplicate theme if you are unsure. It takes little time and gives you a clearer picture of what is running on the store.

When theme access may be reasonable

“Usually no” is not “never.” Shopify has an exemption process because some specific use cases may need direct theme-file changes.

But reasonable access should still come with a specific reason and a narrow request. The app should be able to explain what it changes, how it avoids overwriting your work, and what remains after you remove it.

If you use a developer or a custom solution, the technical setup may differ from a public App Store app. The same storekeeping rule still helps: give the least access needed for the job, keep a copy of your theme before changes, and make sure someone can explain what changed.

A theme is working store infrastructure. Treat write access like you would access to your customer-facing pages: useful when needed, but not a default.

The quiet next step is simple. Open your installed apps this week and identify which ones can affect the storefront. For each one, check whether its feature appears as an app block or app embed in your theme editor.

Sources

shopifythemesshopify appsstore operations

See how AI assistants actually read your store — a free 30-second scan, no install and no signup.

Check my store