Managing Multiple Themes in different stores for Staging and Prod development

Short description of issue

Need an architecture to manage themes in multiples stores using Github

Reproduction steps

I’m working on a new architecture involving two Shopify stores: Stage store and Production store, connected with GitHub using Shopify GitHub App, with the following setup:

Stage Store:

Dev Theme (Draft) → linked to dev branch

QA Theme (Live) → linked to qa branch

Production Store:

Prod Theme (Live) → linked to main branch

For production releases, the plan is to merge the QA theme code from the qa branch into the main branch, which is associated with the Production store theme.

I can even go ahead with Github Actions to manage themes instead of Shopify GitHub App if its not ideal to use shopify github app with multiple stores

Additional info

We would appreciate your guidance on the following technical aspects:

Store-Specific Changes/Files: (including config/settings_json)

What is the recommended approach for managing store-specific assets or configuration files without duplicating code across branches?
Should we consider conditional logic within Liquid templates or maintain separate config files per environment?
Embedded Apps in Themes:

If apps are embedded within themes, how can we handle differences between Stage and Production environments?
Is there a best practice for toggling app settings or scripts based on environment variables?
Environment Variables and Secrets:

For environment/store-specific variables or secret keys, what is the best way to manage them securely without exposing them on the client side?
Would you recommend using Shopify’s Theme App Extensions, private app settings, or an external configuration management solution?

Your insights or any documentation references would be highly valuable.

What type of topic is this

General discussion

I use Github actions and push to 4 different stores, each store has a [country]-main and [country]-stagingbranch. Essentially I just ignore pushing any JSON files.

2 Likes