Apps as themes
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 app's Resources folder.
So the folder structure of a theme may look like this:
└── DemoTheme
└── Resources
└── ...
└── theme.json
└── manifest.xml
Themes vs. "ordinary" apps
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.
Migrating existing themes
If you have 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 the 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 have 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.