Vaadin Flow is a Java framework binding Vaadin web components to Java. This is part of Vaadin 10+.
  • Java 91.1%
  • TypeScript 5.7%
  • JavaScript 1.4%
  • Kotlin 1%
  • HTML 0.3%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
totally-not-ai[bot] c5937a8cae
refactor: port the shortcut and web push helpers to TypeScript (#26866)
**Review risk:** two-way door — rewrites two bundled client helpers in
TypeScript with the same behavior; affects keyboard shortcuts and
`flow-webpush`, easy to revert

Follow-up to #26670.
Part of #26665

## Summary
#26670 bundled the keyboard shortcut and web push helpers as the plain
JavaScript files they were. This PR replaces them with typed
`Shortcut.ts` and `WebPush.ts` modules in flow-client, like the other
browser helpers next to them (`Fullscreen.ts`, `Geolocation.ts`, …), and
adds client-side tests for the shortcut helper.

## What changed
- Replaced `FlowShortcut.js` with `Shortcut.ts` and `FlowWebPush.js`
with `WebPush.ts`; `BrowserHelpers.ts` imports the new modules.
- The functions installed on `window.Vaadin.Flow.shortcut` and
`window.Vaadin.Flow.webPush` keep their names, signatures and behavior,
so the server side is unchanged apart from two comments in
`ShortcutRegistration` that named the old file, plus small SonarCloud
cleanups there: four never-reassigned fields are now `final` and the
modifier set is created with `HashSet.newHashSet`.

## Test summary
- New client-side tests for the shortcut popover/modal scope guards and
the keydown delegate.
- flow-client type check, lint and the full client test suite pass
locally.

---------

Co-authored-by: totally-not-ai[bot] <290682512+totally-not-ai[bot]@users.noreply.github.com>
Co-authored-by: Artur Signell <[email protected]>
2026-11-08 12:53:37 +00:00
.claude/skills/commit-and-pr docs: stop hard-wrapping PR descriptions in commit-and-pr skill (#26595) 2026-10-22 07:09:38 +00:00
.github ci: update the code review action to use Opus 5.5 (#26886) 2026-11-06 14:49:13 +00:00
.husky fix: Remove git stash from pre-commit hook to prevent merge conflicts (#23617) 2026-02-23 22:37:24 +02:00
.mvn chore: Use local config file for formatting (#20164) 2024-10-08 06:30:51 +00:00
.settings chore: update copyright year (#23207) 2026-01-14 14:15:21 +01:00
checkstyle chore: update copyright year (#23207) 2026-01-14 14:15:21 +01:00
eclipse chore: keep copyright year current in all files (#26534) 2026-10-20 08:36:14 +00:00
flow chore: upgrade project version to 25.4 (#25522) 2026-09-07 13:47:23 +00:00
flow-bom chore(deps): bump com.diffplug.spotless:spotless-maven-plugin from 3.10.4 to 3.11.0 (#26883) 2026-11-06 13:02:48 +00:00
flow-build-tools fix: use Flow's Node.js and npm for frontend SBOM (#26778) 2026-11-05 20:46:12 +00:00
flow-client refactor: port the shortcut and web push helpers to TypeScript (#26866) 2026-11-08 12:53:37 +00:00
flow-data refactor!: replace gentyref with plain JDK reflection (#26721) 2026-10-29 12:42:10 +00:00
flow-devloop-daemon fix(devloop): take only the reactor's own modules into the edit loop (#26508) 2026-11-06 09:22:30 +00:00
flow-dnd test: static-import test helpers in all JUnit 5 tests (#26506) 2026-10-19 06:44:05 +00:00
flow-html-components docs: reconcile @since tags (25.4) (#26520) 2026-10-19 08:15:50 +00:00
flow-html-components-testbench docs: reconcile @since tags (25.4) (#26520) 2026-10-19 08:15:50 +00:00
flow-lit-template test: static-import test helpers in all JUnit 5 tests (#26506) 2026-10-19 06:44:05 +00:00
flow-plugins fix: use Flow's Node.js and npm for frontend SBOM (#26778) 2026-11-05 20:46:12 +00:00
flow-polymer-template feat: run framework helpers through declared JavaScript (#26858) 2026-11-05 17:40:14 +00:00
flow-polymer2lit chore(build): generate a Jandex index in the Flow runtime modules instead of the aggregate flow-jandex artifact (#25899) 2026-09-25 09:43:11 +00:00
flow-push chore(deps): bump atmosphere javascript client to 4.0.3 (#26419) 2026-10-14 14:10:16 +00:00
flow-react docs: add architecture notes for client-side, Hilla and security parts (#26618) 2026-10-23 15:57:42 +03:00
flow-server refactor: port the shortcut and web push helpers to TypeScript (#26866) 2026-11-08 12:53:37 +00:00
flow-server-production-mode chore(build): generate a Jandex index in the Flow runtime modules instead of the aggregate flow-jandex artifact (#25899) 2026-09-25 09:43:11 +00:00
flow-test-generic feat: declare JsFunction values as bundled JS snippets (#26729) 2026-11-02 09:56:04 +00:00
flow-test-util chore(build): generate a Jandex index in the Flow runtime modules instead of the aggregate flow-jandex artifact (#25899) 2026-09-25 09:43:11 +00:00
flow-tests test: share JUnit 6 browser IT base class (#26854) 2026-11-06 13:17:07 +00:00
flow-webpush refactor: declare the web push calls as JavaScript definitions (#26865) 2026-11-06 06:50:25 +00:00
guidelines docs: write down the dev-loop design rules in CONVENTIONS.md and guidelines (#26843) 2026-11-05 20:58:29 +00:00
scripts chore: update default Node.js version to v26.12.0 (#26432) 2026-10-16 06:27:56 +00:00
vaadin-cdi chore: keep copyright year current in all files (#26534) 2026-10-20 08:36:14 +00:00
vaadin-dev-server feat: declare JsFunction values as bundled JS snippets (#26729) 2026-11-02 09:56:04 +00:00
vaadin-quarkus refactor: bundle shortcut and web push client helpers (#26670) 2026-11-05 19:47:49 +00:00
vaadin-spring refactor: bundle shortcut and web push client helpers (#26670) 2026-11-05 19:47:49 +00:00
.dtrack.yml Add dtrack-maven-plugin configuration (#11656) 2021-08-27 15:04:06 +03:00
.gitattributes ci: run doc-bot automatically on every pull request push (#25481) 2026-09-10 12:47:52 +00:00
.gitignore chore(flow-client): replace the client.js build script with Maven resources (#25883) 2026-09-23 07:35:22 +00:00
.lift.toml test: Ignore included JS file (#12030) 2021-10-14 09:29:56 +03:00
.prettierrc chore: add endOfLine auto to flow-client .prettierrc (#22492) 2025-10-10 13:58:11 +03:00
.tool-versions ci: read the JDK version from a per-branch .tool-versions file (#26118) 2026-10-02 07:49:02 +00:00
CLAUDE.md docs: define division between CONVENTIONS.md and guidelines (#26671) 2026-10-29 12:30:32 +00:00
CONTRIBUTING.md docs: fix broken contributing link (#18236) 2023-12-11 07:36:32 +01:00
CONVENTIONS.md docs: write down the dev-loop design rules in CONVENTIONS.md and guidelines (#26843) 2026-11-05 20:58:29 +00:00
LICENSE Remove unnecessary part from LICENSE (#7045) 2019-11-28 11:24:25 +02:00
pom.xml chore(deps): bump com.google.errorprone:error_prone_core from 2.51.0 to 2.52.0 (#26884) 2026-11-06 13:03:37 +00:00
README.md chore: mark 24.7 and 24.4 as commercially supported (#25675) 2026-09-11 15:47:10 +00:00

Vaadin Flow

Vaadin Flow is the Java framework of Vaadin Platform for building modern websites that look great, perform well and make you and your users happy.

For instructions about developing web applications with Vaadin Flow, please refer to the documentation.

To contribute, first refer to Contribution Guide for general instructions and requirements for contributing code to Flow.

For issues related to Hilla, please refer to the https://github.com/vaadin/hilla repository.

Ask questions about Vaadin Flow in our forum.

Since Vaadin platform 23.0, Flow major and minor versions are aligned with platform versions:

Branch Platform Version Flow Version
2.13 14.14 (LATEST commercial with Java 8+ support and Servlet 3) 2.13
23.6 23.6 (LATEST commercial with Java 11+ support and Servlet 3) 23.6
24.4 24.4 (commercially supported, Java 17+, Jakarta EE 10, Spring-boot 3) 24.4
24.7 24.7 (commercially supported, Java 17+, Jakarta EE 10, Spring-boot 3) 24.7
24.10 24.10 (LATEST 24 minor release, Java 17+, Jakarta EE 10, Spring-boot 3) 24.10
25.2 25.2 (LATEST release, Java 21+, Jakarta EE 11, Spring-boot 4) 25.2
25.3 25.3 (Vaadin 25.3 pre-release, Java 21+, Jakarta EE 11, Spring-boot 4) 25.3
main 25.4 (Vaadin 25.4 preparations, Java 21+, Jakarta EE 11, Spring-boot 4) 25.4