diff --git a/.cursor/environment.json b/.cursor/environment.json
index 06198657e..faca89c27 100644
--- a/.cursor/environment.json
+++ b/.cursor/environment.json
@@ -2,4 +2,4 @@
"agentCanUpdateSnapshot": true,
"install": "pnpm install",
"start": "pnpm dev:start"
-}
\ No newline at end of file
+}
diff --git a/.cursor/worktrees.json b/.cursor/worktrees.json
index e57556bc0..bf9e730d2 100644
--- a/.cursor/worktrees.json
+++ b/.cursor/worktrees.json
@@ -1,5 +1,3 @@
{
- "setup-worktree": [
- "pnpm install"
- ]
+ "setup-worktree": ["pnpm install"]
}
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index dd84ea782..9b77ea713 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,10 +1,9 @@
---
name: Bug report
about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
+title: ""
+labels: ""
+assignees: ""
---
**Describe the bug**
@@ -12,6 +11,7 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
+
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
@@ -24,15 +24,17 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
+
+- OS: [e.g. iOS]
+- Browser [e.g. chrome, safari]
+- Version [e.g. 22]
**Smartphone (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - Browser [e.g. stock browser, safari]
- - Version [e.g. 22]
+
+- Device: [e.g. iPhone6]
+- OS: [e.g. iOS8.1]
+- Browser [e.g. stock browser, safari]
+- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index bbcbbe7d6..2bc5d5f71 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,10 +1,9 @@
---
name: Feature request
about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
+title: ""
+labels: ""
+assignees: ""
---
**Is your feature request related to a problem? Please describe.**
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index f42fcbe8a..d1fbd05f0 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -4,7 +4,7 @@ Describe the change and why it is needed.
## Changes
--
+-
## Test Plan
diff --git a/.github/workflows/build-js.yml b/.github/workflows/build-js.yml
index ba5065df4..8a909bb31 100644
--- a/.github/workflows/build-js.yml
+++ b/.github/workflows/build-js.yml
@@ -2,9 +2,9 @@ name: Build JS
on:
push:
- branches: [ main ]
+ branches: [main]
pull_request:
- branches: [ main ]
+ branches: [main]
jobs:
build:
@@ -20,7 +20,7 @@ jobs:
with:
node-version: 20
cache: pnpm
- cache-dependency-path: 'pnpm-lock.yaml'
+ cache-dependency-path: "pnpm-lock.yaml"
- name: Install dependencies
run: pnpm install --frozen-lockfile
diff --git a/.prettierrc.json b/.prettierrc.json
index f94891b0a..27bc9781b 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -5,4 +5,4 @@
"printWidth": 100,
"tabWidth": 2,
"plugins": ["prettier-plugin-organize-imports"]
-}
\ No newline at end of file
+}
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 20bcc4f64..a545f08a3 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,4 +1,3 @@
-
# Contributor Covenant Code of Conduct
## Our Pledge
@@ -18,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:
-* Demonstrating empathy and kindness toward other people
-* Being respectful of differing opinions, viewpoints, and experiences
-* Giving and gracefully accepting constructive feedback
-* Accepting responsibility and apologizing to those affected by our mistakes,
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
-* Focusing on what is best not just for us as individuals, but for the overall
+- Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
-* The use of sexualized language or imagery, and sexual attention or advances of
+- The use of sexualized language or imagery, and sexual attention or advances of
any kind
-* Trolling, insulting or derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or email address,
+- Trolling, insulting or derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or email address,
without their explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
+- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
diff --git a/README.md b/README.md
index f16e5b052..b11272a6b 100644
--- a/README.md
+++ b/README.md
@@ -12,18 +12,12 @@
-
OpenUI is a full-stack Generative UI framework — a compact streaming-first language, a React runtime with built-in component libraries, and ready-to-use chat interfaces — that is up to 67% more token-efficient than JSON.
-
-
---
-
-
[Docs](https://openui.com) · [Playground](https://www.openui.com/playground) · [Sample Chat App](./examples/openui-chat) · [Discord](https://discord.com/invite/Pbv5PsqUSv) · [Contributing](./CONTRIBUTING.md) · [Code of Conduct](./CODE_OF_CONDUCT.md) · [Security](./SECURITY.md) · [License](./LICENSE)
-
---
## What is OpenUI
@@ -43,7 +37,6 @@ At the center of OpenUI is **OpenUI Lang**: a compact, streaming-first language
- **Streaming renderer** — Parse and render model output progressively in React as tokens arrive.
- **Chat and app surfaces** - Use the same foundation for assistants, copilots, and broader interactive product flows.
-
## Quick Start
```bash
@@ -62,8 +55,6 @@ What this gives you:
- **Streaming support** - Update the UI progressively as output arrives.
- **Working app foundation** - Start from a ready-to-run example instead of wiring everything manually.
-
-
## How it works
Your components define what the model can generate.
@@ -87,12 +78,12 @@ Try it yourself in the [Playground](https://www.openui.com/playground) — gener
## Packages
-| Package | Description |
-| :--- | :--- |
-| [`@openuidev/react-lang`](./packages/react-lang) | Core runtime — component definitions, parser, renderer, prompt generation |
-| [`@openuidev/react-headless`](./packages/react-headless) | Headless chat state, streaming adapters, message format converters |
-| [`@openuidev/react-ui`](./packages/react-ui) | Prebuilt chat layouts and two built-in component libraries |
-| [`@openuidev/cli`](./packages/openui-cli) | CLI for scaffolding apps and generating system prompts |
+| Package | Description |
+| :------------------------------------------------------- | :------------------------------------------------------------------------ |
+| [`@openuidev/react-lang`](./packages/react-lang) | Core runtime — component definitions, parser, renderer, prompt generation |
+| [`@openuidev/react-headless`](./packages/react-headless) | Headless chat state, streaming adapters, message format converters |
+| [`@openuidev/react-ui`](./packages/react-ui) | Prebuilt chat layouts and two built-in component libraries |
+| [`@openuidev/cli`](./packages/openui-cli) | CLI for scaffolding apps and generating system prompts |
```bash
npm install @openuidev/react-lang @openuidev/react-ui
@@ -154,7 +145,6 @@ Good places to start:
- [Discord](https://discord.com/invite/Pbv5PsqUSv) — Ask questions, share what you're building
- [GitHub Issues](https://github.com/thesysdev/openui/issues) — Report bugs or request features
-
## Contributing
Contributions are welcome. See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for contribution guidelines and ways to get involved.
diff --git a/benchmarks/README.md b/benchmarks/README.md
index 19f4aaf63..f0c4cc0cc 100644
--- a/benchmarks/README.md
+++ b/benchmarks/README.md
@@ -44,7 +44,6 @@ Measured with `tiktoken` (`gpt-5` model encoder). Generated by GPT-5.2 at temper
| e-commerce-product | 2145 | 2449 | 2381 | 1166 | -45.6% | -52.4% | -51.0% |
| **TOTAL** | **9122** | **10180** | **9948** | **4800** | **-47.4%** | **-52.8%** | **-51.7%** |
-
## Running
### Prerequisites
@@ -55,7 +54,6 @@ Export `OPENAI_API_KEY` in your shell:
export OPENAI_API_KEY=sk-...
```
-
### 1. Generate samples (calls OpenAI)
```bash
diff --git a/docs/app/(home)/components/CompatibilitySection/CompatibilitySection.tsx b/docs/app/(home)/components/CompatibilitySection/CompatibilitySection.tsx
index b2717d257..661608d29 100644
--- a/docs/app/(home)/components/CompatibilitySection/CompatibilitySection.tsx
+++ b/docs/app/(home)/components/CompatibilitySection/CompatibilitySection.tsx
@@ -54,17 +54,9 @@ function Chip({ item }: { item: CompatibilityItem }) {
style={{ backgroundColor: item.badgeBg }}
>
{/* eslint-disable-next-line @next/next/no-img-element */}
-
+
-
- {item.name}
-
+ {item.name}
);
}
@@ -80,16 +72,12 @@ export function CompatibilitySection() {
- Handcrafted with a lot of love. -
+Handcrafted with a lot of love.
- 355 Bryant St, San Francisco, CA 94107 -
+355 Bryant St, San Francisco, CA 94107
© {new Date().getFullYear()} Thesys Inc. All Rights Reserved @@ -194,9 +190,7 @@ export function Footer() {
© {new Date().getFullYear()} Thesys Inc. All Rights Reserved
-- 355 Bryant St, San Francisco, CA 94107 -
+355 Bryant St, San Francisco, CA 94107