Vaadin 25: Streamlined Build Setup for Enhanced Developer Experience and Cloud Compatibility

Software Development

Vaadin 25 dramatically simplifies the build process, making Maven and Quarkus projects production-ready by default. Discover how this update enhances cloud deployment, improves developer experience, and integrates seamlessly with modern CI/CD pipelines.

Vaadin 25 introduces a significantly streamlined build setup, a major enhancement for existing users. Maven-based projects, in particular, will benefit from build files that are cleaner, more readable, and contain fewer Vaadin-specific configurations, making them less daunting for new developers. This update also boosts compatibility with diverse cloud deployment environments, eliminating the need for complex workarounds.

Production-Ready by Default: Enhanced Buildpack Compatibility

Vaadin has consistently aimed to abstract away front-end development complexities for Java developers, including the build process. While the underlying front-end build remains, Vaadin’s integrated tooling now handles it seamlessly in both development and production environments.

Previously, developers had to manually activate the production build using a specific production profile in pom.xml, a Vaadin-specific nuance that often caused confusion. With Vaadin 25, this separate production profile is no longer required. Invoking a standard build command, such as mvn package, now automatically generates production-ready artifacts. The Vaadin build plugin inherently optimizes the front-end bundle for deployment and excludes development-mode tooling by default, streamlining the process significantly.

This fundamental shift not only enhances the deployment experience but also ensures Vaadin projects are immediately compatible with modern deployment pipelines, including Buildpacks utilized by numerous Platform-as-a-Service (PaaS) providers. Organizations with in-house CI/CD setups will find that standard Java build configurations now seamlessly integrate with their Vaadin projects.

Prioritizing Developer Experience (DX)

Developer experience remains a core focus for Vaadin. The new build setup maintains the previous level of smoothness, often exceeding it in seamlessness. Leveraging recent Spring Boot updates, Maven projects now handle optional dependencies more effectively. This improvement directly benefits Vaadin, allowing its development mode to be included as an optional dependency without impacting production builds.

Practically, this means:

  • Starting your application from an IDE (via the main method) or running mvn spring-boot:run will activate development mode.
  • Building your application (e.g., with mvn package) automatically excludes Vaadin's development-time tooling and optimizes the front-end bundle for production.

For classic WAR-packaged projects (e.g., JakartaEE/CDI or plain servlets), developers should now activate a development profile in their IDE (or define one in settings.xml) to utilize Vaadin Copilot and other development-time tools. This production-first strategy simplifies deployment for these projects, bringing them on par with the ease of Spring Boot deployments.

Enhanced Integration with Quarkus

Similar optimizations have been extended to Quarkus projects, where Vaadin has leveraged Quarkus’s flexible extension model to achieve even greater integration. In Vaadin 25, the vaadin-maven-plugin or Gradle plugin are no longer necessary for Quarkus projects. Simply adding the Vaadin extension (a single dependency) is enough to get started:

  • quarkus dev (or the corresponding Maven goal) initiates your Vaadin application in development mode.
  • mvn package builds a production-ready package.

Underlying this streamlined approach, Quarkus tooling employs the same robust logic as the standalone Maven and Gradle plugins, but with a more integrated and seamless experience.

Get Started with the Updated Vaadin 25 Beta

Vaadin 25 is currently in its beta phase. While final refinements are underway, early feedback on these build improvements and other new features is highly encouraged. Trying out a new Vaadin 25 project is straightforward: utilize your IDE’s Vaadin project wizard (selecting the pre-release version) or explore these updated starter projects:

  • Spring Boot
  • Basic WAR project
  • CDI/Jakarta EE project
  • Gradle (with Spring Boot)

For those looking to integrate Vaadin 25 into an existing project, refer to the upgrade guide available in the Vaadin Documentation's V25 branch.