Hi there,
I wanted to share some pain points I’ve noticed while developing theme app extensions over the past year or so:
Deprecating/removing settings
- No
available_if_not
: It would be amazing if we could make an app block usable only if a specific metafield were not present. This would make it very easy to deprecate outdated app blocks for new users. - Settings do not have
available_if
/available_if_not
: This makes it very challenging to remove settings from an app block.
A pretty common scenario is:
- Based on customer demand for a specific feature in the storefront, I create a new app block
- As time goes on and I gain a better understanding of the problem being solved, I want to change the implementation of the app block. Maybe I’ll be removing settings. Or maybe, the entire setup could use an overhaul. I’ve found that app blocks lack flexibility and make such changes difficult.
Deprecating app blocks
- It’s hard to know which users are actively using which app block. Your best bet is to use the Theme API and parse the JSON templates, but this might not be all too reliable if, for example, some existing users haven’t granted you
read_themes
access or if you no longer have a valid session token for them. - As a result, if you want to remove a deprecated version of an app block, you risk breaking your users’ stores without being able to at least contact them beforehand.
Onboarding
- Deep links cannot contain configuration information. Let’s face it: most users do not read the settings/documentation when adding app blocks to their theme. People frequently miss important information. It would be amazing if apps could just deep link users to the perfect settings for their theme.
- Though you can
autofill
settings of typeproduct
, you can’t do this forcollection
.
Lack of dynamic configuration
- App blocks cannot contain other app blocks as their children. This would make it possible to have more dynamic configuration. For example, if you had a “Collection list” app block/section, and wanted users to be able to provide different settings for each collection in the list, there’s no way to do that right now.
Conclusion
- Theme app extensions are very much a “once you add this app block/setting, it’s there forever, and removing it might be unsafe” situation.
- It is difficult to improve the onboarding process for theme app extensions.
Thanks in advance for your consideration. I recognize this is a long list. It would be interesting to hear if any other developers are facing similar challenges.