versions so special? • Major versions planned to be released roughly once a year • Upgrade of all packages and increasing (system) requirements • Removing deprecations • Introducing breaks
plan it? • Shopware had to create issues for their topics • Shopware made it public to all, externals had time to do the same • Anyone was able to vote on issues • Shopware created the board based on votes
now? The Timeline so far • Development started on trunk: 21. Nov 2022 • RC1 released: 20. Feb 2023 • RC2 released: 20. Mar 2023 • RC3 released: 24. Mar 2023 • RC4 released: 11. Apr 2023 • Cloud deployment: SoonTM (Done by end of Apr 2023) • Final Release: SoonTM (End of Apr 2023)
friendly due to licensing (AWS, Platform.sh) • Switch to Opensearch SDK, Opensearch DSL • Elasticsearch 7/8 does still work Elasticsearch to Opensearch
default • Allows us to update config files directly with Composer • No more rebasing against our template in your projects • Switched to Symfony Runtime • Decouples the HTTP to Kernel to be able to exchange it (FrankenPHP) • Recipes can be found at GitHub shopware/recipes • Abandoned shopware/development template
integration Removal of Enqueue • We are using it since it was marked as experimental • Before: • Custom failure handling / rescheduling • Used enqueue as default transport • Now: • Removed custom code, back to symfony defaults
Includes vs Fields • Includes: • Fetches all data as regular • Hydrates all fields • Serializes only required fields -> Output filter • Fields: • Fetches only required fields • Hydrates only required fields • Serializes only required fields -> Complete stack uses it
Uses Composer and Symfony Flex • One unified way to get Shopware • Separate .phar application, that setups & updates your shop • Thanks to Contao for inspiration • Github is now the source of truth
Async components • Components can be registered async • Code Splitting active by default for async components • Only required files are loaded • Check your E2E assertions
• The `_proxy/store-api` route was removed • It was a constant security threat • Promoted bad programming practices • Best practice: Create a custom storefront controller that uses the store-api internally • Use `/checkout/cart.json` route to get the current cart as json as of RC4
prepare my shop? • Use Symfony flex template • Adapts the new environment variables already • Use different queue than MySQL • Remove all existing deprecations, that are thrown in your plugins