---
# System prepended metadata

title: Component sharing

---

# Component sharing
We want to make sure components can be published and used by different teams. That enables reusabaility, feature ownership and avoid component duplication. By having components in place, we can even faster develop new features for our online shop and guarantee the best user experience.

The usage of components can be splitted up into two different parts: Publishing components and using components.

## Recommendation for publishing components

- 1.0 We recommend to use [semantic-release](https://semantic-release.gitbook.io/semantic-release/)
    - 1.1 We want to use semantic versioning (https://semver.org/) for our libraries.
    - 1.2 Every library is providing a changelog (https://keepachangelog.com/en/1.0.0/) providing a curated, chronologically ordered list of notable changes for each version of a library to prevent navigating through the git history when there are open questions.
 - 2.0 Documentation is required
    - 2.1 An overview of all different components provided by your team is provided
    - 2.2 Component installation: How to install and use the component?
    - 2.3 Component usage:
        - 2.3.1 Which properties does the component require?
        - 2.3.2 Are there any events that the component is firing? If so, which one and when are they being fired?
        - 2.3.3 Extra slots are documented
- 3.0 We recommend to fix bugs as soon as possible and release new features when available (MVP approach)
- 4.0 We recommend to have unittests and snapshot tests for the component in place


## Recommendation for using components

- 1.0 We recommend to use [peer dependencies](https://nodejs.org/en/blog/npm/peer-dependencies/) when adding new packages.
    - Example using NPM: "vue": "^2.6.0"
