How Beast works
Beast turns source-located BTSX into readable TSRX before Octane and the selected bundler take over.
The indentation-aware parser creates a source-located Beast AST. The generator then emits native TSRX, which Octane validates and lowers before Vite, Rspack, or Rsbuild adds the module to the application graph.
- .btsx source
- Indentation-aware parser
- Source-located Beast AST
- Readable .tsrx output
- Octane compiler
- Vite / Rspack / Rsbuild graph
Card.btsxbtsx
props { user, messages }: Props .card h1 Welcome, #{user.name} if user.isAdmin AdminPanel(userId={user.id}) ul.messages each message in messages key message.id li #{message.text}Conditions and loops remain template operations, component output remains readable, and Octane stays the authority for final validation.
Card.tsrxtsrx
export default function Card({ user, messages }: Props) @{ <div className="card"> <h1>Welcome, {user.name}</h1> @if (user.isAdmin) { <AdminPanel userId={user.id} /> } <ul className="messages"> @for (const message of messages; key message.id) { <li>{message.text}</li> } </ul> </div>}