Skip to content

Design Systems

Mateu separates UI definition (your Java backend) from UI rendering (the frontend). You choose which design system renders your UI by adding a single Maven dependency.

All renderers consume the same Mateu API, so you can switch or support multiple renderers without changing your Java code.

RendererDesign systemDependency
VaadinVaadin Lumovaadin-lit
Red HatRed Hat PatternFlyredhat-lit
SAP FioriSAP Fiori / UI5sapui5-lit
Oracle RedwoodOracle Redwoodredwood-lit
Salesforce SLDSSalesforce Lightningslds2-lit

Replace the renderer dependency in your pom.xml. For example, to switch from Vaadin to Red Hat:

<!-- remove -->
<dependency>
<groupId>io.mateu</groupId>
<artifactId>vaadin-lit</artifactId>
<version>3.0-alpha.187</version>
</dependency>
<!-- add -->
<dependency>
<groupId>io.mateu</groupId>
<artifactId>redhat-lit</artifactId>
<version>3.0-alpha.187</version>
</dependency>

No Java code changes are needed.

Because each renderer is a web component, you can embed a Mateu UI inside any existing application — including React, Vue, Angular, or plain HTML pages — regardless of which design system that application uses.

A Vaadin-rendered Mateu component can be embedded in an Oracle JET application. An SAP Fiori renderer can be dropped into any HTML page.

See Embedded UI for details.

Beyond the browser, Mateu also supports native renderers for desktop and mobile:

RendererPlatformTechnology
Desktop (JavaFX)Windows, macOS, LinuxJavaFX
Mobile (React Native)iOS, AndroidExpo / React Native

Both native renderers consume the same Mateu API as the web renderers. The same backend serves web, desktop, and mobile clients simultaneously with no code changes.

See Native Renderers for details.

If none of the available renderers fit, you can build your own frontend that consumes the Mateu API. See Bring your own design system.