# Apps SDK UI
Apps SDK UI is a lightweight, accessible design system for building high-quality ChatGPT apps with the [Apps SDK](https://developers.openai.com/apps-sdk). It provides Tailwind-integrated design tokens, a curated React component library, and utilities optimized for consistent experiences inside ChatGPT.
## Features
- **Design tokens** for colors, typography, spacing, sizing, shadows, surfaces, and more.
- **Tailwind 4 integration** pre-configured with Apps SDK UI's design tokens.
- **Accessible components**, built on Radix primitives with consistent styling.
- **Utilities** for dark mode, responsive layouts, and ChatGPT-optimized behaviors.
- **Minimal boilerplate** — import styles, wrap with a provider, start building.
## Prerequisites
Apps SDK UI requires **React 18 or 19** and **Tailwind 4**.
- React: https://react.dev/learn/installation
- Tailwind 4: https://tailwindcss.com/docs/installation
## Installation
### 1. Install the package
```bash
npm install @openai/apps-sdk-ui
```
### 2. Setup styles
Add the foundation styles and Tailwind layers to the top of your global stylesheet (e.g. `main.css`):
```css
@import "tailwindcss";
@import "@openai/apps-sdk-ui/css";
/* Required for Tailwind to find class references in Apps SDK UI components. */
@source "../node_modules/@openai/apps-sdk-ui";
/* The rest of your application CSS */
```
Then import your stylesheet _before_ rendering any components:
```tsx
// Must be imported first to ensure Tailwind layers and style foundations are defined before any potential component styles
import "./main.css"
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import { App } from "./App"
createRoot(document.getElementById("root")!).render(
,
)
```
### 3. Configure router (optional)
`` helps define your default router link component, used in components like `` and ``.
This provider is optional - router links can also be [passed directly to components](https://openai.github.io/apps-sdk-ui/?path=/docs/components-textlink--docs#component-level) via the `as` prop.
```tsx
// Must be imported first to ensure Tailwind layers and style foundations are defined before component styles
import "./main.css"
import { AppsSDKUIProvider } from "@openai/apps-sdk-ui/components/AppsSDKUIProvider"
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import { Link } from "react-router"
import { App } from "./App"
declare global {
interface AppsSDKUIConfig {
LinkComponent: typeof Link
}
}
createRoot(document.getElementById("root")!).render(
,
)
```
### Start building
Your project is now ready to use Apps SDK UI!
Here's an example of a simple reservation card, using Tailwind classes and components.
```tsx
import { Badge } from "@openai/apps-sdk-ui/components/Badge"
import { Button } from "@openai/apps-sdk-ui/components/Button"
import { Calendar, Invoice, Maps, Members, Phone } from "@openai/apps-sdk-ui/components/Icon"
export function ReservationCard() {
return (
Reservation
La Luna Bistro
Confirmed
-
Date
- Apr 12 · 7:30 PM
-
Guests
- Party of 2
-
Reference
- 4F9Q2K
)
}
```
## License
[MIT](LICENSE) © OpenAI