Theme work

App block or hard coded snippet, and how to tell what you have

Two ways an app reaches your storefront, with different consequences at upgrade time. How to look at your theme and see which one you are living with.


  • Category

    Theme work

    No code editing needed to follow it.

  • Published

    28 April 2026

    Written by the people building the app.

  • Length

    About 8 minutes

    No gate, no form, no email sequence.

  • Checked against

    Dawn 15, plus one vintage theme

    App blocks need an Online Store 2.0 theme.


Two ways an app reaches your storefront

A theme app extension is the modern route. The app publishes blocks, you place them in the theme editor, and Shopify serves the assets from its own CDN. The placement is recorded in your template, the code stays with the app, and your theme files are never edited. When the app is uninstalled the block stops rendering and takes its markup with it.

The other route is theme code. A vendor, an agency, or a support agent with editor access pastes Liquid into a section, a snippet, or theme.liquid. It works immediately and it is invisible in the theme editor, because as far as the editor is concerned it is simply part of your theme now. Which it is. That means it survives an uninstall and does not survive a theme upgrade, exactly the wrong way round.

How to tell which one you have

Start in the theme editor. Open a template, look at the section list, and try to add a block: if the app appears under Apps in the picker, it publishes app blocks. Some apps instead publish an app embed, which is toggled in Theme settings under App embeds rather than placed in a section, and is used for things that belong to the whole page. Both count as the modern route.

Then check the code. Online Store, Themes, Edit code, and search for the vendor name. A hit inside sections, snippets, or layout and theme.liquid means something was written into your theme. A hit that reads like a script tag pointing at an external domain is the same story with a worse ending, because that request is now on every page whether the feature is used there or not.

A third case looks like the second but is not residue. A page builder writes its own sections and templates into your theme by design, and that is how the tool works. It is worth knowing before an upgrade, because those templates are the ones a new theme version will not carry across.

What each one costs you

At upgrade time an app block costs you a placement job and a snippet costs you an investigation. At uninstall time a block costs you nothing and a snippet leaves a Liquid error where the file used to be. At debugging time a block can be hidden with one click by the eye icon, while a snippet has to be found before it can be turned off.

There is one honest advantage to theme code, and it is worth stating: it can go exactly where a block cannot, in the middle of a section whose author never opened that spot up. If you are living with a snippet for that reason, write down what it does and where it sits, and keep the note wherever the rest of your theme documentation lives.

Asking a vendor to move you

If an app you rely on still installs itself as a snippet, ask whether it publishes an app block or an app embed yet. Since Online Store 2.0 the answer is yes for most vendors, and the migration is usually three moves: delete the snippet, place the block, check the page. Ask before a theme upgrade rather than during one, when there is time for the answer to be no.

TreStack Timer is built as a theme app extension: an app embed you turn on in the theme editor, plus an app block for a custom position, with nothing written into your theme files. This page uses it as the worked example because it is the one we can describe from the inside. That is a statement about install mechanics, not a ranking. This hub does not publish a ranking of countdown timer apps, because we make one.

An excerpt of sections/main-product.liquid with a hard coded render tag for a reviews widget under the buy buttons
Two routes in, two very different exits.

How to check this on your own store.

Four moves, in this order. Nothing here needs a developer, and nothing here touches your published theme until the last step.

  1. Step 1

    Try to add a block in the editor

    Open a template, add a section or block, and look under Apps. If the app is listed, it publishes app blocks.

  2. Step 2

    Check Theme settings for App embeds

    Embeds are toggled, not placed. This is where a whole page feature hides from a template by template search.

  3. Step 3

    Search the code for the vendor name

    Edit code, search field, vendor name. Note every hit in sections, snippets, and layout and theme.liquid.

  4. Step 4

    Write down what you found

    One line per snippet: file, what it does, who added it. That note is what makes your next upgrade cheap.

We make a countdown timer, so we do not rank countdown timers.

This page uses theme app extensions as its example because that is how TreStack Timer is built, and says so rather than presenting it as a neutral finding.

  1. No rankings where we compete

    No countdown timer shortlist, and none for reviews, bundles, or checkout, where our next apps are planned. Measurement methods, yes. Verdicts, no.

  2. No paid links

    Nothing on this page earns TreStack a commission, and no tool is named because naming it pays.

  3. Order is editorial, never commercial

    Nothing moves up a list because it pays more. A vendor cannot pay to be added and cannot pay to be removed.

Keep reading

The guides are ordered the way a merchant usually needs them, so the two either side of this one are the likely next job.

Back to all guides