Skip to content
    Cadnative Logo
    All articles
    ShopwareE-commercePHP

    Getting Started with Shopware 6 Development

    A practical introduction to Shopware 6 architecture, plugin development, and theme customisation for developers new to the platform.

    A

    Akshay Nikhare

    ·8 min read

    Shopware 6 is a modern, API-first e-commerce platform built on Symfony and Vue.js. If you're coming from Shopware 5 or another platform, the architecture shift can feel steep — but once it clicks, it's powerful and highly extensible.

    Understanding the architecture

    Shopware 6 is split into two main areas:

    • Core — the Symfony-based PHP backend that handles business logic, APIs, and the administration panel.
    • Storefront — a Twig-based frontend layer with optional headless API access.

    Most customisation happens through plugins. A plugin can override templates, add new API endpoints, register event listeners, or inject custom services.

    Setting up a local environment

    The fastest way to get started is with the official Docker setup:

    git clone https://github.com/shopware/shopware.git
    cd shopware
    docker compose up -d
    

    Once running, access the admin at http://localhost/admin and the storefront at http://localhost.

    Creating your first plugin

    Shopware provides a CLI tool to scaffold plugins:

    php bin/console plugin:create MyPlugin
    php bin/console plugin:install --activate MyPlugin
    

    This generates a src/MyPlugin.php entry point and a composer.json. From here you can:

    • Register services in Resources/config/services.xml
    • Override templates in Resources/views/storefront/
    • Add migration files in src/Migration/

    Theme customisation

    Themes in Shopware 6 are also plugins. They use SCSS for styling and can expose configuration variables that shop owners can control via the admin UI:

    <!-- Resources/theme.json -->
    {
      "name": "MyTheme",
      "author": "Cadnative",
      "views": ["@Storefront", "@Plugins", "@MyTheme"],
      "style": ["app/storefront/src/scss/overrides.scss"],
      "config": {
        "fields": {
          "brand-color": { "label": "Brand colour", "type": "color", "value": "#1B5A6B" }
        }
      }
    }
    

    Performance tips

    • Enable HTTP cache in production — Shopware has a built-in reverse proxy layer.
    • Use Elasticsearch for product search at scale.
    • Profile slow queries with the Symfony profiler (/_profiler).
    • Leverage Sales Channel API for headless storefronts instead of rendering Twig server-side.

    Next steps

    Need expert help with your project?

    We specialise in Shopware development and IMOS IX parametric design. Get a free consultation.

    Get a free consultation →