html:<style include="styles-micro-styles"></style>
<style include="releases-styles"></style>
<style include="prism-styles"></style>
<style include="plastic-image-styles"></style>
<prism-highlighter></prism-highlighter>

<div class="releases-page-view container container-fluid">
    <div class="details-section">
        <div class="header-menu-container">
            <div class="releases-header">
                <releases-top></releases-top>
            </div>
        </div>
        <section class="latest-release">
            <h4>Latest stable</h4>
            <h2 class="latest-release-version">
                Vaadin 13
            </h2>
            <p class="">Here are the highlighted new and improved features in Vaadin 13. The rest of the bug fixes and
                improvements you can check from the full release notes.</p>
            <a href="https://github.com/vaadin/platform/releases/tag/[[platform.latest.tagName]]" target="_blank" rel="noreferrer noopener" class="full-changelog button button--noline button--small">
                <iron-icon icon="vc-icons:github"></iron-icon>
                <span>See full release notes</span>
            </a>
            <p>To update to this release follow the <a href="/releases/vaadin-13#update-instructions" router-link>update
                    instructions</a>. To start from a fresh project, we recommend using a <a href="/start/latest" router-link>starter</a>.</p>
            <div class="intro-video"></div>
        </section>

        <section class="highlights">
            <div class="release-highlights">
                <h3 class="no-margin">Highlighted new and updated features</h3>
                <div class="row highlights-toc">
                    <div class="col-md-6 components highlights-section">
                        <h4>Data entry components</h4>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#custom-field" router-link>Custom Field</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#email-field" router-link>Email field</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#number-field" router-link>Number Field</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#text-field-clear" router-link>Text Field clear button</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#text-field-autoselect" router-link>Text Field autoselect</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#time-picker" router-link>Time Picker</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#select" router-link>Select</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#grid-pro" router-link>Grid Pro (commercial)</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#rich-text-editor" router-link>Rich Text Editor (commercial)</a>
                            </li>
                        </ul>
                        <h4 class="spacing">Layout components</h4>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#accordion" router-link>Accordion</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#details" router-link>Details</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#login" router-link>Login</a>
                            </li>
                        </ul>
                    </div>
                    <div class="col-md-6 components highlights-section">
                        <h4>Interaction components</h4>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#grid-event-context" router-link>Grid event context API</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#nested-context-menu" router-link>Nested context menu</a>
                            </li>
                        </ul>
                    </div>
                    <div class="col-md-6 flow highlights-section">
                        <h4>Java only features</h4>
                        <p></p>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#shortcuts-api" router-link>Keyboard shortcuts API</a>
                            </li>
                            <li>
                                <a href="/releases/vaadin-13#dynamic-routes" router-link>Dynamic registering of routes</a>
                            </li>
                        </ul>
                    </div>
                    <div class="col-md-6 themes highlights-section">
                        <h4>Themes and styling</h4>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#compact-theme" router-link>Lumo compact mode</a>
                            </li>
                        </ul>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#grid-class-name-generator" router-link>Grid class name generator</a>
                            </li>
                        </ul>
                        <ul class="highlights">
                            <li>
                                <a href="/releases/vaadin-13#designer-theme-selector" router-link>Improved theme selector in Designer
                                    (commercial)</a>
                            </li>
                        </ul>
                    </div>
                </div>

                <section class="highlights-details-section components">
                    <h3>Data entry components</h3>
                    <ul class="highlights-details">
                        <li>
                            <h5 class="name" id="custom-field">
                                Custom Field
                            </h5>
                            <p class="description">Custom field is a component that can wrap a set of any other components as a single
                                composite field. The component provides commonly needed `label` and `error-message` features, and the
                                `required` and `invalid` properties.</p>
                            <div class="image big-image-container">
                                <plastic-aspect-ratio aspect-width="846" aspect-height="500">
                                    <plastic-image preload fade lazy-load use-element-dim srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/custom-field.png" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/custom-field.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="email-field">
                                Email Field
                            </h5>
                            <p class="description">Email field is a Text Field component extension that expects its value to be a valid
                                email address. It also enables the specialized UI controls for typing an email address on mobile devices.</p>
                            <div class="image big-image-container">
                                <plastic-aspect-ratio aspect-width="746" aspect-height="850">
                                    <plastic-image preload fade lazy-load use-element-dim srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/email-field.png" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/email-field.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="number-field">
                                Number Field
                            </h5>
                            <p class="description">The number field component is an extension of the text field that allows numeric value
                                input and enables the dedicated UI controls for it on mobile. The component can be decorated with
                                decrease/increase buttons for updating the value in steps.</p>
                            <div class="image big-image-container">
                                <plastic-aspect-ratio aspect-width="750" aspect-height="750">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/number-field.png" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/number-field.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="text-field-clear">
                                Text Field clear
                            </h5>
                            <p class="description">Text field now has a built-in clear button that can be enabled with a flag. When the
                                feature is in use, a clear button is displayed on the right-hand side of the text field when there’s text in
                                it. Clicking the button clears the value. The feature also works with other text field -family components
                                like password field and text area.</p>
                            <div class="image big-image-container">
                                <plastic-aspect-ratio aspect-width="460" aspect-height="270">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/tf-clear.gif" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/text-field-clear-button.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="text-field-autoselect">
                                Text Field autoselect
                            </h5>
                            <p class="description">Setting the autoselect flag on will select the input text of the field, whenever it
                                gets focused. The feature also works with other text field -family components like password field and text
                                area.</p>
                            <div class="image big-image-container">
                                <plastic-aspect-ratio aspect-width="460" aspect-height="270">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/tf-autoselect.gif" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/text-field-autoselect.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="time-picker">
                                Time Picker
                            </h5>
                            <p class="description">Time Picker now has a Java API for using it from server side with Flow.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/time-picker-java.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="select">
                                Select
                            </h5>
                            <p class="description">The Select component is a simple dropdown and a more lightweight alternative to
                                ComboBox. It was previously available as a Web Component, but now it also has a Java API.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/select-java.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="grid-pro">
                                Grid Pro
                                <a href="/pricing" router-link><span class="product-tag">Pro</span></a>
                            </h5>
                            <p class="description">Grid Pro is a Grid extension with additional high level functionality. The first
                                release brings in a new column type specialised for inline data editing. All the existing Grid features work
                                with Grid Pro also.</p>
                            <div class="image">
                                <plastic-aspect-ratio aspect-width="1864" aspect-height="848">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/gp.gif" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/grid-pro.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="rich-text-editor">
                                Rich Text Editor
                                <a href="/pricing" router-link><span class="product-tag">Pro</span></a>
                            </h5>
                            <p class="description">Rich Text Editor is a text input component that accepts formatted text as input /
                                output and supports viewing and editing the text with specialized UI controls.</p>
                            <p class="description">The component's value can be accessed either as
                                <a href="https://github.com/quilljs/delta/">Delta</a> (read/write) or HTML (read).</p>
                            <div class="image">
                                <plastic-aspect-ratio aspect-width="1866" aspect-height="918">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/rte.gif" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/rich-text-editor.md">
                                        </script>
                                </marked-element>
                            </div>
                        </li>
                    </ul>
                </section>
                <section class="highlights-details-section components">
                    <h3>Layout components</h3>
                    <ul class="highlights-details">
                        <li>
                            <h5 class="name" id="accordion">
                                Accordion
                            </h5>
                            <p class="description">Accordion is a component that wraps a vertically stacked set of panels that can be
                                individually expanded.</p><p>
                                    </p><div class="image">
                                        <plastic-aspect-ratio aspect-width="1800" aspect-height="300">
                                            <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/accordion.png" alt=""></plastic-image>
                                        </plastic-aspect-ratio>
                                    </div>
                                    <div class="code-snippet">
                                        <marked-element>
                                            <div slot="markdown-html"></div>
                                            <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/accordion.md">
                                        </script>
                                        </marked-element>
                                    </div>
                        </li>
                        <li>
                            <h5 class="name" id="details">
                                Details
                            </h5>
                            <p class="description">A component to show more content when the user requests it, usually by clicking the
                                panel header to reveal more content below it.</p>
                            <div class="image big-image-container">
                                <plastic-aspect-ratio aspect-width="640" aspect-height="200">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/details.png" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/details.md">
                                        </script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="login">
                                Login
                            </h5>
                            <p class="description">A component to show a login screen having a username and a password field. You can
                                either use the full page Login Overlay with minimal needed configuration or create a more customized
                                experience with Login Form component. Login component works with password managers.</p>
                            <div class="image">
                                <plastic-aspect-ratio aspect-width="600" aspect-height="350">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/vaadin-login.gif" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                        </li>
                    </ul>
                </section>
                <section class="highlights-details-section components">
                    <ul class="highlights-details">
                        <li>
                            <h5 class="name" id="grid-event-context">
                                Grid event context API
                            </h5>
                            <p class="description">This new client side API allows obtaining contextual information (such as the column or
                                the item) about any type of an event that occurs inside the grid.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/grid-event-context-api.md">
                                        </script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="nested-context-menu">
                                Nested context menu
                            </h5>
                            <p class="description">Context menu now supports hierarchical/nested menu items that expand as sub-menus on
                                mouseover or keyboard navigation. The menu items can be marked as checked or disabled and dividers can be
                                added in between the items.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/nested-context-menu.md">
                                        </script>
                                </marked-element>
                            </div>
                        </li>
                    </ul>
                </section>
                <section class="highlights-details-section flow">
                    <h3>Java only features</h3>
                    <ul class="highlights-details">
                        <li>
                            <h5 class="name" id="shortcuts-api">
                                Keyboard shortcuts API
                            </h5>
                            <p class="description">New API in Flow allows you to easily assign keyboard shortcuts in Java for your
                                application to improve the end user experience.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/keyboard-shortcuts.md">
                                        </script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="dynamic-routes">
                                Dynamic registering of routes
                            </h5>
                            <p class="description">Now it is possible to register routes dynamically while the Flow application is
                                running. You can register routes for all users e.g. on application startup, or just for particular user e.g.
                                based on access rights.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/dynamic-route-registration.md">
                                        </script>
                                </marked-element>
                            </div>
                        </li>
                    </ul>
                </section>
                <section class="highlights-details-section themes">
                    <h3>Themes and styling</h3>
                    <ul class="highlights-details">
                        <li>
                            <h5 class="name" id="compact-theme">
                                Lumo compact preset
                            </h5>
                            <p class="description">The compact theme/preset defines values for the sizing and spacing properties to reduce
                                the visual space required by components to better fit a large amount of content on the screen. It’s a
                                Lumo-only feature and can be enabled by importing the preset file to the application.</p>
                            <div class="image">
                                <plastic-aspect-ratio aspect-width="3172" aspect-height="1816">
                                    <plastic-image preload fade lazy-load srcset="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/compact.gif" alt=""></plastic-image>
                                </plastic-aspect-ratio>
                            </div>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/compact-theme.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="grid-class-name-generator">
                                Grid class name generator
                            </h5>
                            <p class="description">Grid's new class name generators allow generating CSS class names for grid cells based
                                on their row and column. This feature together with the themable mixing API leverages styling grid cells to
                                the next level.</p>
                            <div class="code-snippet">
                                <marked-element>
                                    <div slot="markdown-html"></div>
                                    <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/grid-class-name-generator.md"></script>
                                </marked-element>
                            </div>
                        </li>
                        <li>
                            <h5 class="name" id="designer-theme-selector">
                                Improved theme selector in Designer
                                <a href="/pricing" router-link><span class="product-tag">Pro</span></a>
                            </h5>
                            <p class="description">The theme switcher in Designer received some improvements. The dark palette variants
                                for Lumo and Material are now available. You can disable auto-import of styles and the theme settings are now
                                stored into the project.</p>
                            <div class="video">
                                <video controls muted>
                                    <source src="https://vaadin.com/download/videos/releases/v13/designer-theming.mp4" type="video/mp4">
                                    Sorry, your browser doesn't support embedded videos.
                                </video>
                            </div>
                        </li>
                    </ul>
                </section>
            </div>
        </section>

        <section class="updates">
            <div class="update-instructions">
                <h2 class="header" id="update-instructions">Update Instructions</h2>
                <div class="code-snippet">
                    <marked-element>
                        <div slot="markdown-html"></div>
                        <script type="text/markdown" src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/update-instructions.md"></script>
                    </marked-element>
                </div>
                <p><strong>For users of Vaadin 10 or later, updating the version number in the vaadin-bom is enough.</strong>
                    This release introduced a few breaking changes from Vaadin 12.</p>
                <ul>
                    <li>Flow Spring integration (<a href="https://github.com/vaadin/spring/releases/tag/11.0.0">release notes</a>)</li>
                    <li>Context Menu Java API (<a href="https://github.com/vaadin/vaadin-context-menu-flow/releases/tag/2.0.0">release
                            notes</a>)</li>
                    <li>Grid Java API (<a href="https://github.com/vaadin/vaadin-grid-flow/releases/tag/3.0.0">release notes</a>)</li>
                </ul>
                <p>Notice, that a few breaking changes were introduced in <a rel="noreferrer noopener" href="https://github.com/vaadin/vaadin-combo-box-flow/releases/tag/2.0.0">vaadin-combo-box</a>
                    in Vaadin 12.</p>
            </div>
        </section>

        <section class="compatibility">
            <div class="browsers">
                <h3>Browser Compatibility</h3>
                <div class="compatibility-table">
                    <div class="compatibility-table-column">
                        <img src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/ie.svg" alt="">
                        <span>IE11</span>
                    </div>
                    <div class="compatibility-table-column">
                        <img src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/edge.svg" alt="">
                        <span>Edge</span>
                    </div>
                    <div class="compatibility-table-column">
                        <img src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/mozilla.svg" alt="">
                        <span>Firefox</span>
                    </div>
                    <div class="compatibility-table-column">
                        <img src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/chrome.svg" alt="">
                        <span>Chrome</span>
                    </div>
                    <div class="compatibility-table-column">
                        <img src="https://cdn2.hubspot.net/hubfs/1840687/Pages/releases/vaadin-13/safari.svg" alt="">
                        <span>Safari</span>
                    </div>
                </div>
            </div>
            <div class="java">
                <h3 class="java-header">Java Compatibility</h3>
                <span>Java 8 and newer</span>
            </div>
        </section>
    </div>
    <div class="sidebar">
        <releases-side-menu></releases-side-menu>
    </div>
</div>