Online Store 2.0 detection

Is there a way to detect if the Store is v 2.0?

1 Like

+1

Want to know if there’s a way to detect if a store is using Dawn.

In BigCommerce they included a Header to tell us if the store was using Stencil (which was their new theme framework) which was really helpful since we used that information to direct the signup flow properly.

1 Like

@ jayelkaake

call the API /admin/api/2021-07/themes.json, then check for the role property as ‘main’ and check if the name is “Dawn”

"themes": [
    {
      "id": 124128886991,
      "name": "Dawn",
      "created_at": "2021-07-08T15:11:59+08:00",
      "updated_at": "2021-09-27T09:44:34+08:00",
      "role": "main",
      "theme_store_id": 887,
      "previewable": true,
      "processing": false,
      "admin_graphql_api_id": "gid:\/\/shopify\/Theme\/124128886991"
    },
    {
      "id": 124176466127,
      "name": "Simple",
      "created_at": "2021-07-09T21:53:12+08:00",
      "updated_at": "2021-08-13T13:46:20+08:00",
      "role": "unpublished",
      "theme_store_id": 578,
      "previewable": true,
      "processing": false,
      "admin_graphql_api_id": "gid:\/\/shopify\/Theme\/124176466127"
    }]
1 Like

Good idea!

Although that would only work for stores that don’t rename their theme to something else…so probably 90% of the time, so still helpful!

Would be great to have a method that is accurate 100% of the time.

@dgtlmonk , @jayelkaake

Is there a way to detect if the Store is v 2.0?

To clarify all stores are now OS2.0 stores.

To tell if a OS2.0 store has a published THEME using OS2.0 features:

get the main(published) theme and in that check in the templates folder for a JSON template for a resource that is relevant to your use case. I.e. if you need to insert something on product pages = product.json

:bomb: If you use the presence of “Dawn” in the theme name as an evaluation for expecting OS2 compatibility you are building in a bug based on false negatives AND false positives.

psuedocode

//PSUEDOCODE
function detectOS2(theme) {
  isDawnSoMustBeOS2 = false
  if main.theme.name ~= "dawn"
    isDawnSoMustBeOS2 = true

  if isDawnSoMustBeOS2 
   return true
}

theme.name = "Debut - dawn dish shop promotion"
  detectOS2(theme)
  // > true
theme.name = "someothername"
  detectOS2(theme)
  // > false negative

Be aware Dawn is NOT a framework it’s just an open source REFERENCE theme a very important difference do not confuse the two.

And JSON templates are part of the OS.2 theme architecture.

Apps needing to modify themes just have to build their own heuristics to set conditional flags for the app behavior.

XYProblem , If the intent is to add features to OS2 themes in a standard manner this is through app blocks of theme app extensions.

https://shopify.dev/apps/online-store/theme-app-extensions

https://shopify.dev/apps/online-store/theme-app-extensions/extensions-framework#app-blocks

Shopify has sample code for Node to see if a theme has support for app blocks and an example app

https://shopify.dev/apps/online-store/verify-support

https://github.com/Shopify/product-reviews-sample-app

Is there a way to detect if the Store is v 2.0?> > To clarify all stores are now OS2.0 stores.

What did you mean by “all stores are now OS2.0”? Were they all automatically migrated by Shopify to 2.0? The online helps say it’s voluntary.

1 Like

Use and read the full url for context of what your reading and where in the docs it is:

help.shopify.com/en/manual/online-store/THEMES/versions/upgrading

That doc is specifically about choosing to use an old theme or upgrading themes to be useable with OS2 features which all stores have.

So yes it’s “voluntary” if merchants do not want to take advantage of their stores full OS2.0 capabilities.

1 Like

Updated docs on shopify site: https://shopify.dev/apps/online-store/verify-support

1 Like