← PlatformsReactJsonUIThe web target. rjui is the CLI, Next.js App Router is the default host (since jsonui-cli 1.6.7 a web_framework adapter in rjui.config.json can retarget the emit to any React-family framework — see the Web framework adapters guide), Tailwind is the styling layer. The documentation site you are reading right now is built with rjui — if the output looked or felt off, you would not be reading it on it.~10 min read
What you get`jui build` delegates web generation to rjui, which emits plain React TSX that your framework compiles and serves — Next.js by default. No custom runtime, no bundler plugins beyond what you already have — if your React toolchain can build TSX, it is already in your pipeline. The output has a boring generated-file header, imports StringManager for i18n, and looks like TSX anyone on your team could have written; it is just produced deterministically from the Layout JSON.
Next.js integrationApp Router, Server Components, dynamic imports, client boundaries — they all work. rjui emits `"use client"` at the top of files that use state or event handlers, and leaves the rest as Server-Component-compatible. You write your own app/page.tsx that pulls the hand-authored hook; the generator never forces an architectural choice you did not make.
Generator output + TailwindLayout attributes map onto Tailwind utility classes by default, so a Layout JSON Button ends up as a span + classes that any React dev recognises. Colours are token-first: names from colors.json (and hex values that match a palette entry) compile to token classes like `bg-surface` / `text-ink`, and `jui build` generates `src/generated/theme.css` — a `@generated` Tailwind v4 `@theme` block mirroring every mode-complete token (ARGB hex becomes `rgba()`; non-base modes re-bind the variables under `:root[data-theme="<mode>"]`). Wire it once by adding the `@import` line the build log prints to your globals.css; after that, token additions flow through automatically. A hex value that is NOT in the palette is emitted inline (`text-[#2563EB]`) — it renders in every mode but never theme-switches, and the build warns about it so you can promote it to a token.
Production caveatsGenerated TSX is TSX — Next.js builds it exactly like any other file. Two things to know: (1) Server Components vs Client Components is your call; rjui's default is client-side for anything touching state, which is safe but SEO-focused sites may want more Server-rendered. Flip that at the screen level by authoring a small wrapper. (2) Image assets use Next.js's Image component if imported explicitly; the default Layout output uses plain `<img>` because cross-platform consistency matters more than Next's image optimisation for most spec-driven screens. Swap per screen as needed. And Next itself is not a hard dependency: everything framework-specific in the emit — the directive, Link, the router import and type — flows through the web_framework adapter, so declaring a custom adapter in rjui.config.json retargets these same rules to Remix, TanStack Start, or any other React-family framework.
Keep reading
SwiftJsonUIThe iOS sibling — same spec, different native emit./platforms/swift
KotlinJsonUIThe Android sibling — Compose + XML from the same spec./platforms/kotlin