Blog

AMA with Matti Tahvonen, Product Owner of Vaadin Flow

By  
Luis Gutierrez
Luis Gutierrez
·
On Feb 16, 2021 2:29:40 PM
·

Frame 20AMA blog

We held our first AMA (Ask Me Anything) with Matti Tahvonen, Product Owner of Vaadin Flow, on our official Discord server on February 4. Some very interesting questions came up and we’ve summarized the highlights in this post.

First things first: who is Matti? In his own words:

Hello, I’m one of three Mattis who work at Vaadin, but I’m the original one. Been here since 2006: originally hired to write/fix the JS side of our “Millstone AJAX adapter” (ancient Vaadin version), then moved to various R&D projects and after that  I was a developer advocate in our marketing team for a while. Nowadays, I’m the Product Owner of Flow (the Java framework of Vaadin). When not working, I’m usually doing all kinds of things related to nature and endurance sports, except for this last year that I spent building my summer cottage on the archipelago and, ~ 70% done. Ask me anything :)

The questions from our community

[Q] We have multiple customer requests for a multi-theme application. It should a) contain multiple themes for the same application and b) be able to change the themes on the fly. Can we expect any progress on this in the next LTS?

You can use multiple themes on different parts of your app, provided the parts have a different main layout. Changing themes isn't as flexible as it was back in the days of V8.

This is not currently planned for the next LTS either, but if I remember correctly, there is a ticket for it. Letting us know on the ticket that you miss the feature helps us to prioritize the numerous feature requests we get.

Here is the ticket related to changing themes at runtime: https://github.com/vaadin/flow/issues/5163

Adding a thumbs-up or giving us more details about your requirements/wishes in a comment are both valid ways to advocate for any issue—both enhancements and bugs.

[Q] When is the next LTS? Is everything still on track for Q3/4 2021?

We haven't made any public announcement about it, because so many things are still uncertain. Roughly, we plan for a 2-year cadence, so that would mean Vaadin Q3/4 2021. We held a workshop on our roadmap last week and will be continuing next week. The earliest we can promise for is 2021 Q4. That is our current goal internally, but there are still a huge amount of things we'd like to include. And we remember our hassles with V10 & V14 all too well, so we’ll probably have quite a long feature freeze as well.

[Q] What's the estimated release date for Vaadin 14.5?

LTS minors, like 14.5, are feature driven, so they come out when we are ready. We'll have an internal test round for the 14.5 alpha release next week and then test the betas +/- 1 month later, making it roughly the middle of March. Which feature are you waiting for?

[Q] What kind of performance improvements are you considering for future versions & when can we expect them(https://vaadin.com/roadmap -- Upcoming features)?

We'll be doing some profiling for views with large forms. We have several reports showing that rendering these are slower than they used to be. Then we'll optimize as best we can. Grid is another big topic and there has also been some regression compared to older Vaadin versions. For this, we have prototyped "horizontal virtual scrolling", which will help a lot in business apps where you have dozens of columns. Some smaller performance fixes have actually already landed, like rendering a lot of simple Vaadin TextFields, this is now a lot faster than it was last spring.

[Q] I am waiting for the latest chart additions and better databinder lazy load handling —when can we expect these?

Lazy loading improvements and the charts update will probably be in 14.6, but we hope to get that out during the spring too.

[Q] Do you plan to integrate the CustomLayout Leif created in cookbook as an official long-term way of creating simple html snippets? Having to rely on fast-moving ecosystems like JavaScript Frameworks (Polymer, lit, whatever comes next) isn't really the thing enterprise applications like best.

Nope, although you are not the first one to hope for something like this. For very simple things, it would probably rock, but if you'd like to use any other web component in this type of layout, you'd have a problem letting the front-end build know what to drag into the bundle.

In your Vaadin apps, are there often components in there or is it more just to show some date-like reports? For this, some kind of advanced template and safe html component would be nice. I have built something like this in my hobby apps using Velocity.

[Q] Will we see more Spring Boot support this year? Like proper ViewScope or the famous event bus?

My crystal ball says, Yes.

There won't be ViewScope support, but there will be for RouteScope. The current plan is to start working on it before the summer. Then, we’ll continue with better Spring Security integration. EventBus is not currently on the table. Have you tried the community build version—the same one that was super popular in V7/V8 apps?

[Q - Cont.] Was the one from V7/V8 by Petter ported? Wasn't it discontinued because of a security flaw in the implementation? But Yes, that thing was awesome!

The security context is not propagated, so in certain cases it sure isn't the thing to use, but it can still be very helpful with other use cases/apps: https://github.com/peholmst/vaadin4spring/blob/master/eventbus/README.md

In many cases, you just want to use the event bus between the same user views—all is fine then.

[Q] I chatted with Artur Signell (CTO at Vaadin) about the artur-helper” library and whether it would be incorporated in Vaadin. I think he said this already is better in V18 and will come into 14.5 (now 14.6) as a  feature: "Simple lazy data binding to Grid and Combobox"?

Yup, the new lazy data binding is so much easier that the "artur-helper" became obsolete.

Here is a summary of the lazy data binding changes: https://vaadin.com/blog/data-binding-to-grid-gets-easier-and-more-efficient. For ComboBox, similar changes are now in and we'll try to backport those almost as to 14.6. 

[Q] The recommended way of creating complex grid columns is with TemplateRenderer: there is currently a big problem with "duplicate" ids. Is there a plan to make it easier to use? Flow issue: https://github.com/vaadin/flow/issues/8629

TemplateRenderer is not my favorite. I have only used it a little (only when testing) so I don't really know. I favor ComponentRenderer, even though the performance isn’t shining currently. This is one thing we should profile during the spring.

I will ask our support experts tomorrow what their stock answer is for the duplicate id issue, if there is one.

[Q] Is there a possibility to align a componentColumn of a TreeGrid to the right? In the flow API, I don't see anything and in the browser dev tools, the columns are just "vaadin-grid-cell-content" components (see screenshot). I cannot find a way to put an ID (or something like that) on the column for the content I want to align. I'm also a bit lost doing it via CSS.

Screenshot of Vaadin Grid cell.

When I add an ID at the column in the Java code, the ID is only at the button container, but not at the column space


this.tree.addComponentColumn(this::addButton).setWidth("10em").setId("buttoncolumn");

 

There is no similar API to the one in V8, but I'm sure it can be achieved with CSS. My CSS skills are a bit rusty, but I'll open an ID and see if I can come up with something.

I had a bit of a problem giving a good selector for the column. For some reason, I wasn't able to make the class names appear at all in TreeGrid—a bug—Anyway, grid.addClassName("my-grid") and the following CSS seems to do the trick: .my-grid vaadin-button { float: right; }

But if there are multiple component columns, then you'd need a better selector for the exact column. One workaround would be to add a classname to the buttons directly and then use that as a selector.

Now I got it. I'm an oldie who hasn't yet adapted to all these shadow root things. The class name gets to the shadow dom and things get "complicated" with the shadow root. The docs on this are pretty good: https://vaadin.com/components/vaadin-grid/html-examples/grid-styling-demos#generating-class-names-for-grid-cells

[Q] Are there any plans to integrate MultiselectCombobox into the main Vaadin components?

This falls into my colleague, Rolf Smeds (Product Owner of the Vaadin Design System), area. He will decide, but I haven't heard of any plans. We have noticed that it is quite a popular add-on, but some things are just better as add-ons.

Sometimes, even that add-on isn't enough, the next person will want columns and so on. I remember having built several custom multiselect components (using compositions of existing ones) for various projects. MultiselectCombobox is probably on the edge of whether it is generic enough to be shipped in the core component set.

Join Discord

We have more things coming up and joining our Discord server is one of the easiest ways to keep in the loop, and better yet, to get in touch with the community and the Vaadin team.