Blog

What’s new in Vaadin 24.9

By  
Miikka Andersson
Miikka Andersson
·
On Sep 17, 2025 7:47:12 PM
·
In Product

Vaadin 24.9 closes the 24.x chapter with a set of features that smooth out daily workflows and clear the path to what’s next. You can copy-paste designs with your own custom components, manage assets directly with @NpmPackage, and rely on more predictable behavior in routing, forms, and tooltips. At the same time, we’re phasing out older APIs like VaadinWebSecurity, so your projects are ready for the big leap: Vaadin 25.0.


Blogpost_24.9_v1.1

Streamlined trials for premium features

Interested in premium features, but felt it was too much hassle to start a trial? Trying them out is now straightforward. You can start a 7-day trial instantly, with no sign-up required. It kicks in automatically when you use premium components or tools like vaadin-charts or Copilot and run your app. You can also trigger it yourself from the dev mode menu.

7d_trial

If you need more time, you can start a 30-day full trial with just registration. Just log in with email or social auth to unlock the trial. The longer window gives you space for real evaluations and higher confidence in taking the next step.

30d_trial

And since 30 days can go by quickly, you still have a safe fallback. If your trial has expired but you need to demo your app in production, start it with the -DcommercialWithBanner parameter. This adds a visible banner stating that the app is running in trial mode, which is ideal for stakeholder reviews, MVPs, and internal demos.

banner

Flow improvements

New <code> component for code snippets

Render code snippets the right way with a first-class Flow component: semantic HTML, safe escaping by default, and themeable styling that matches the rest of your app. Drop the ad-hoc Div + CSS combos, avoid copy/paste escaping bugs, and keep technical views (docs, admin tools, logs) consistent and accessible.

Manage static assets with @NpmPackage

Declare static assets from npm packages right where you use them: @NpmPackage(assets = {"dist/line-awesome/css/**:line-awesome/dist/line-awesome/css"})

Flow copies those files into your frontend at build time (only if missing or newer), so fonts/icons/CSS from third-party packages are available without manual copying or theme.json asset entries—cleaner builds and easier reusable components.

Hilla: wildcard views with subdirectories

Wildcard views in the file-based router now work across subdirectories. You no longer need to duplicate {…wildcard}.tsx files under every parameterized folder just to handle unknown routes. One wildcard view at the root can cover all unmatched paths, keeping your project structure clean and making 404 handling much simpler.

Design System improvements

Improve tooltip discoverability with styling hooks

Elements with tooltips now expose a has-tooltip attribute. This lets you add visual indicators in CSS so users can immediately see when a tooltip is available. It improves discoverability, keeps styling consistent across components, and removes the need for brittle selectors or manual classes.

Proper tooltip support for SideNavItem

SideNavItem now has built-in support for tooltips. They are accessible and show only on the navigation item itself, not its children, making collapsed or icon-only side navigation easier to use. Like other components, SideNavItem now implements the HasTooltip interface.

Improved value sync for CustomField

CustomField now synchronizes its value in more situations, not just on explicit change events. This ensures data binding and validation always see the latest state, reduces subtle bugs, and makes composite fields behave more predictably.

Copilot: custom component copy-paste

You can now copy-paste Figma designs that include your own custom components, not just the built-in Vaadin ones. Copilot maps them directly in the generated view, so everything comes across in one step with no placeholders or manual fixes.

Framework: deprecate VaadinWebSecurity

The VaadinWebSecurity base class is now deprecated. It will be removed in Vaadin 25. Use the Spring Security configuration style with VaadinSecurityConfigurer instead. This reduces Vaadin-specific magic, aligns your app with Spring Security best practices, and gives you a clearer path forward for future upgrades.

🎙️ Vaadin 24.9 release webinar + 24.x highlights

We’re hosting a live walkthrough of Vaadin 24.9 on Wednesday, September 24 at 15:00 CEST / 9:00 AM EDT. Since this is the last scheduled release in the 24.x line, we will also look back at the key highlights across the entire 24.x series.

No registration needed. Just join us on YouTube and bring your questions.

📅 Add to calendar
📺 Watch live on YouTube

Wrapping up

Vaadin 24.9 brings important refinements to the 24.x series. It is a stable release to build on today, with smoother workflows, better consistency across components, and a cleaner foundation for the future. As you upgrade, check the deprecations like VaadinWebSecurity and update your code where needed to keep your projects future-proof.

This is the last scheduled minor release before Vaadin 25.0. Additional 24.x updates may still follow, including feature backports based on customer needs.

Check out the release notes for full details, and let us know what you think in the Vaadin Forum or on GitHub.

Miikka Andersson
Miikka Andersson
Miikka is a versatile software engineering and product business professional with over two decades of experience. He joined Vaadin as a Technical Product Marketing Manager in mid-2024 to drive product growth and connect technical solutions with customer needs.
Other posts by Miikka Andersson