# BrocksiNet > Personal blog of Björn Meyer about Shopware, PHP, JavaScript, e-commerce architecture and developer tooling. Every post and page has a markdown version. Append `.md` to the page URL without the trailing slash (https://brocksi.net/blog// becomes https://brocksi.net/blog/.md), or request the HTML URL with `Accept: text/markdown`. ## Blog posts - [Is FrankenPHP worth it for Shopware?](https://brocksi.net/blog/is-frankenphp-worth-it-for-shopware.md): Classic mode and workers are separate. Patched Admin searches hit 911/s, about 1.75 times PHP-FPM. Music-shop search got faster. Product images did not. (2026-10-01) - [Stop reading every line of code](https://brocksi.net/blog/stop-reading-every-line-of-code.md): AI made code cheap. Trust is not. Why line-by-line review fails, and where quality has to live instead. (2026-07-27) - [Contract-first API testing: How your OpenAPI spec becomes the test suite](https://brocksi.net/blog/contract-first-api-testing-openapi-as-your-test-suite.md): Learn how to turn your OpenAPI spec into an executable test suite with contract-first testing, x-test metadata, and automated schema validation. (2026-04-14) - [The lie about TCO in ecommerce](https://brocksi.net/blog/total-cost-of-ownership-the-truth-none-tells-ecommerce.md): Real ecommerce TCO is life after go-live: tangle, upgrades, example SaaS vs gross margin, agency kit, AI and billing, tests or luck. (2026-04-10) - [Deadlock-free product indexing in Shopware 6 with a dedicated messenger transport](https://brocksi.net/blog/deadlock-free-product-indexing.md): Prevent Shopware 6 indexing deadlocks with a dedicated Symfony Messenger transport. Complete config guide with routing and Docker setup. (2026-02-16) - [Shopware 6.7 cache tags: how to migrate your plugins to the new HTTP cache system](https://brocksi.net/blog/shopware-67-cache-tags-migration-guide.md): Migrate Shopware plugins to the new 6.7+ HTTP cache tag system. Code examples for CacheTagCollector, invalidation, AJAX, and pitfalls. (2026-02-06) - [2025: What a year as an engineering lead](https://brocksi.net/blog/2025-review-engineering-lead.md): Learnings and experiences from 2025 as an engineering lead at shopware AG - from a re-org to a new formed frameworkteam to a lot of challenges and mistakes. (2026-01-19) - [Deep dive into Shopware SEO URLs — how they work, how to configure them, and how to avoid growth issues](https://brocksi.net/blog/seo-urls-deep-dive-shopware-6.md): Practical guide to Shopware SEO URLs: setup, Twig placeholders, generation, storage, canonicals, and fixes for table growth and duplicate paths. (2025-08-22) - [Performance Workflow and Optimization Techniques for Composable Frontends with Nuxt and Vue](https://brocksi.net/blog/performance-workflow-nuxt-composable-frontends.md): Learn how to implement Test-driven Performance Optimization (TDPO) workflows and discover essential performance tweaks for Vue, Nuxt, and Shopware 6 apps. (2025-06-03) - [Unofficial API aware guidelines for Shopware 6](https://brocksi.net/blog/unofficial-api-aware-guidelines-shopware-6.md): This is a collection of insights and things we've seen during plugin reviews, app reviews and projects for Shopware 6. We hope this is helpful for anyone... (2024-09-18) - [LightningCSS - How to Transform a DashedIdent value?](https://brocksi.net/blog/lightningcss-how-to-transform-a-dashedident.md): Sometimes I have very stupid ideas. People usually laugh at first, but I've learned that there's truth in every stupid idea. So, my latest dumb idea was... (2024-09-16) - [Multi-Page or Single-Page Variants Selection](https://brocksi.net/blog/variants-selection-multi-page-or-single-page.md): It feels wrong if you know ecommerce systems and then use Shopware's variants for the first time. You click on a variant, and the entire storefront page... (2024-04-18) - [Generate custom API Client for Shopware 6](https://brocksi.net/blog/generate-custom-api-client-for-shopware-6.md): With Composable Frontends, you can create your own JavaScript/Typescript based API Client from your local or online running Shopware 6 Instance. This... (2024-01-24) - [Local devenv set up - Shopware 6](https://brocksi.net/blog/local-devenv-set-up-shopware-6.md): This blog post is mainly a reference for myself. So that I don't always have to search for commands and places where I need to change something. Basically... (2024-01-15) - [Scaling Commerce with Shopware Composable Frontends?](https://brocksi.net/blog/scaling-commerce-shopware-composable-frontends.md): It's never a good idea to create redundant data just to have 15 storefronts with different domains and duplicate products/content. (2023-11-24) - [OpenAPI Specification or the most underrated feature](https://brocksi.net/blog/openapi-specification-or-the-most-underrated-feature.md): How would we work without an API? If you were debugging something right now, you would surely say "much better" 😉 But let's face it, without an API,... (2023-07-26) - [Frontend API with Nuxt + Nitro = Flexibility 🐙](https://brocksi.net/blog/frontend-api-with-nuxt-and-nitro-will-lead-to-flexibility.md): The question is always where to fix a problem. For example, if data is missing from an API, you could fix that with a second request or change the... (2023-05-03) - [Create a vue.js composable and call any API within Shopware Frontends](https://brocksi.net/blog/vue-js-composable-call-api-shopware-frontends.md): You already heard about the new Shopware Frontends? It uses the headless approach known from 😇 the administration area of Shopware. In general... (2023-03-16) - [15 futuristic Databases](https://brocksi.net/blog/2023-15-futuristic-databases.md): I really like short videos about different tech topics that just show what's out there. So there was a nice video, which I will also link later in this... (2023-03-01) - [PHP-Snippet: How to get the defaultTaxRate in Shopware 6?](https://brocksi.net/blog/get-the-defaulttaxrate-in-shopware-6-php-snippet.md): Sometimes it is maybe useful to get the defaultTaxRate that is defined via Admin in Shopware 6. For this we have this small php function below to get the... (2022-11-23) - [CustomFields, Properties and Entity Extensions for Shopware 6](https://brocksi.net/blog/customfields-properties-entity-extensions-shopware-6.md): When you start working with Shopware 6 it can be hard to know what to use for what. So this guide will explain you the different aspects of CustomFields,... (2022-11-07) - [PHPStan with static SQL analysis as pre-commit hook for Shopware 6](https://brocksi.net/blog/phpstan-with-static-sql-analysis-as-pre-commit-hook.md): You working on a customer project and you want to make sure that you write code like a Shopware 6 core developer? Then you need all the shiny linters that... (2022-10-06) - [Configure PHPStan in PHPStorm to use PHP from Docker Container](https://brocksi.net/blog/configure-phpstan-phpstorm-use-php-docker-container.md): In PHPStorm you can set up PHP > Quality Tools that will check your code as you code. This will help you write clean code. I suspect that most developers... (2022-09-10) - [How to debug SQL-Queries in Shopware 6?](https://brocksi.net/blog/how-to-debug-sql-queries-in-shopware-6.md): There are always situations where you need to get the raw SQL query. Maybe to understand what is going on, to debug a problem on a production system or... (2022-08-05) - [Content Management anywhere in Shopware 6](https://brocksi.net/blog/content-management-anywhere-in-shopware-6.md): The Content Management System in Shopware 6 is called Shopping Experiences. But in this post I will always talk from Content Management when I mean the... (2022-06-30) - [Environment variables in Shopware 6 (aka process.env.XYZ)](https://brocksi.net/blog/environment-variables-in-shopware-6-processenv.md): With environement variabeles you can do a lot in Shopware 6. Especially when you use some build process to deploy your projects or test your plugins. So... (2022-03-22) - [How to add a "is in stock" filter in Shopware 6?](https://brocksi.net/blog/how-to-add-a-is-in-stock-filter-in-shopware-6.md): In a default shopware 6 you will have filters for properties and you will have filters for manufacturer, rating, price and free shipping. But you will not... (2022-01-25) - [Import / Export Customers via CSV in Shopware 6](https://brocksi.net/blog/import-export-customers-via-csv-in-shopware-6.md): At some point in every project you need some customer data. And often it is the case that you need to import the customer data from some old source for... (2022-01-10) - [Is there any future for Magento OpenSource?](https://brocksi.net/blog/magento-adobe-future-open-source-2021.md): How was 2021 from a Magento OpenSource perspective? 09 Feb 2021 (Version 2.4.2), 11 May 2021 (Version 2.4.2-p1), 10 Aug 2021 (Version 2.4.3) and 12 Oct... (2021-12-17) - [How to find DOM elements with a lot of childs?](https://brocksi.net/blog/how-to-find-dom-elements-with-a-lot-of-childs.md): When you think about the core web vitals then you will find this claim "Avoid an excessive DOM size". This is easy to say, but sometimes hard to achieve.... (2021-12-02) - [Remix.run - SSR, nested routes, eliminate loading state](https://brocksi.net/blog/remix-run-ssr-nested-routes-eliminate-loading-state.md): Every day a new javascrip framework :tada: But this day we have one that is the top 1 trending repository (at 2021-11-24) at github :star-struck: from the... (2021-11-25) - [What's the difference between product.repository and sales_channel.product.repository in Shopware 6?](https://brocksi.net/blog/product-repository-vs-sales-channel-product-repository-shopware-6.md): Looks easy? :wink: But did you checked in detail the differences or you just use always the product.repository? Let's deep dive into the core files to... (2021-11-16) - [Flow Builder, early developers overview](https://brocksi.net/blog/flow-builder-early-developer-overview-shopware-6.md): With the fresh new shopware 6 version 6.4.6.0 there is a new much awaited (!) feature the flow builder. In this blog post we will check the shopware 6... (2021-11-08) - [Magento2 Certification Notes](https://brocksi.net/blog/magento2-professional-developer-certification-notes.md): Notes I took before the Magento2 Certified Professional Developer Exam. This is a collection of questions and answers that I used to prepare for the exam. (2020-01-08) - [chmod Cheat sheet / Spickzettel](https://brocksi.net/blog/chmod-cheat-sheet-spickzettel.md): chmod ist eine Linux-Befehlszeile, mit der du die Berechtigungen für Dateien und Ordner ändern kannst. Der Spickzettel hilft dir sie nicht zu vergessen. (2018-05-15, in German) - [FAST Docker development environment with Magento2 on MacBook with High Sierra](https://brocksi.net/blog/fast-docker-with-magento2-on-mac-sierra.md): Speed up your docker magento2 environment on mac with High Sierra. APFS and Storage Driver overlay2. (2018-02-01) - [Spryker oder OpenSource System Landscape?](https://brocksi.net/blog/spryker-oder-opensource-system-landscape.md): Closed Source vs. Open Source E-Commerce Systeme. Wie schlägt sich Spryker in der Praxis ab? Kosten, Features, etc. (2017-12-05, in German) - [Testing php code for different php versions online](https://brocksi.net/blog/testing-php-code-for-different-php-versions-online.md): You can test your php code for different php version online. Sometimes you have to test your code on different php versions. (2017-09-15) - [Übersicht Ecommerce-Systeme](https://brocksi.net/blog/uebersicht-ecommerce-systeme.md): Übersicht über die verschiedenen Ecommerce-Systeme von Open Source bis Saas. Magento, Shopware, Prestashop, etc. (2017-08-31) - [JavaScript check if pending ajax calls exist](https://brocksi.net/blog/javascript-check-if-pending-ajax-calls-exist.md): Sometimes you have to wait until some ajax calls are finished. And then you want to execute some JavaScript code ... (2017-08-01) - [PHP Resources](https://brocksi.net/blog/php-resources.md): Unsortierte Liste zu guten PHP Ressourcen welche im Laufe der Zeit gefunden wurden. Offizielle Dokumentation, Tools, Awesome Links, Tutorials, etc. (2017-07-24) - [Magento2 $order->save() deprecated](https://brocksi.net/blog/magento2-order-save-deprecated.md): Magento2 Order save function is deprecated. Was also jetzt verwenden? Schaut euch OrderRepositoryInterface an. (2017-07-14, in German) - [Magento2 Resources](https://brocksi.net/blog/magento2-resources.md): Liste mit Links zu guten Magento2 Ressourcen. Offizielle Dokumentation, Tools, Awesome Links, Tutorials, etc. (2017-07-10, in German) - [mysqldump Befehle / Cheat Sheet / Spickzettel](https://brocksi.net/blog/mysqldump-befehle-cheat-sheet-spickzettel.md): Typische mysqldump Befehle als Cheat sheet / Spickzettel. Datenbank dump erstellen, einspielen, etc. (2017-03-16, in German) - [Docker Befehle / Cheat sheet / Spickzettel](https://brocksi.net/blog/docker-commands-cheat-sheet.md): Docker-Befehle. Um mich an die gängigen Docker-Befehle zu erinner, habe ich mir diesen Spickzettel geschrieben. (2017-03-15, in German) - [Memory für PHPStorm erhöhen](https://brocksi.net/blog/memory-fur-phpstorm-erhohen.md): Memory für PHPStorm unter Windows erhöhen. Ja das war früher ein gängiges Problem. Step by step Anleitung. (2016-06-10, in German) - [PHPStorm in der 64-Bit Variante verwenden](https://brocksi.net/blog/phpstorm-in-der-64-bit-variante-verwenden.md): PHPStorm unter Windows in der 64-Bit Variante verwenden. Java 8 installieren und JAVA_HOME und JRE_HOME Variable setzen. (2016-06-09, in German) - [Git Befehle / Cheat sheet / Spickzettel](https://brocksi.net/blog/git-befehle-cheat-sheet-spickzettel.md): Eine Übersicht der wichtigsten Git Befehle, damit ich diese nicht immer wieder im Internet suchen muss. (2016-06-06, in German) ## Pages - [About](https://brocksi.net/page/about.md): Björn Meyer, Engineering Lead Framework at shopware AG. Career path from Flagbit team lead to Shopware engineering, plus qualifications and certificates. - [Imprint](https://brocksi.net/page/imprint.md): Imprint and legal notice for brocksi.net, the private website of Björn Meyer: contact details, disclaimer, liability, copyright and data protection. - [Projects](https://brocksi.net/page/projects.md): Projects by Björn Meyer: Shopware MCP server and agentic commerce, Storefront and platform work, Composable Frontends, plus customer projects from Flagbit. ## Optional - [RSS feed](https://brocksi.net/rss.xml): Titles and teasers of all posts - [Sitemap](https://brocksi.net/sitemap-index.xml): Every public HTML URL