Open-source project
UI5/webcomponents avatar
UI5/webcomponents

UI5 Web Components for framework-independent SAP Fiori interfaces

UI5 Web Components - the enterprise-flavored sugar on top of native APIs! Build SAP Fiori user interfaces with the technology of your choice.

1,783 stars290 forksTypeScriptApache-2.0

At a glance

What is it?
UI5 Web Components packages SAP Fiori interface elements as standards-based custom elements that can be used from TypeScript, JavaScript, or plain HTML. It is a good fit when an application needs isolated controls across framework boundaries, but it is not a replacement for the complete OpenUI5 application framework.
Who is it for?
Application teams should adopt UI5 Web Components when they need SAP Fiori controls inside React, Angular, Vue, a static site, or a mixed custom-element environment. Teams building a complete enterprise application around UI5's application services and data-binding model should review OpenUI5 instead.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What UI5 Web Components solves across framework boundaries

UI5 Web Components addresses a specific integration problem: how to add consistent SAP Fiori interface elements to an application without requiring that application to use OpenUI5 as its complete UI stack. SAP describes the components as lightweight, independent UI elements that bring relevant UI5 qualities and SAP Fiori user experience to the HTML level. They are intended for static websites, applications built with React, Angular, Vue, or other technologies, reusable libraries, and micro-frontends.

The target user is therefore an application developer who needs enterprise controls but has already chosen another rendering framework, or does not want a full framework at all. The README specifically points to UI5 Web Components for applications already using a different web framework and for static sites that only need several interactive elements.

That boundary matters. This project is not OpenUI5, and the README does not describe it as a successor. It also is not built on top of OpenUI5. Its purpose is narrower: package individual UI elements as custom HTML elements that can be accessed through standard browser APIs. This makes it more composable across application boundaries, but it does not turn the project into a complete enterprise application framework.

Custom elements, shadow DOM, and selective imports

The central mechanism is the custom element model. A component such as a button is represented by a familiar `ui5-button` tag. The application imports its JavaScript module, that module defines the custom element, and subsequent markup can use the tag like other HTML elements. This keeps component usage separate from any React, Angular, Vue, or server-rendered page structure.

Each component encapsulates its HTML and CSS in shadow DOM. According to the README, this protects component internals from interference by the surrounding page and also limits interference in the opposite direction. That design is particularly relevant to libraries and micro-frontends, where independently maintained code may share one document. It also explains why the elements can appear as custom tags in applications that were not designed around their internal markup.

The distribution model is deliberately selective. The README says there is no CDN and expects developers to import only the components or other public APIs that will be used, then bundle them with the application. This can avoid downloading an entire control suite at startup, although the README does not publish bundle measurements for individual imports. The framework portion is described as approximately 20K gzipped, but that figure must not be treated as the cost of a specific application containing only a few components.

The main `package.json` also identifies the repository root as an ES module project and contains workspace-oriented Yarn scripts for generation, TypeScript compilation, bundling, and development. Those scripts describe maintainer workflows rather than the recommended consumer installation path.

Installing @ui5/webcomponents and rendering the first button

The README gives a direct npm workflow. First install the package that contains the desired components. This command installs `@ui5/webcomponents`:

bash
npm install @ui5/webcomponents

Next, import the component module in application JavaScript. This module loads and defines `ui5-button`:

js
import "@ui5/webcomponents/dist/Button.js";

After the import has executed, use the defined custom element in the application's HTML:

html
<ui5-button>Hello world!</ui5-button>

The visible result should be a button labeled `Hello world!`, according to the README's basic example. The import is not optional decoration. It performs the definition needed before the custom tag can represent the component.

This approach scales from one button to a composed interface: a developer can import only the modules needed by a page and bundle those modules with the application. The documentation does not present a global script-tag setup or CDN workflow, so copying this example into a page without a bundler would skip a documented integration step. Consumers who want the full API reference and interactive examples are directed to the project's Playground and API Reference.

TypeScript support and framework wrapper boundaries

TypeScript support applies to both developing and consuming components. The README gives a clear stability history: experimental TypeScript definitions were introduced in version `1.11.0`, and all definitions became stable from version `1.19.0` onward. For a TypeScript codebase, that is a concrete adoption fact rather than an assumption based on the repository's primary language.

Standard custom elements are framework-neutral, but framework integration is not always equally convenient. React version 18, specifically named in the README, has limitations when handling boolean attributes on custom elements and adding listeners for custom event names such as `selection-change`. UI5 Web Components for React is a separate wrapper that presents the elements more like native React components, supplies TypeScript definitions, adds complex layouts built on the components, and offers charting components.

Angular has a different boundary. UI5 Web Components for Angular is described as a wrapper that avoids requiring `CUSTOM_ELEMENTS_SCHEMA` or `NO_ERRORS_SCHEMA`, with Angular two-way data binding and Angular Forms support working through that integration. These are separate repositories rather than behavior implied by the core npm package. A team using the core package can still use custom elements directly, but it should not assume that every framework convenience from those wrappers is included.

Browser coverage and the absence of a CDN deployment path

UI5 Web Components has documented browser and platform coverage, but the support window is narrower than the phrase 'any framework' may initially suggest. On Windows 10 and 11 and on the latest two macOS versions, the README lists the latest two stable releases of Google Chrome and Microsoft Edge, the latest two stable releases of Mozilla Firefox, the latest Mozilla Firefox ESR, and the latest two stable releases of Apple Safari. Safari is not listed for Windows.

On Android, the latest three versions of Google Chrome are listed with the latest two stable releases. On iOS and iPadOS, the latest two stable Safari releases are listed, while Chrome is not listed for that row. These tables provide a concrete compatibility boundary for teams that support particular devices or browser policies.

There is no documented CDN option. Consumers are expected to import selected public modules and bundle them into the application. That has two implications. First, application build configuration becomes part of adoption rather than an optional afterthought. Second, the product has a different distribution cost profile from a page that links a prebuilt component suite from a public CDN. The repository includes browser and application configuration documentation, but the README does not document server-side rendering behavior, hydration behavior, or a universal browser distribution. Those points must be checked against the project's component importing and configuration documentation before selecting an SSR architecture.

OpenUI5, React, and Angular are different integration choices

The most relevant alternative in the README is OpenUI5. OpenUI5 is a complete JavaScript framework based on jQuery that includes enterprise controls, responsive rendering, and data binding to JSON, XML, and OData. UI5 Web Components does not reproduce that full application stack. It is independent of OpenUI5 and brings selected UI5 qualities to custom elements.

This creates a practical choice. OpenUI5 is the documented choice for building complete enterprise-ready, responsive applications where its rendering and data-binding model is part of the architecture. UI5 Web Components is the better fit when the surrounding application already uses another framework, or when a static site needs a controlled set of Fiori elements without adopting the full framework.

React and Angular users have a third layer of choice: use the standards-based elements directly or add the corresponding wrapper project. A wrapper can improve framework binding and component authoring, but it also adds another package and API surface. Core UI5 Web Components alone may be the better boundary when the application needs only a few isolated controls and is prepared to work with DOM properties, attributes, and events directly. The README does not provide a decision matrix, so control availability, binding needs, bundle policy, and wrapper compatibility must be compared against the specific project.

Maintenance, releases, licensing, and upgrade exposure

The repository is not archived, and its last push was on 2026-10-15. Three releases were published around that push: `v2.28.0-rc.0`, `v1.24.32`, and `v1.24.31`. The parallel release identifiers show that more than one release line appears in the published release history, but the README does not explain compatibility promises, migration procedures, or whether adopting the 2.x release candidate is appropriate for production. No unsupported claim should be made about its migration burden.

The repository identifies SAP SE as author and uses the `Apache-2.0` license. `LICENSE.txt` and `LICENSES/` are present at the root. Apache-2.0 permits use, modification and distribution subject to its license terms and conditions, including preservation of applicable notices. This is a project-level statement, not legal advice.

For consumers, upgrade planning should start by identifying which component packages and public APIs the application imports. The repository's `CHANGELOG.md`, `docs/10-Releases.md`, and package-specific release information are the relevant sources for compatibility and migration details. The core README confirms the existence of release documentation but does not state a support window. The presence of both v1 patch releases and a v2 release candidate makes version selection a project-specific check, not something that can be settled from the version labels alone.

Editorial conclusion

Application teams should adopt UI5 Web Components when they need SAP Fiori controls inside React, Angular, Vue, a static site, or a mixed custom-element environment. Teams building a complete enterprise application around UI5's application services and data-binding model should review OpenUI5 instead. Before adoption, verify that the required controls exist in the public API, import each package deliberately, confirm the required browsers and mobile platforms, and account for the separate wrapper packages used with React and Angular.

Frequently asked questions

How do I install and use UI5 Web Components?

Install `@ui5/webcomponents` with npm, import the JavaScript module for each component you need, and then place the corresponding custom tag in the application. For a button, the documented import is `@ui5/webcomponents/dist/Button.js`, and the resulting tag is `ui5-button`.

Does UI5 Web Components support TypeScript?

Yes. The README says TypeScript support exists for component development and consumption, and that all TypeScript definitions are stable from version `1.19.0` onward. React and Angular integrations may also provide wrapper-level definitions and framework-specific binding support.

Can I load UI5 Web Components from a CDN?

The README explicitly says no. Consumers are expected to import only the components or public APIs they use and bundle them with the application.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. UI5/webcomponents on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ui5-webcomponents.svg)](https://hysenlabs.com/projects/ui5-webcomponents)

Was this useful?