Theme App Extension blocks breaking changes

We’ve been working on our Theme App extensions for some time now and our blocks are maturing. This requires us to introduce some breaking changes to the schema. The versioning of the extension allows for minor and major releases - and states that major releases should be used for breaking changes etc.

However I can’t seem to find any information on how to best ship a major release. I’ve been looking around for some time now - but I might have missed it. Could someone help me clarify or point me in a direction where I can find answers for:

  1. Are major releases rolled out in the same manner as minor versions, or is there an opt-in step for the storeowners? Like an “Update your blocks”.
  2. Is it possible to migrate the schema changes? Mapping old value names to new ones will not work, since the old values seem to be cleared when not on the schema.

Appreciate the help!

Bumping this up.

I find the lack of information on migrating breaking changes quite surprising. With the growing responsibilities of App developers essential knowledge on how to avoid breaking storeowners’ storefronts seems like a must-have.

Could someone from the Shopify team please just point me in a direction?

I’ve been poking around at different solutions and I think the only solution would be a three-step migration.

  1. Collect and store all block settings. This will require the read_themes access scope and requires a custom script that loads all the template/*.json files and stores extension-related block settings.

  2. Publish the major version containing the breaking changes. Here I assume that Shopify will groom all affected blocks. Setting defaults and removing settings that are no longer found in the schema.

I couldn’t find any information on Shopify removing depreciated settings - however, I noticed old keys missing immediately while testing. So this is an assumption of mine.

Because Shopify removes deprecated settings from the schema we, as developers, can’t do our own mapping within the liquid files:

 assign new_value = settings.new_value | default: settings.old_value
  1. Migrate all the old stored settings. This will require the write_themes access scope and also requires a custom script. This time instead of reading from the template/*.json files, we update the new settings with the relevant old values.

Would be great with a second opinion. This approach seems quite cumbersome for something as this trivial as mapping old values.

It seems that Shopify will update the block id for all App extension blocks when you roll out a new version of your Theme App Extension. This was at least the case for us when we did a test run. It makes identifying and migrating blocks quite cumbersome.

Also, still no news from anyone from the Shopify team. Their partner support is a dead end with a “we don’t know”. Was unable to be connected with anyone from the app team.

Do you know what would create a breaking change? This is the only post I was able to find on the matter.

  • I know that changing the name of the app block file leads to the app block being disabled in the theme, needing then manual re-enabling.
  • I know changing data types in the schema can lead to the theme crashing/field resetting to default value

Are there other situation you know of?