Skip to content

chore(flow-client): remove the GWT client engine and build wiring - #24954

Open
totally-not-ai[bot] wants to merge 7 commits into
flow-client-ts-cutoverfrom
flow-client-ts-remove-gwt
Open

chore(flow-client): remove the GWT client engine and build wiring#24954
totally-not-ai[bot] wants to merge 7 commits into
flow-client-ts-cutoverfrom
flow-client-ts-remove-gwt

Conversation

@totally-not-ai

@totally-not-ai totally-not-ai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

With the TypeScript engine now live (previous PR), the GWT client is dead. Removes it: com.vaadin.client.* sources + their JUnit/GWTTestCase tests, the ClientEngine*.gwt.xml modules, ClientEngineLinker + its single-script template, and the GWT deps / gwt-maven-plugin / GWT test wiring from pom.xml and package.json.

flow-client is now a TypeScript + resources module with no Java sources. Nothing outside flow-client referenced com.vaadin.client. Large but mechanical (deletions).

Stacked on #24953 (base flow-client-ts-cutover) — merge after it. Non-draft; please review before merging.

@totally-not-ai

totally-not-ai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

Review — GWT client engine + build wiring removal

The removal is complete and internally consistent:

  • All GWT Java is gone — after this PR flow-client/src/main/java contains 0 .java files, and src/test-gwt/ is removed entirely (28 files). The 30 deleted src/test files are the GWT-only unit tests.
  • pom.xml cleanly strips every piece of GWT wiring: the gwt.module* properties, the com.google.gwt dependency import + gwt-user/gwt-dev/gwt-elemental, the gwt-maven-plugin (compile/generateAsync/test), the build-helper src/test-gwt/java source dir, the surefire **/Gwt*.java exclude, the sdm profile, and the slow-tests gwt.test.pattern. The still-needed FlowClient.js spotless exclude is correctly retained.
  • No dangling references — a repo-wide sweep finds 0 remaining import com.vaadin.client.* in any Java file, so removing the engine breaks no remaining compilation.

One follow-up that this removal breaks (please address or confirm handled elsewhere)

flow-tests/test-root-context/.../dependencies/DependenciesLoadingAnnotationsIT.java uses the GWT client engine script as its boundary marker between Flow and user dependencies:

if (jsUrl.endsWith(".cache.js") && jsUrl.contains("static/client/client-")) {
    foundClientEngine = true;
}

With the engine gone, foundClientEngine never flips to true, so every script is treated as a "flow dependency" and the loop asserts "Flow dependencies should not contain user dependencies" against the first eager/lazy user script — which will now fail (or, at best, silently stop testing the ordering it was written to verify). This IT isn't touched by this PR but is a direct consequence of the removal; it needs updating (new marker for the TS FlowClient, or a rewrite of the ordering check).

Minor cleanup leftovers (non-blocking)

  • flow-test-generic/.../ClassesSerializableTest.java still lists com.vaadin.flow.linker.ClientEngineLinker (+$Script) in its exclusion regex list — the class no longer exists, so the pattern is now dead (harmless string, but could be removed).
  • ApplicationConstants.CLIENT_ENGINE_PATH is now unused by production code (see the 24955 note); safe to keep as public shared API, but worth noting.

Otherwise LGTM — thorough, correct removal with no dangling imports or build references.

With the TypeScript engine now the live client (previous commit), the GWT client
is dead. Remove it: the com.vaadin.client.* sources and their JUnit + GWTTestCase
tests, the ClientEngine*.gwt.xml modules, ClientEngineLinker and its single-script
template, and the GWT dependencies / gwt-maven-plugin / GWT test wiring from
pom.xml and package.json.

flow-client is now a TypeScript + resources module with no Java sources. Nothing
outside flow-client referenced com.vaadin.client.
@totally-not-ai
totally-not-ai Bot force-pushed the flow-client-ts-cutover branch from 950e2a9 to fc90354 Compare July 8, 2026 17:01
@totally-not-ai
totally-not-ai Bot force-pushed the flow-client-ts-remove-gwt branch from a5a8c19 to 4f5d7f2 Compare July 8, 2026 17:01
Artur- added 6 commits July 8, 2026 20:23
# Conflicts:
#	flow-client/src/main/java/com/vaadin/client/DependencyLoader.java
#	flow-client/src/main/java/com/vaadin/client/ResourceLoader.java
#	flow-client/src/main/java/com/vaadin/client/communication/MessageHandler.java
#	flow-client/src/main/java/com/vaadin/client/flow/binding/SimpleElementBindingStrategy.java
#	flow-client/src/main/java/com/vaadin/client/flow/dom/DomApi.java
#	flow-client/src/test-gwt/java/com/vaadin/client/GwtDependencyLoaderTest.java
#	flow-client/src/test-gwt/java/com/vaadin/client/GwtSuite.java
#	flow-client/src/test-gwt/java/com/vaadin/client/flow/GwtBasicElementBinderTest.java
#	flow-client/src/test/java/com/vaadin/client/DependencyLoaderTest.java
#	flow-tests/test-default/src/main/java/com/vaadin/flow/test/routing/BasePathView.java
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants