Skip to content
OAS-UI·Web Components

A framework-agnostic
Web Components UI library

One set of components, running everywhere. Zero framework dependency — works with plain HTML, React, Vue and more.

Get Started GitHub
Full TypeScript typestree-shakablelight/dark themesSSR + DSDframework-agnostic i18nMIT OR Apache-2.0
117
Components
234.9 KB
CDN gzip
2
Locales
3,120
Tests
v2.2.0
Latest
SCROLL
USE CASES

Use cases

Why Web Components? — built once, runs everywhere. These are the situations where it wins.

Mixed-stack team, one library

One codebase for your React, Vue and Svelte projects — consistent behavior and styling, no duplication.

Micro-frontends, unified UX

Each sub-app keeps its own stack, but the UI language stays consistent — OAS-UI does not dictate a framework.

Long-lived apps, no rewrites

Frameworks come and go; your component assets stay. Bound to the browser standard, not to one generation.

Zero build, instant use

One CDN script and <oas-button> just works — no node, no bundler required.

MADE FOR
Mixed-stack teamsFrontend platform teamsIndependent developersSSR application teams
DROP-IN

Use it like HTML

Web Components are a browser standard. The same code runs everywhere — framework adapters are optional.

Zero deps, zero build,
modern frameworks, all covered.

Works in plain HTML out of the box; official integration plugins for Vue and React, SSR ready.

HTMLVueReactSvelteAngularAstrooas-button
1<!-- plain HTML: drop-in -->
2<script type="module" src="https://unpkg.com/@oas-ui/ui"></script>
3
4<oas-button type="primary">Save</oas-button>
5<oas-input placeholder="Type here"></oas-input>
OUTPUT ▸SaveSecondary✓ one component, everywhere
NUMBERS, NOT SLOGANS

Performance at a glance

Public baseline, reproducible — full methodology and per-component numbers in the docs.

Button chain 22 KBCDN gzip 234.9 KBFull entry 405.7 KB
22KB
234.9KB
405.7KB
On-demand, save 93%

tree-shakable · import one component, bundle only its own chain

Full baseline →

GET STARTED

Three lines. Then ship.

Install, import, build — then write your UI like plain HTML.

01
Install

one pnpm command

02
Import

theme + ui entries

03
Use

<oas-button> directly

Get Started GitHub
oas-ui@2.0.0
~/demo $ pnpm add @oas-ui/ui @oas-ui/theme
added 2 packages · 0 framework runtime deps
 
~/demo $ touch main.ts
import '@oas-ui/theme'
import '@oas-ui/ui'
 
~/demo $ npm run dev
VITE ready in 22ms · Local: http://localhost:5173