@ui5-community/jsx-runtime-showcase
The showcase app of @ui5-community/jsx-runtime@ui5-community/jsx-runtimeA plugin-based JSX runtime for UI5: views are written as .tsx files with per-control typing, and the JSX compiles to plain new Control(settings) calls.community org, ui5: it runs the library end-to-end and doubles as its documentation on GitHub Pages.
One running UI5 app per piece of the JSX runtime's API surface, with the Learn pages shipped inside it rather than beside it. Its samples under webapp/view/showcases/ are the targets the migration guide's translation table points at, one per row: dot-handler and function-reference events, string and object-form bindings, i18n, both senses of fragment, structural directives, and both directions in which a JSX and an XML view embed each other. The repository states what the showcase covers (elements, aggregations, events, bindings, fragments, structural directives, the plugin SPI, type coercion, embedding, i18n and both a responsive and a grid table) and keeps a separate page for the mainstream UI5 patterns it does not yet demonstrate, so a reader does not infer them from what is present.
Facts
Where it sits
Who is behind it
In the atlas: maintains 69@ui5-communitymaintainerPeter MuessigContributes to this
In the atlas: maintains 14, contributes to 80, wrote 1@petermuessig1 contributor
Before choosing this
Conditions
PracticalFunctional boundary
Its views are not a template for application code: every showcase view overrides getController() to return itself so a sample stays readable in one file, and the gotchas page says not to ship that in production, where a view keeps a separate *.controller.ts. Routing from a sample, an ODataModel v2 or v4, sap.ui.mdc.Table, forms and custom control authoring in TSX are absent by decision and documented as deferred.
What it declares
Every artifact
- Type
- Sample
- Origin
- By a community org
- Use as
- A reference
As a sample
- Form
- does not say
Connections
Plugin-based JSX runtime for UI5 views written as .tsx
Plugin-based JSX runtime for UI5 views written as .tsx
Download
README
quoted from ui5-community/jsx-runtime under Apache-2.0, readjsx-runtime
A plugin-based JSX runtime for UI5, write UI5 views as .tsx files with per-control TypeScript typing, no React, no VDOM, no reconciler. JSX expressions compile to plain new Control(settings) calls; a stable five-extension-point plugin SPI lets frameworks and libraries layer features on top of the core without touching it.
import Button from "sap/m/Button";
import Page from "sap/m/Page";
export default class Main extends View {
createContent() {
return (
<Page title="Hello">
<Button text="Click me" press=".onPress" />
</Page>
);
}
}
Repository layout
This is a pnpm-workspace monorepo with three packages:
| Package | Path | Description |
|---|---|---|
@ui5-community/jsx-runtime | packages/jsx-runtime/ | The library. Ships the core JSX runtime and the <Switch> sample plugin. Publishable to npm. |
@ui5-community/jsx-runtime-showcase | packages/jsx-runtime-showcase/ | The showcase app. Runs the library end-to-end and doubles as living documentation on GitHub Pages. Not published. |
@ui5-community/jsx-runtime-helloworld | packages/jsx-runtime-helloworld/ | Minimal reference app — a plain scaffolded UI5 TypeScript project that consumes the runtime the way an external project would. Proves the from-scratch adoption path. Not published. |
Additional docs live in docs/:
docs/jsx-runtime.md, the concept overview (extended from the POC'swebapp/jsx-runtime/README.md).docs/requirements.md, the full requirements spec for the runtime.docs/performance.md, how JSX instantiation compares to XMLView (with measured numbers).docs/xmlview-to-tsx.md, step-by-step guide for converting an app's.view.xmlfiles to.tsxviews.
Getting started
Requires Node.js ≥ 22.13 (the Node 22 LTS line) and pnpm ≥ 11. A .nvmrc pins the Node major — run nvm use if you use nvm.
# 1) install
pnpm install
# 2) run the showcase (also the dev harness for the library)
pnpm dev
# → http://localhost:8080
# 3) build all packages
pnpm build
# 4) run all tests (QUnit for the library, OPA5 for the showcase, via ui5-test-runner)
pnpm test
# optional: run the minimal reference app (see how an external project consumes the runtime)
pnpm dev:helloworld
# → http://localhost:8080
Editing a file in packages/jsx-runtime/src/ while pnpm dev runs triggers ui5-middleware-livereload in the browser, no rebuild step needed. pnpm's workspace symlink and ui5-tooling-transpile-middleware do the rest.
Concepts at a glance
The runtime provides three layers of API surface:
- Core directives:
jsx,<Fragment>,<For>,<If>. Always available, no setup. - Plugin SPI: five extension points (
Renderer,IntrinsicHandler,PropertyApplier,ChildrenProcessor,Scope) let plugins add directives, intrinsics, and output adapters without touching the core. - Sample plugin:
<Switch>/<Case>/<Default>inpackages/jsx-runtime/src/plugins/switch/proves the SPI on a non-trivial example.
Detailed rationale, walk-throughs, and API references are in docs/jsx-runtime.md.
License
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
Contributors
History in the atlas
- First seen.
For your agent
- Ref
artifact:ui5-community-jsx-runtime-showcase- JSON
- /artifacts/ui5-community-jsx-runtime-showcase.json
- MCP
- Connecting an agent