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.
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.
Ecosystem fit
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.
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.