Prepare your add-ons for Vaadin 24

Matti Tahvonen
Matti Tahvonen
On Dec 19, 2022 6:31:57 PM
In Product

Hello, add-on authors! This is the Vaadin 24 and Spring Boot 3 period. Although Vaadin 24 has only been in the pre-release stage for a few months, users are already anxious to try out Spring Boot 3, so we anticipate that Vaadin 24 pre-releases will see more usage than pre-releases often do. Therefore, even if you currently don't have plans to join Vaadin 24, try to check to see whether your add-on requires an upgrade.

Not every add-on needs an update

Although many projects will be significantly impacted by the Jakarta namespace shift, many Vaadin add-ons are already prepared for Jakarta EE. Vaadin offers abstraction that protects developers, including add-on authors, from these modifications. 

But if your add-on happens to touch some servlet APIs, it might be fully or partially broken if used in Vaadin 24 applications. A quick and easy way to test basic compatibility is simply to try to use your add-on in a Vaadin 24 project. With a bit of luck, it all works fine without any changes.

Another method is to open the add-on project itself and compile it (and its tests) against Vaadin 24. Naturally, you must take this action if you discover any incompatibilities. You might wish to or need to maintain two branches for a while, which is the worst thing for add-on developers in this situation. We advise cutting a new major early and keeping two branches active at the very least until the release of the final Vaadin 24.

Follow and test regularly against V24 pre-releases

Vaadin 24 is presently at 24.0.0.alpha6, so some disruptive changes might occur. And even modifications to remove certain incompatible breaking changes. So, if you have a minute after pre-releases, double-check that everything is still working properly with your add-on.

Updating an add-on project to compile against Vaadin 24

Add-on updates mirror updates to the actual Vaadin applications in many ways. It probably makes sense to investigate deprecation warnings you receive while compiling with Java 17 against the most recent from the Vaadin 23 series before moving on to Vaadin 24.

Here are some suggested steps for add-on upgrades (although every add-on may be slightly different):

  1. Update to the latest Vaadin 23 version and check if you can get rid of deprecation warnings.
  2. Update to Java 17
  3. Add pre-release repositories to project
  4. Update to the latest version of Vaadin 24 (24.0.0.alpha6 at the time of writing this post)
  5. Fix potential direct or test dependencies that use old javax namespace, like servlet API itself or e.g., Bean Validation (implementation or specification).
  6. Fix all compilation errors. There can be javax imports that need to be changed into jakarta or some API changes in Vaadin components.
  7. Update the Jetty plugin (or any other test server setup you are using) to Jakarta EE-compatible version.
  8. Test that everything is working as expected
  9. Cut a pre-release for Vaadin 24 early adopters

Vaadin Directory now contains version 24

Informing your consumers about compatibility is a great thing you can do for them. If you know your add-on is incompatible with 24, but don’t have time to get it fixed, announce that in the Directory. In the best-case scenario, you could get a PR to have it resolved by a different community member. Additionally, if you have tested or upgraded your add-on for Vaadin 24, you can mark that now in the Directory as we just recently added version 24 to the database of the Directory service.

If you have any questions, please join the Vaadin Discord server, where our team will be happy to help!

Matti Tahvonen
Matti Tahvonen
Matti Tahvonen has a long history in Vaadin R&D: developing the core framework from the dark ages of pure JS client side to the GWT era and creating number of official and unofficial Vaadin add-ons. His current responsibility is to keep you up to date with latest and greatest Vaadin related technologies. You can follow him on Twitter – @MattiTahvonen
Other posts by Matti Tahvonen