Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
7172297
adds upgrade guide and apidocs
lasomethingsomething Feb 24, 2026
84995c5
Update index.md
lasomethingsomething Feb 24, 2026
33d1d60
Update index.md
lasomethingsomething Feb 24, 2026
09944aa
Merge branch 'main' into api-upgrade-changesfeb23
lasomethingsomething Feb 24, 2026
15d132b
Additional info
sushmangupta Feb 26, 2026
e1c97cb
Update concepts/apis/index.md
lasomethingsomething Feb 26, 2026
6d4eeca
Update concepts/apis/index.md
lasomethingsomething Feb 26, 2026
c778b15
Update storefront-concept.md
lasomethingsomething Feb 26, 2026
48f3a0c
Apply suggestion from @sushmangupta
lasomethingsomething Feb 26, 2026
e7d903b
Update index.md
lasomethingsomething Feb 26, 2026
2388747
Update index.md
lasomethingsomething Feb 26, 2026
16456bf
Update index.md
lasomethingsomething Feb 26, 2026
dc8d761
Update index.md
lasomethingsomething Feb 26, 2026
312d6c5
Update index.md
lasomethingsomething Feb 26, 2026
8f8b1cc
Update upgrade-shopware.md
lasomethingsomething Feb 26, 2026
4b8ca69
Merge branch 'main' into api-upgrade-changesfeb23
lasomethingsomething Feb 26, 2026
4ecb86b
Fix link
sushmangupta Feb 26, 2026
97c7e5e
Language tool issue fix
sushmangupta Feb 26, 2026
69d0849
Fix api directory content
sushmangupta Feb 26, 2026
2bef043
Addition of Core Concept
sushmangupta Feb 26, 2026
24f4d31
Update index.md
lasomethingsomething Feb 26, 2026
e47d06e
remove content from architecture
sushmangupta Feb 26, 2026
d3cbf85
Add redirects
sushmangupta Feb 26, 2026
c7024b3
Update gitbook, add info box, fix link
sushmangupta Feb 27, 2026
7afcb0b
Update index.md
lasomethingsomething Feb 27, 2026
4c7e3ba
Update index.md
lasomethingsomething Feb 27, 2026
c58d247
Update index.md
lasomethingsomething Feb 27, 2026
4c613cc
Update upgrade-shopware.md
lasomethingsomething Feb 27, 2026
1539467
Update language-pack-migration.md
lasomethingsomething Feb 27, 2026
5dba68f
Update upgrade-shopware.md
lasomethingsomething Feb 27, 2026
7636bab
Update store-api.md
lasomethingsomething Feb 27, 2026
29d2f46
Update admin-api.md
lasomethingsomething Feb 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .gitbook.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,14 @@ redirects:
guides/installation/setups/devenv.html: guides/installation/legacy-setups/devenv-setup.html
guides/installation/setups/symfony-cli.html: guides/installation/legacy-setups/symfony-cli-setup.html
guides/installation/setups/devenv-options.html: guides/installation/legacy-setups/devenv-options.html
guides/installation/setups/: guides/installation/
guides/installation/setups/: guides/installation/
guides/plugins/plugins/administration/system-updates/meteor-components.html: guides/upgrades-migrations/administration/meteor-components.html
guides/plugins/plugins/administration/system-updates/pinia.html: guides/upgrades-migrations/administration/pinia.html
guides/plugins/plugins/administration/system-updates/vue3.html: guides/upgrades-migrations/administration/vue3.html
guides/plugins/plugins/administration/system-updates/vite.html: guides/upgrades-migrations/administration/vite.html
guides/plugins/plugins/administration/system-updates/vue-migration-build.html: guides/upgrades-migrations/administration/vue-migration-build.html
guides/plugins/plugins/administration/system-updates/vue-native.html: guides/upgrades-migrations/administration/vue-native.html
resources/references/upgrades/core/translation/extension-translation.html: guides/upgrades-migrations/extension-translation.html
resources/references/upgrades/core/translation/language-pack-migration.html: guides/upgrades-migrations/language-pack-migration.html
resources/references/upgrades/administration/: guides/upgrades-migrations/administration/
resources/references/upgrades/: guides/upgrades-migrations/
10 changes: 8 additions & 2 deletions concepts/api/admin-api.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
---
nav:
title: Admin API
position: 20
position: 60

---

# Admin API

The Admin API represents the administrative and integration surface of Shopware. It enables structured access to core business entities such as products, orders, customers, media, and configurations. It is intended for backend integrations, automation, data synchronization, and system-to-system communication.

These integrations typically involve structured data exchange, synchronization, imports, exports, and notifications. They prioritize consistency, error handling, validation, and transactional integrity. Performance is also important in terms of high data loads rather than fast response times.

The Admin API provides CRUD operations for every entity within Shopware and is used to build integrations with external systems.

For more information, refer to the [Guides section](../../guides/integrations-api/index.md).
For details on endpoints, authentication methods, schemas, and request formats, always refer to the Admin API documentation.

<PageRef page="https://shopware.stoplight.io/docs/admin-api/8d53c59b2e6bc-shopware-admin-api" title="Admin API – Stoplight Reference" target="_blank" />
15 changes: 12 additions & 3 deletions concepts/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,17 @@ nav:

# API

The Shopware API allows developers to interact with and integrate Shopware with other systems and applications. It provides a set of services that enable developers to perform various operations, such as managing products, customers, orders, and shopping carts.The API supports both read and write operations, allowing developers to retrieve information from Shopware and make modifications or additions to the e-commerce platform. By leveraging the Shopware API, developers can extend the functionality of Shopware, integrate it with external systems, and create seamless experiences for managing and operating online stores.
Shopware exposes HTTP-based APIs that allow external systems and custom applications to interact with the platform.

Shopware supports two major functional APIs: the Store API and the Admin API. These APIs serve different purposes. The Store API is designed to interact with the front-end or storefront of a Shopware online store while the Admin API is intended for administrative operations related to managing the back-end of the Shopware platform.
Two functional APIs are available, each representing a different integration surface:

The API documentation provides details on the available endpoints, request/response formats, authentication mechanisms, and data structures. It supports different authentication methods, including token-based authentication and OAuth 2.0, to ensure secure communication between the API client and the Shopware platform.
* **Store API**: customer-facing interactions
* **Admin API**: administrative and system-level operations

Both APIs use HTTP and exchange JSON payloads. The Administration API requires OAuth 2.0 authentication, whereas the Store API is publicly accessible and only requires contextual headers, with authentication needed for customer-specific endpoints. While they serve different purposes within the platform, they share some underlying design principles and structural patterns:

* Search criteria abstraction for filtering, sorting, and pagination
* Structured JSON request/response bodies
* Header-based contextual behavior

These patterns form the foundation of integration development.
30 changes: 6 additions & 24 deletions concepts/api/store-api.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,17 @@
---
nav:
title: Store API
position: 10
position: 50

---

# Store API

Every interaction between the store and a customer can be modeled using the Store API. It serves as a normalized layer or an interface to communicate between customer-facing applications and the Shopware Core. It can be used to build custom frontends like SPAs, native apps, or simple catalog apps. It doesn't matter what you want to build as long as you are able to consume a JSON API via HTTP.
The Store API represents the customer-facing surface of Shopware. It is designed for storefront/frontend-related interactions such as product browsing, cart handling, checkout, and customer account management. It exposes only data that is relevant and safe for frontend use and supports both anonymous and authenticated customers.

![Data and logic flow in Shopware 6 \(top to bottom and vice versa\)](../../assets/concepts-api-storeApiLogic.svg)
The Store API acts as a normalized interface layer between customer-facing applications and the Shopware Core. It enables headless frontends (such as SPAs or native apps) to consume Shopware functionality via JSON over HTTP. Core business logic is exposed through HTTP routes, ensuring that the Storefront and API consumers rely on the same underlying services.

Whenever additional logic is added to Shopware, the method of the corresponding service is exposed via a dedicated HTTP route. At the same time, it can be programmatically used to provide data to a controller or other services in the stack. This way, you can ensure that there is always common logic between the API and the Storefront and almost no redundancy. It also allows us to build core functionalities into our Storefront without compromising support for our API consumers.
For details on endpoints, authentication methods, schemas, and request formats, always refer to the Store API documentation.
<PageRef page="https://shopware.stoplight.io/docs/store-api/7b972a75a8d8d-shopware-store-api" title="Store API – Stoplight Reference" target="_blank" />

## Extensibility

Using plugins, you can add custom routes to the Store API \(as well as any other routes\) and also register custom services. We don't force developers to provide API coverage for their functionalities. However, if you want to support headless applications, ensure that your plugin provides its functionalities through dedicated routes.

<PageRef page="../../guides/plugins/plugins/framework/store-api/" />

## Store API and the traditional TWIG storefront

When using the server-side rendered TWIG storefront, the Store API is not used.
Instead, the storefront uses custom [storefront controllers](../../guides/plugins/plugins/storefront/add-custom-controller.md) which internally use the Store API to fetch data.

The storefront controllers are optimized for the usage in our TWIG storefront. And the biggest difference is the way that authentication and authorization are handled.
As the Store-API is a proper REST API, the main design is stateless, which means authentication info needs to be provided via the request headers in form of the `sw-context-token`.
The storefront relies on the session to store the authentication info, that way you do not have to handle the authentication manually with every request.

## What next?

* To start working with the Store API, check out our [Quick Start guide](https://shopware.stoplight.io/docs/store-api/38777d33d92dc-quick-start-guide) and explore all endpoints in our reference guide.

* An interesting project based on the Store API is [Composable Frontends](../../../frontends/).
Shopware provides [Composable Frontends](https://frontends.shopware.com/) as a headless frontend implementation based on the Store API.
34 changes: 32 additions & 2 deletions concepts/framework/architecture/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,36 @@ nav:

---

# Architecture
# Shopware Architecture

On a high level, Shopware consists of multiple modules that separate the entire code base into logical units. Some modules are independent, and some depend on others.
Shopware follows a modular, API-first architecture built on top of Symfony and modern frontend technologies. The platform separates concerns into clearly defined layers, allowing storefront experiences, administrative tooling, and core business logic to evolve independently while sharing a common backend foundation.

At a high level, the system consists of three primary domains:

* **Core** — the backend foundation containing business logic, data abstraction, APIs, and extension mechanisms.
* **Storefront** — the customer-facing presentation layer responsible for rendering sales channels and interacting with the Store API.
* **Administration** — the management interface used by merchants and operators to configure, manage, and operate the platform.

These domains are unified through a shared API layer and a consistent plugin system, enabling extensibility without tightly coupling features to presentation layers.

## Architectural principles

The Shopware architecture is guided by several core principles:

* **API-first design** — all functionality is exposed via APIs, enabling headless and composable commerce scenarios.
* **Separation of concerns** — frontend experiences (storefront/admin) are decoupled from backend logic.
* **Extensibility** — plugins integrate through events, services, and extension points rather than modifying core code.
* **Asynchronous processing** — background tasks (indexing, messaging, integrations) are handled via message queues and workers.
* **Domain-driven structure** — business logic is organized around commerce domains rather than UI features.

## Core components

The architecture centers around the Shopware Core, which provides:

* Data Abstraction Layer (DAL) for database interaction
* Business services and domain logic
* Sales Channel and Store APIs
* Plugin and event system
* Messaging and scheduled task infrastructure

The Storefront and Administration layers consume these services rather than duplicating logic, ensuring consistency across channels.
16 changes: 13 additions & 3 deletions concepts/framework/architecture/storefront-concept.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
nav:
title: Storefront
position: 10
position: 15

---

Expand Down Expand Up @@ -32,11 +32,21 @@ The main concerns that the Storefront component has are listed below. Furthermor

Contrary to API calls that result in single resource data, a whole page in the Storefront displays multiple different data sets on a single page. Think of partials, which lead to a single page being displayed. Imagine a page that displays the order overview in the customer account environment. There are partials that are generic and will be displayed on almost every Page. These partials include - for example, Header and Footer information wrapped into a `GenericPage` as `Pagelets` \(`HeaderPagelet`, `FooterPagelet`\). This very generic Page will later be enriched with the specific information you want to display through a separate loader \(e.g. a list of orders\).

To achieve getting information from a specific resource, the Storefront's second concern is to map requests to the Core. Internally, the Storefront makes use of the [Store API](../../api/store-api) routes to enrich the Page with additional information, e.g., a list of orders, which is being fetched through the order route. Once all needed information is added to the Page, the corresponding page loader returns the Page to a Storefront controller.
To obtain information from a specific resource, the Storefront's second concern is to map requests to the Core. Internally, the Storefront makes use of the [Store API](https://shopware.stoplight.io/docs/store-api/38777d33d92dc-quick-start-guide) routes to enrich the Page with additional information, e.g., a list of orders, which is being fetched through the order route.

![Data and logic flow in Shopware 6 \(top to bottom and vice versa\)](../../../assets/concepts-api-storeApiLogic.svg)

Once all needed information is added to the Page, the corresponding page loader returns the Page to a Storefront controller.

### Store API and the traditional Twig storefront

In the traditional server-side rendered Twig storefront, the Store API is not called directly by the browser. Instead, custom storefront controllers internally use the Store API to fetch data from the Core.

The Store API is stateless and expects authentication information via request headers (for example the `sw-context-token`). In contrast, the traditional storefront relies on session-based authentication, so authentication does not need to be handled manually on every request.

Contrary to the Core, which can almost completely omit templating in favor of JSON responses, the Storefront contains a rich set of Twig templates to display a fully functional shop. Another concern of the Storefront is to provide templating with Twig. The page object, which was enriched beforehand, will later be passed to a specific Twig page template throughout a controller. A more detailed look into an example can be found in [Composite data handling](storefront-concept#composite-data-handling).

Last but not least, the Storefront not only contains static templates but also includes a theming engine to modify the rendered templates or change the default layout programmatically with your own [Themes](../../../guides/plugins/themes/) or [Plugins](storefront-concept).
Last but not least, the Storefront not only contains static templates but also includes a theming engine to modify the rendered templates or change the default layout programmatically with your own [Themes](../../../guides/plugins/themes/) or [Plugins](../../../guides/plugins/plugins/).

## Structure

Expand Down
17 changes: 17 additions & 0 deletions guides/upgrades-migrations/administration/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
nav:
title: Administration
position: 10

---

# Administration

These guides cover upcoming architectural changes and migration paths affecting Administration extensions. Use them to prepare plugins for major system transitions:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

depending on the version not all of them are upcoming, vue3, pinia & vite for example are already completed

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jonas Elfering (@keulinho) How's this? => "These guides cover architectural changes and migration paths affecting Administration extensions, helping you prepare plugins for major system transitions. Depending on the version, some changes (for example, Vue 3, Pinia, and Vite) may have already been completed."


* [Vue 3 migration](./vue3)
* [Meteor components](./meteor-components)
* [Pinia migration](./pinia)
* [Vite migration](./vite)
* [Vue migration build removal](./vue-migration-build)
* [Native Vue implementation](./vue-native)
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
nav:
title: Upgrading to Meteor Components
position: 260
position: 11
---

# Future Development Roadmap: Upgrading to Meteor Components

> **Note:** The information provided in this article, including timelines and specific implementations, is subject to change.
> This document serves as a general guideline for our development direction.

## Introduction
:::info
The information provided in this article, including timelines and specific implementations, is subject to change.
This document serves as a general guideline for our development direction.
:::

With the release of Shopware 6.7, we will replace several current administration components with components from the [Meteor Component Library](https://meteor-component-library.vercel.app/).

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
---
nav:
title: Upgrading to Pinia
position: 261
position: 12
---

# Migration from Vuex in Shopware to Pinia

## Introduction

With the release of Shopware 6.7, we will replace Vuex with [Pinia](https://pinia.vuejs.org/) as the state management library for the administration.

## Why Pinia?
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
nav:
title: Changing from Webpack to Vite
position: 260
position: 13
---

# Future Development Roadmap: Changing from Webpack to Vite

> **Note:** The information provided in this article, including timelines and specific implementations, is subject to change.
> This document serves as a general guideline for our development direction.

## Introduction
:::info
The information provided in this article, including timelines and specific implementations, is subject to change.
This document serves as a general guideline for our development direction.
:::

We are planning substantial changes to the way we build our Vue.js application.
The current Webpack build system has been in place for quite some time now, but like everything in tech, it becomes outdated sooner than later. Additionally to Webpack being slow and outdated, we identified a security risk for the future of our application. Many Webpack maintainers have moved on to other projects. Therefore, the Webpack project no longer receives significant updates. The same applies to the Webpack loaders we currently use.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
nav:
title: Removing Vue Migration Build
position: 260
position: 14
---

# Future Development Roadmap: Removing Vue Migration Build

> **Note:** The information provided in this article, including timelines and specific implementations, is subject to change.
> This document serves as a general guideline for our development direction.

## Introduction
:::info
The information provided in this article, including timelines and specific implementations, is subject to change.
This document serves as a general guideline for our development direction.
:::

Prior to Shopware 6.7, we utilized the Vue migration build to facilitate the transition from Vue 2 to Vue 3 for plugin developers. This approach allowed most public APIs to behave similarly to Vue 2 while enabling gradual migration.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
---
nav:
title: Native Vue
position: 260
position: 15
---

# Future Development Roadmap: Moving Towards Vue Native

> **Note:** The information provided in this article, including timelines and specific implementations, is subject to change.
> This document serves as a general guideline for our development direction.
:::info
The information provided in this article, including timelines and specific implementations, is subject to change.
This document serves as a general guideline for our development direction.
:::

## Introduction

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ nav:

---

# Vue 3 upgrade

## Introduction
# Vue 3 Upgrade

The Shopware administration uses Vue.js `2`, which will reach its end of life (EOL) **on December 31st 2023**. To deliver up-to-date and maintainable software, the administration will use Vue.js `3` from Shopware version `6.6` and upwards. If you are unfamiliar with the changes from Vue.js `2` to Vue.js `3`, please refer to this [official guide](https://v3-migration.vuejs.org/).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ The snippet loading system now follows this resolution order:

When a translation key is requested, Shopware will:

- First check the specific country variant (e.g., `es-AR`)
- If not found, check the base language (e.g., `es`)
- If not found, the legacy fallback will be checked (`en-GB`)
- Finally, fall back to `en` if still not found
* First check the specific country variant (e.g., `es-AR`)
* If not found, check the base language (e.g., `es`)
* If not found, the legacy fallback will be checked (`en-GB`)
* Finally, fall back to `en` if still not found

**Result**: ~90% reduction in duplicate translations while maintaining full functionality.

Expand Down
Loading