TLDR: Introducing Widgetset - A library that allows you to enjoy Vaadin Flow without build plugins and slow front-end builds, the DefaultWidgetSet for Vaadin Flow.
Now why would you want that and why did I want that?
Although Vaadin Flow apps are essentially built with pure Java, they mandate having vaadin-maven-plugin in the build. And also a separate custom profile to then do the actual “production build” (see this other “trick” to get rid of that, without losing “dev mode”). This slows down build, requires developers to install (or rely on autoinstallation) of front-end tooling and makes projects consume a ton of disk space.
The benefits of Vaadin build plugin are clear (development time tooling, ability to add client-side extension and more optimized front-end bundle for deployment), but for many apps this is not necessarily worth of the tradeoffs. In Vaadin versions 6-8, there was a DefaultWidgetSet available for whose who didn’t want for the slowish front-end generation to kick in (based on GWT at that time, these days implemented with NodeJS/npm/Vite).
I have been recently hacking with a tooling to generated “vector tilesets” from open data sources, based on the awesome JBang (because my Bash skills are rusty). As I quickly noticed that also my CLI UI skills are rusty, I desided to add a GUI for my tooling - naturally with Vaadin. For that I needed to create a replacement for the good old DefaultWidgetset, so that I can run Vaadin just by adding a single dependency (without any build plugins or front-end tooling).
Widgetset project is now the home of “pre-built Vaadin front-end bundle” - DefaultWidgetSet for Vaadin Flow.
Although a utility for JBang was my initial need, the same concept can be applied of certain deployed applications as well. Thus I immediataly modularised the first version, and created plain servlet, Quarkus and Spring Boot examples.
BTW. The project can also suit as a receipe for you if you want to create your own static “front-end library”, but with your own addition like custom theme or some great add-ons. I’ll try to put together an example with those (and some tests) at some point!