Skip to content

What's new in 3.0

Mateu 3.0 is the first General Availability release of the 3.x line. This page is for someone who meets Mateu now: what it is in a few lines, then the main things 3.0 brings, each with a link to read more. The full list of changes is the CHANGELOG.

You define a business UI once, and Mateu draws it.

  • Define it as code or as data. Write it in Java (@UI), C# ([UI]) or Python (@ui), or as YAML files under specs/ui/. The visual editor in IntelliJ and VS Code writes that YAML for you, and a Figma design can be converted to it. All of them produce the same model.
  • Render it anywhere. On the web with Vaadin or Oracle Redwood, on phones with the Mateu app, and on the desktop with the Mateu desktop app or inside IntelliJ. Every renderer reads the same wire.
  • Serve it or ship it. A backend serves it: Spring Boot MVC or WebFlux, Quarkus, Micronaut or Helidon MP, ASP.NET Core or FastAPI. Or you export it as a static bundle that runs from a CDN with no backend at all.
  • Federate it. UIs owned by different teams or services compose into one console.

What is Mateu explains the idea in more detail, and Choose your path helps you pick a starting point.

A YAML Form can fill one of the Redwood page templates with template:: item overview, welcome, dashboard landing, general overview, collection detail, foldout, multimedia content, advanced create/edit, guided process, data management and hero search. The template decides the layout and the look; you fill its fields and slots. Every renderer draws it; the Redwood renderer uses Oracle’s own Spectra page template wherever one exists. Page templates · template: in YAML

In code, a whole screen can start from an archetype class: AutoCrud, Wizard, Dashboard, Welcome, HeroSearch, SmartSearchPage, TodoList, CalendarPage, CollectionDetail, GeneralOverview, ItemOverview, Foldout, GanttPage, DataManagement and ImportWizard. Mateu can also infer some of them from the fields a plain class declares (@AutoPage). The Mateu Way · Page types · Layout inference

About a hundred patterns are documented, each with its solution in Mateu. A few that are new or much changed in 3.0:

  • Progress and notifications. A LongTask reports a task, and each renderer shows it its own way: a modal progress for a blocking task, a task center for background ones (cancel, retry, “open the result”), and the platform’s own background tasks in IntelliJ. The notification inbox groups, filters and resolves entries, offers actions on them, and can be pushed live to the user’s open sessions. Long-running jobs · Notification inbox
  • Command center. A full-screen palette with navigation, global search, recent screens and the AI chat, opened from a button that is always there. Command center
  • App context. A selector on the app header (active hotel, company, fiscal year) whose value every request carries. App context
  • Smart search. Listings filter through one search bar with typed filters (ranges, multi-select) shown as chips, and saved views. Smart search · Filters and listings

The UX guide and the pattern catalogue list the rest.

The Mateu component library is published on Figma Community as the Mateu UI Kit: duplicate it, design your screens with it, and import the file in one step from Maven, IntelliJ or VS Code. Each screen frame becomes a YAML page, and each new page is added to routes.yaml. The library uses Figma’s native slots and component properties. This pipeline is a preview: it may change in any release, but the YAML it writes is ordinary, stable YAML. From Figma · Import from Figma

A shell can include other UI modules in the same process (a Maven dependency), or other services at runtime through remote menus. A page can embed another service’s screen as a micro frontend, resolved in the browser or, new in 3.0, by the server before the page is sent. A content slot fills a part of a page from a content service. UI federation · Using external Mateu UIs · Micro frontend · Content slot

The MCP endpoint lets an agent operate a running app’s screens. It can also author them: list the components, read their schema, and validate and preview YAML (saving it is allowed only in dev mode). With live push turned on, an agent can send a screen to a UI that is open in a browser, the phone app or the IDE. Both are off unless you turn them on. Agent operability · Build UIs with AI

The Mateu app for iOS and Android is a hub: you add UIs to it with a QR code or a link, and it draws them in Material Design 3, with sign-in through your identity provider and over-the-air updates. The desktop app (macOS, Windows, Linux) does the same on a computer. Both can also be built as a “fixed” app bound to one UI, under your own name. Mobile app · Desktop app · App stores

Mateu’s own assets are now served gzip-compressed by every Java adapter, and by the .NET and Python servers when they serve the page. On a throttled mobile connection (Fast 3G with a 4× slower CPU), the first content of a Vaadin page appears about three times sooner: 14.4 s before, 4.6 s after, with 0.65 MB of JavaScript instead of 2.6 MB. A static bundle writes pre-compressed .gz files beside its assets, for hosts that serve them as they are. Request handling on the server also got faster (for example, a simple form’s request takes about half the time).

  • Strict action mode is the default: a request can run only an action the screen offers.
  • CRUD writes are checked on the server, so a read-only or non-deletable listing refuses the write even if a client sends it.
  • CORS and MCP are off unless you configure them.
  • Mateu does not authenticate. The caller’s identity comes only from what your framework authenticated.
  • Secrets stay on the server: ${secret.X} is resolved only on proxied REST calls.
  • An unexpected error shows a reference id, never a stack trace, unless you turn detailed errors on. The same texts in the three servers.

Security · Access & permissions in YAML

ASP.NET Core (Mateu.AspNetCore on NuGet) and FastAPI (mateu-ui on PyPI) are full Mateu servers. They emit the same wire as Java, checked by a shared conformance corpus that all three servers must match exactly, so every renderer draws them. They do not cover the whole Java surface yet; the parity matrix lists every gap. C# manual · Python manual

The Java API, YAML authoring, static bundles, the wire and the Vaadin and Redwood renderers are stable within 3.x. APIs marked @Experimental may still change in a minor release. Stability & versioning · Support policy · Known issues