Pre-specification · Concept stage Open for discussion

Define UI once.
Render anywhere.

as-ui is a proposed UI abstraction standard. A framework-agnostic description of components and layouts that renders natively on React, Vue, Svelte, Angular and beyond. Write the structure. Pick the framework. Ship.

This page documents the concept as it was conceived. It is a pre-specification — a starting point for discussion, not a finished product.

The core idea
{ "login-form": { "type": "form", "fields": [ { "name": "email", "kind": "email", "required": true }, { "name": "password", "kind": "password", "required": true } ], "submit": { "label": "Sign in" } } }

One description. Any component framework renders it.

The problem

Framework lock-in

A UI written in React lives in React. Port to Vue or Svelte and it means rewriting every component, every piece of logic, every style.

Team divergence

One team builds in React, another in Vue. Same design system, same components — two parallel implementations. Fixing a bug means fixing it twice.

Repeated work

Every major framework migration starts from scratch. The same UI shapes are rebuilt each time a team decides to change its stack.


The concept

A declarative UI contract

as-ui defines a structured description of UI — components, composition, props, events. The description is the source of truth. Frameworks provide renderers that translate the description into their own component system.

Framework renderers

Each supported framework has a renderer that reads the contract and produces native output. React gets JSX. Vue gets SFCs. Svelte gets Svelte. Same input, native output.

ReactVueSvelteSolidJSAngular

Ecosystem fit

Works with as-cssdo

as-ui describes the structure, as-cssdo describes the styling. Together they decouple both concerns from the framework. The UI contract points at semantic CSS classes provided by cssdo.

Part of frameworkic

frameworkic — the cross-framework studies series — is the natural test bed for as-ui: the same app rendered by each framework, all from one UI description.

Interested in this idea?

This concept is in its earliest stage. If you work on a component framework, a design system, or you simply want to see where this goes — reach out.