It is absolutely possible to ship whole themes inside an app. All you have to do is include your theme configuration (in the form of a theme.json
file) inside your apps Resources folder.
So the folder structure of a theme may look like this:
└── DemoTheme
└── Resources
└── ...
└── theme.json
└── manifest.xml
If your app provides a theme.json
file, it is considered to be a theme. All the changes you make to the Storefront's appearance inside your theme will be visible only if your theme is assigned to the Storefront. In contrast, if you don't provide a theme.json
file, your app is an "ordinary" app. The changes will be applied to all sales channels automatically, as long as your app is active.
If you already created Shopware 6 themes via plugins, it is effortless to migrate them to the app system. Don't worry - you don't have to do all work twice. Instead of providing a composer.json
and plugin base class, provide a manifest.xml
file with the metadata for your app. After you created a new folder for your app and added the manifest.xml
, you can copy the YourThemePlugin/src/Resources
folder from your plugin to the YourThemeApp/Resources
folder inside your app. It should not be necessary to change anything inside your template or Javascript code at all.