> **Licensing:** this add-on is a thin wrapper licensed under **Apache 2.0**. It contains no code of its own and simply pulls in the **Dynamic Menu AppJar** modules, which are **commercial software** distributed under the [AppJars Software License Agreement](https://www.appjars.com/legal/license/v1/). You can use Dynamic Menu for free in **free mode** (up to 5 menu items; separators, items without a URL and items that open an AppJar view are not counted). A license removes all limits. See [Licensing](https://docs.appjars.com/licensing/).
**Dynamic Menu** moves your application's navigation menu out of the code and into an administration UI built with Vaadin Flow. Administrators create, nest and reorder menu items at runtime, decide who sees each entry, and carry the whole configuration between environments, with no code changes or redeployments.
## Features
- **Runtime menu management:** create, edit and delete menu items from a dedicated view, and reorder or nest them by dragging rows in a tree grid.
- **Multi-level hierarchy:** nest items into groups and sub-groups, with section headers and separators to structure long menus.
- **Internal routes and external URLs:** point items at any registered route, including routes with parameters, or at an external link, with icons and tooltips.
- **Permission-based visibility:** each item either follows the access rules of the view it opens or carries explicit role constraints (required, any-of and excluded roles); groups left empty are hidden automatically.
- **Multilingual labels:** labels and tooltips can be i18n keys, translated at runtime into the user's language.
- **JSON import and export:** back up the menu or move it between environments, with a preview and a choice of merge strategies on import.
## Installation
If your project doesn't declare it yet, add the Vaadin add-ons repository:
```xml
vaadin-addons
https://maven.vaadin.com/vaadin-addons
```
Add the dependency. The wrapper declares the AppJars repository (`https://maven.appjars.com`), so Maven resolves the modules automatically:
```xml
org.vaadin.addons.appjars
appjars-dynamic-menu
2.1.0
```
- **Gradle** ignores repositories declared in dependency POMs, so add `maven { url "https://maven.appjars.com" }` to your repositories.
- **Nexus/Artifactory mirroring everything (`mirrorOf *`):** your administrator needs to add a proxy for `https://maven.appjars.com`.
Then follow the [Getting started guide](https://docs.appjars.com/dynamic-menu/getting-started/).
## Requirements
- Java 21
- Vaadin 25.2
- Spring Boot 4.1
- A `DynamicMenuAuthorityUtils` bean exposing the application's roles ([details](https://docs.appjars.com/dynamic-menu/developer-guide/))
- JPA / Hibernate, with `hibernate.event.merge.entity_copy_observer=allow` ([details](https://docs.appjars.com/dynamic-menu/getting-started/))
## Included dependencies
| Artifact | License |
|---|---|
| `com.appjars:appjars-dynamic-menu-flow` | AppJars Software License Agreement v1 (commercial) |
| `com.appjars:appjars-dynamic-menu-business-impl` | AppJars Software License Agreement v1 (commercial) |
| `com.appjars:appjars-dynamic-menu-data-impl` | AppJars Software License Agreement v1 (commercial) |
These modules transitively bring in the rest of the Dynamic Menu modules and `appjars-*-utils` (same commercial license), plus open-source libraries such as Vaadin add-ons by Flowing Code (Apache 2.0).
## Links
- [Product page](https://www.appjars.com/catalog/dynamic-menu/)
- [Documentation](https://docs.appjars.com/dynamic-menu/overview/)
- [Demo application](https://github.com/AppJars/dynamic-menu-demo)
- [Licensing and free mode](https://docs.appjars.com/licensing/)
AppJars are built and maintained by [Flowing Code](https://www.flowingcode.com).