<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VAADIN on Flowing Code</title><link>https://www.flowingcode.com/en/category/vaadin/</link><description>Recent content in VAADIN on Flowing Code</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 18 Aug 2026 14:17:56 +0000</lastBuildDate><atom:link href="https://www.flowingcode.com/en/category/vaadin/index.xml" rel="self" type="application/rss+xml"/><item><title>Google Maps Add-On: Mobile Right-Click for Markers</title><link>https://www.flowingcode.com/en/google-maps-add-on-mobile-right-click-for-markers/</link><pubDate>Tue, 18 Aug 2026 14:16:43 +0000</pubDate><guid>https://www.flowingcode.com/en/google-maps-add-on-mobile-right-click-for-markers/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2078" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/09/markers-mobile-1024x585.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">In modern web development, creating a consistent and intuitive user experience across all devices is &lt;strong>essential&lt;/strong>. Users expect features to work seamlessly, whether they’re on a desktop with a mouse or a mobile with touchscreen.&lt;/p></description></item><item><title>Building a Vaadin Add-on in Record Time with Claude AI</title><link>https://www.flowingcode.com/en/building-a-vaadin-add-on-in-record-time-with-claude-ai/</link><pubDate>Tue, 21 Jul 2026 13:39:02 +0000</pubDate><guid>https://www.flowingcode.com/en/building-a-vaadin-add-on-in-record-time-with-claude-ai/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2391" height="559" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/06/relative-time-blog-post-1024x559.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Not long ago, I shared my experience on &lt;a href="https://www.flowingcode.com/en/vaadin-10-to-25-migrating-a-8-year-old-app-with-claude-ai/">how to migrate a legacy Vaadin application with the help of Claude AI&lt;/a>. That experience proved that AI is fantastic for untangling legacy code, but it left me with a new question: &lt;strong>What happens when we start from scratch?&lt;/strong> Recently, my team at Flowing Code proposed creating a new add-on: a Vaadin wrapper around the &lt;code>&lt;a href="https://github.com/github/relative-time-element">@github/relative-time-element&lt;/a>&lt;/code> component. This time, I decided to keep Claude in the loop from minute zero, not just as a code generator, but as an architectural design partner.&lt;/p></description></item><item><title>Why Vaadin Still Matters in 2026</title><link>https://www.flowingcode.com/en/why-vaadin-still-matters-in-2026/</link><pubDate>Tue, 30 Jun 2026 13:40:16 +0000</pubDate><guid>https://www.flowingcode.com/en/why-vaadin-still-matters-in-2026/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2335" height="572" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/06/Why_vaadin_still_matters_2026-1024x572.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">In an industry obsessed with the new and shiny, asking why a technology continues to thrive can be more interesting than asking what will replace it next.&lt;/p>
&lt;p class="wp-block-paragraph">&lt;a href="https://vaadin.com/">Vaadin&lt;/a> is not a newcomer. Its development started in the early 2000s, and it became open source in 2002. Over the years, it has gone through several major architectural changes while remaining actively developed and widely used in enterprise applications. In a space where frameworks often come and go within a few years, that alone makes Vaadin worth reflecting on.&lt;/p></description></item><item><title>Vaadin 10 to 25: Migrating a 8-Year-Old App with Claude AI</title><link>https://www.flowingcode.com/en/vaadin-10-to-25-migrating-a-8-year-old-app-with-claude-ai/</link><pubDate>Thu, 18 Jun 2026 19:49:25 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-10-to-25-migrating-a-8-year-old-app-with-claude-ai/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2281" height="572" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/06/global-stats-2026-1024x572.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Back in 2018, &lt;a href="https://www.flowingcode.com/en/vaadin-10-spring-demo-application-world-cup-rusia-2018-stats/">our team at Flowing Code built a quick, scrappy demo to show off the then-brand-new Vaadin 10&lt;/a>. It was a hackathon project built around the major global football tournament happening in Russia at the time. The app was designed as a live dashboard tracking match fixtures, real-time scores, and group standings.&lt;/p></description></item><item><title>Vaadin 25: How We Solved JSON Migration</title><link>https://www.flowingcode.com/en/vaadin-25-how-we-solved-json-migration/</link><pubDate>Fri, 19 Dec 2025 18:59:32 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-25-how-we-solved-json-migration/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2201" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/12/Upgrading-Add-ons-for-Vaadin-25-How-We-Solved-JSON-Migration-2-1024x576.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">&lt;strong>Vaadin 25&lt;/strong> was just released, and it comes with an &lt;a href="https://vaadin.com/blog/vaadin-25-0-release">interesting set of breaking changes&lt;/a> to keep us entertained and wide awake as we head into the year’s final stretch.&lt;/p>
&lt;p class="wp-block-paragraph">At &lt;strong>Flowing Code&lt;/strong> we &lt;a href="https://www.flowingcode.com/en/opensource/addons/">maintain more than 30 add-ons&lt;/a>, and most of them currently &lt;strong>support Vaadin 14, 23, and 24&lt;/strong>. As you can imagine, this makes the Vaadin 25 migration cycle a substantial effort. And &lt;strong>our goal is ambitious&lt;/strong>: keep a &lt;strong>single codebase&lt;/strong> compatible with all supported Vaadin versions, without branching off into Vaadin-25-specific releases unless absolutely necessary.&lt;/p></description></item><item><title>Improving Code Reviews with AI: Our Experience with CodeRabbit</title><link>https://www.flowingcode.com/en/improving-code-reviews-with-ai-our-experience-with-coderabbit/</link><pubDate>Thu, 13 Nov 2025 12:42:55 +0000</pubDate><guid>https://www.flowingcode.com/en/improving-code-reviews-with-ai-our-experience-with-coderabbit/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2110" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/10/review-2-1024x576.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">It seems like everyone is using &lt;strong>AI&lt;/strong> these days. From chatbots to code generators, the wave of tools promising to make developers’ lives easier keeps growing. At Flowing Code, we wanted to see how AI could actually help in our day-to-day work, not just in theory, but in practice. After some investigations and considerations on what could be improved in our daily tasks, we decided to dive into the AI world with &lt;a href="https://www.coderabbit.ai/">CodeRabbit&lt;/a>, a tool designed to help &lt;strong>review Pull Requests&lt;/strong>.&lt;/p></description></item><item><title>Our Commitment to Open Source: Releases and Updates in 2024</title><link>https://www.flowingcode.com/en/our-commitment-to-open-source-releases-and-updates-in-2024/</link><pubDate>Tue, 17 Dec 2024 15:15:31 +0000</pubDate><guid>https://www.flowingcode.com/en/our-commitment-to-open-source-releases-and-updates-in-2024/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1806" height="439" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/11/flowing-addons-1024x439.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">If you keep up with our work, you may already know that here at &lt;strong>Flowing Code&lt;/strong>, we’re passionate about contributing to the Open Source community and dedicated to delivering solutions that can help developers to build better applications. This year, as part of that commitment, we’ve successfully released eight new &lt;a href="https://vaadin.com/">&lt;strong>Vaadin&lt;/strong>&lt;/a> add-ons. If you haven’t had a chance to explore them yet, let’s take a quick look at what each of these add-ons offers.&lt;/p></description></item><item><title>Introducing our first Vaadin add-ons integrating React Components</title><link>https://www.flowingcode.com/en/introducing-our-first-vaadin-add-ons-integrating-react-components/</link><pubDate>Thu, 15 Aug 2024 18:24:30 +0000</pubDate><guid>https://www.flowingcode.com/en/introducing-our-first-vaadin-add-ons-integrating-react-components/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="Introducing our first Vaadin add-ons integrating React Components" class="wp-image-1722" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/08/vaadin-react-04-1024x585.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Vaadin 24.4 brings exciting new capabilities for integrating React into Vaadin applications in various forms. This offers developers a range of integration options, providing unprecedented flexibility in building modern web applications. You can delve into the various possibilities and the reasons behind this improvement in &lt;a href="https://vaadin.com/blog/vaadin-24.4-opens-the-door-to-the-land-of-react">Vaadin’s blog post&lt;/a>.&lt;/p></description></item><item><title>Google Maps Add-on: How to Get and Track Current Location</title><link>https://www.flowingcode.com/en/google-maps-add-on-how-to-get-and-track-current-location/</link><pubDate>Thu, 18 Jul 2024 13:14:01 +0000</pubDate><guid>https://www.flowingcode.com/en/google-maps-add-on-how-to-get-and-track-current-location/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="a map with a marker simulating current location" class="wp-image-1670" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/06/maps-location-1024x576.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">The &lt;a href="https://vaadin.com/directory/component/google-maps-addon">Google Maps Add-on&lt;/a> is a powerful wrapper component around the &lt;a href="https://www.npmjs.com/package/@flowingcode/google-map">Google Maps Web Component&lt;/a>. This add-on allows you to display a customized map and incorporate various map-related elements such as markers, polygons, custom controls and more. You can explore all the features the add-on provides in our &lt;a href="https://addonsv24.flowingcode.com/googlemaps">online demo&lt;/a>. For now, we’ll focus on how to obtain and track the user’s current location.&lt;/p></description></item><item><title>A Guide to Using Badge List Add-on</title><link>https://www.flowingcode.com/en/a-guide-to-using-badge-list-component/</link><pubDate>Thu, 30 May 2024 13:50:53 +0000</pubDate><guid>https://www.flowingcode.com/en/a-guide-to-using-badge-list-component/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1627" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/05/badge-blog-post-1024x585.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Introducing &lt;a href="https://vaadin.com/directory/component/badge-list-add-on">Badge List component&lt;/a>, one of our latest &lt;a href="https://vaadin.com/">Vaadin&lt;/a> add-ons, created to address the challenge of displaying a dynamic list of badges within a confined space, such as a &lt;a href="https://vaadin.com/docs/latest/components/grid">Vaadin Grid&lt;/a> cell, in a responsive and user-friendly manner.&lt;/p></description></item><item><title>How to use Angular Components with Vaadin</title><link>https://www.flowingcode.com/en/how-to-use-angular-components-with-vaadin/</link><pubDate>Mon, 04 Jul 2022 15:19:43 +0000</pubDate><guid>https://www.flowingcode.com/en/how-to-use-angular-components-with-vaadin/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-full is-resized">&lt;img alt="" class="wp-image-1231" height="376" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/06/How-to-use-Angular-Components-with-Vaadin-B.png" width="840"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">If you’re familiar with our work, you know that &lt;a href="https://www.flowingcode.com/en/open-source/">we’ve created a few components&lt;/a> to be used in &lt;a href="https://vaadin.com/flow">Vaadin Flow&lt;/a> applications based on existing &lt;a href="https://www.webcomponents.org/introduction">Web Components&lt;/a> or in JavaScript libraries that we found interesting. But what about if you want to use an &lt;a href="https://angular.io/guide/component-overview">Angular Component&lt;/a> and create a Vaadin component from that? Would that be an easy task? I didn’t have an immediate answer for that question so I did some research, a lot of testing and here are my findings.&lt;/p></description></item><item><title>Using our AppLayout Addon in a Hilla Application</title><link>https://www.flowingcode.com/en/using-our-applayout-in-a-hilla-application/</link><pubDate>Mon, 23 May 2022 20:31:00 +0000</pubDate><guid>https://www.flowingcode.com/en/using-our-applayout-in-a-hilla-application/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-full">&lt;img alt="" class="wp-image-1077" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/05/AppLayoutHilla.png" width="760"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">First of all, just a little bit of context for those who haven’t heard about Hilla yet. What’s the fuss about it? It is a framework for building reactive client-side web apps. With reusable web components and simplified, secure, and type-safe access to the Java backend, it allows you to stay more productive than with minimalistic frontend frameworks. Hilla apps are built on web and industry standards, making them more stable than the alternatives. If you want to know more, the best starting point is the &lt;a href="https://hilla.dev" rel="noreferrer noopener nofollow" target="_blank">official site&lt;/a>. For a more concrete view, you can watch &lt;a href="https://www.youtube.com/watch?v=ADLbkZnKjA0" rel="noreferrer noopener nofollow" target="_blank">this video&lt;/a> that analyzes the library and goes through the steps for creating a quick example.&lt;/p></description></item><item><title>Vaadin TreeGrid with lazy loading, filtering and sorting</title><link>https://www.flowingcode.com/en/vaadin-tree-grid-lazy-loading-filtering-sorting/</link><pubDate>Thu, 13 May 2021 14:12:58 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-tree-grid-lazy-loading-filtering-sorting/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-large is-resized">&lt;img alt="" class="wp-image-720" height="374" loading="lazy" src="https://www.flowingcode.com/images/uploads/2021/04/TreeGrid.png" width="836"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">I’m giving my first steps into Vaadin 14 after a long, long time of Vaadin 8 projects and I want to share my experience when it was time to work with the TreeGrid component to display hierarchical data. I ran into this issue where I needed to add filtering and sorting to a Vaadin TreeGrid implementing lazy loading. I had this &lt;a href="https://www.flowingcode.com/en/lazy-filtered-and-sorted-vaadin-grid-using-external-data-source/">article&lt;/a> for Grid as base but some things are different so I thought it would be a good idea to share all the steps needed and all things to keep in mind for this kind of implementation.&lt;/p></description></item><item><title>CSS Theming &amp; Styling in Vaadin 14</title><link>https://www.flowingcode.com/en/css-theming-styling-in-vaadin-14/</link><pubDate>Thu, 22 Aug 2019 14:10:00 +0000</pubDate><guid>https://www.flowingcode.com/en/css-theming-styling-in-vaadin-14/</guid><description>&lt;p>&lt;img alt="" class="alignnone size-full wp-image-375" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2019/08/CSS-Theming-Styling-in-Vaadin-14.png" width="760"/>&lt;/p>
&lt;p>Last week, the new &lt;a href="https://vaadin.com/roadmap" rel="noopener noreferrer" target="_blank">LTS version&lt;/a> of the presentation framework was announced.&lt;br/>
While you can find more information about &lt;a href="https://vaadin.com/blog/top-14-new-features-in-vaadin-14" rel="noopener noreferrer" target="_blank">the new features&lt;/a> in the official site, I would like to focus on one specific feature that I’ve found interesting: styles management.&lt;br/>
Across the years we saw different approaches in how to handle styles in Vaadin applications.&lt;br/>
In Vaadin 6 you could just modify styles using plain CSS. Of course you had two choices: either build everything from scratch, or inherit the built-in themes like Reindeer, Runo or Chameleon. That inheritance scheme was based in the @import css statement, which is the basis of the cascading part of the theming technology.&lt;br/>
The problem with this approach was that the customization was difficult, because the complexity of the rendered DOM, and the lack of variables that could help in modifying certain aspects of the base themes such as sizing and spacing, that several rules had in common.&lt;/p></description></item></channel></rss>