> Markdown version of [Publish a Component](https://vaadin.com/docs/next/building-apps/components/publish-component). Section index: [llms.txt](https://vaadin.com/docs/next/building-apps/llms.txt)

# Publish a Component

This article covers how to publish a packaged component add-on so others can use it. Make sure you have [packaged your component](https://vaadin.com/docs/next/building-apps/components/package-component.md) before proceeding. To share a component only between your organization’s own applications, see [Share Components between Applications](https://vaadin.com/docs/next/building-apps/components/share-component.md) instead.

## <a id="versioning"></a>Versioning

Follow [semantic versioning](https://semver.org/) for your add-on releases:

- **Major** — breaking API changes (1.0.0 to 2.0.0)

- **Minor** — new features, backward compatible (1.0.0 to 1.1.0)

- **Patch** — bug fixes, backward compatible (1.0.0 to 1.0.1)

When releasing a new version:

1. Update the version in `pom.xml`.

2. Build and test the add-on.

3. Deploy to Maven Central and/or upload to the Vaadin Directory.

For automating releases, consider using the [Maven Release Plugin](https://maven.apache.org/maven-release/maven-release-plugin/), which handles version bumping, tagging, and deployment in a single command.

If your add-on supports multiple Vaadin major versions, consider maintaining separate branches for each — for example, `main` for the latest version and a dedicated branch for each older major version. This keeps each branch focused and simplifies testing.

## <a id="publishing-to-maven-central"></a>Publishing to Maven Central

Publishing to Maven Central is the recommended way to distribute your add-on. It allows users to add it as a standard Maven dependency without any special repository configuration. For better visibility in the Vaadin community, you should still list add-ons distributed via Maven Central in the [Vaadin Directory](https://vaadin.com/directory/).

Publishing to Maven Central requires:

- A [Central Portal](https://central.sonatype.org/register/central-portal/) account

- GPG signing of artifacts

- The `central-publishing-maven-plugin` in your POM

This process is not Vaadin-specific. Follow the [Central Portal Maven publishing guide](https://central.sonatype.org/publish/publish-portal-maven/) for detailed instructions.

## <a id="publishing-to-the-vaadin-directory"></a>Publishing to the Vaadin Directory

The [Vaadin Directory](https://vaadin.com/directory) is Vaadin’s marketplace for add-ons. Publishing there gives your component visibility within the Vaadin community and makes it discoverable alongside other Vaadin components.

### <a id="build-the-add-on-zip"></a>Build the Add-on ZIP

Build your add-on with the `directory` Maven profile:

```terminal
mvn clean install -Pdirectory
```

This produces a ZIP file in the `target/` directory containing your JAR and its manifest.

### <a id="upload-to-the-directory"></a>Upload to the Directory

<!-- vale Vale.Terms = NO -->

1. Go to [vaadin.com/directory](https://vaadin.com/directory) and sign in.

2. Click **Publish your add-on**.

3. Upload the ZIP file from your `target/` directory.

4. Fill in the add-on details: name, description, and category.

5. Click **Publish**.

<!-- vale Vale.Terms = YES -->

After review, your add-on appears in the directory and other developers can find it.

## <a id="writing-a-good-overview"></a>Writing a Good Overview

The directory listing is the first thing developers see. A good overview helps them decide whether to use your add-on.

Include the following:

**Screenshots or GIFs** — show what the component looks like in action. A visual preview is worth more than paragraphs of description.

**Supported Vaadin versions** — state which versions of Vaadin the add-on supports and the minimum version required.

**Minimal usage example** — a short code snippet showing how to add the component to a view:

```java
StatusBadge badge = new StatusBadge("Active", Status.SUCCESS);
add(badge);
```

**Features and limitations** — list what the component does and what it doesn’t do. This saves developers time and sets expectations.

**Browser support** — mention any browser-specific limitations if applicable.

## <a id="updating-the-manifest"></a>Updating the Manifest

The `assembly/MANIFEST.MF` file contains metadata that the Vaadin Directory uses to display your add-on:

```
Vaadin-Package-Version: 1
Implementation-Title: My Status Badge Component
Implementation-Version: 1.0.0
Vaadin-Addon-Name: Status Badge
Vaadin-Addon-License: Apache-2.0
```

Update this file before each release to reflect the current version and any changes to the add-on metadata.
