raea 0.1.0
The first release of the raea engine: the raea CLI that renders, plays and checks compositions, games and apps written in React and TypeScript, with the SDK, the runtime and the agent skills beside it.
raea 0.1.0 is the first release of the raea engine: the raea CLI that renders, plays and checks compositions, games and apps written in React and TypeScript, with the SDK, the runtime and the agent skills beside it. It needs no account and talks to no raea server.
curl -fsSL https://raea.io/install | sh
mkdir my-video && cd my-video && raea init
raea render0.1.0 is for the Mac (Apple silicon) and Linux on x86_64. It has no Windows build: 0.1.1 is the first release with one.
What changed since 0.1.0-canary.3
React Three Fiber in, three.js out. An R3F scene, its GLSL shaders, postprocessing and drei helpers render straight to the GPU, frame-exact and with no browser. It also works the other way: a raea scene plays in three.js on the web. Each way is checked against the other renderer, and anything without a counterpart is listed, not lost.
Bevy's own examples, matched. Bevy's examples are ported to raea's TypeScript SDK and checked against Bevy itself, pixel for pixel. 155 of them pass, across 2D shapes, text and atlases, lights, materials, UI, shaders, compute, many_foxes and split screen. Bring your own WGSL: custom materials in 3D and 2D, storage buffers, texture arrays, bindless, prepasses and compute shaders, all from TSX.
Bevy UI in TSX. Gradients (linear, radial, conic, with Bevy's colour hints and Oklab), box shadows, stacking, scrolling, grid, text input and IME, and the full feathers widget set, each matched to Bevy, and drivable by scripted input for a render.
Ray tracing. Under Solari and the path tracer, see-through materials, uv_transform and a panorama's sun all work, so a chrome ball reflects the sky's sun. A ShaderExtension that doesn't compile refuses the render, and <Pathtracer /> no longer panics on its first frame.
Rune layers in a web page. Mark an element with <RuneLayer> (from @raea/rune) and its subtree is drawn by Rune on Bevy's own GPU device, with no copy, inside a page Blitz draws. Presses and the wheel reach the layer's elements, and a press held off the layer still ends there. The same TSX app still builds for a native window or the web, and raea app check drives it on both targets.
Live equals render. Playing a 3D scene live and rendering it now share one path. Across 190 compositions, 169 match pixel for pixel, and the rest have known causes.
The same pixels every run. Draw order in 3D, GPU particles (bevy_hanabi, patched) and Vello's antialiasing no longer vary between runs, so a render is a function of its code.
HTML closer to Chrome. background-clip: text, SVG paint from stylesheets, transform-box, preserve-3d, opacity over positioned children, and vendor-prefixed styles, each checked against Chrome and the web-platform tests. An HTML page whose script throws before any timeline registers now fails to render with its error, instead of holding its first frame.
Video and fonts from the web. A <Video> whose src is an https:// URL now plays: raea fetches it once into its cache, keyed by the URL, so the render stays a function of its code and plays offline after that. A URL it can't fetch stops the render and says why ("HTTP 404 Not Found", or that it isn't cached and RAEA_OFFLINE is set). Before, the URL was read as a file next to the composition and refused as "no video track" (#57). And loadFont("Space Grotesk") from raea/text loads a Google Fonts family by name, every weight and style, once, through the same cache. Families nobody asks for aren't fetched, as in Chrome.
Black behind an empty composition, in video too. A composition that paints no background was black behind its content in a PNG but dark blue (13, 10, 26) in an MP4 or MOV. Both are black now. If a video of yours relied on the blue, give its root a backgroundColor.
raea song everywhere. Beat, bar and section maps now come out on Linux and Windows as well as macOS, from the same beat model on every platform, and each release checks it.
Docs for everything. raea.io/docs has a page for every CLI verb and every SDK import path, and every SDK prop, field and member is described there. The docs check fails on a missing one.
Skills for agents. The raea skill now lives in its own repository, github.com/shinyobjectz/raea-skills, and its craft guides travel with it. Its description leads with what only raea does (3D, physics, matchmove, games, beat-timed cuts), so an agent such as Claude Code, Codex or OpenCode picks raea for those jobs. Each runner checks the skill's CLI reference against the raea it just built.
Built in public. The macOS and Linux archives are built from this tag by public CI and carry build-provenance attestations. Check one with gh attestation verify raea-0.1.0-linux-x86_64.tar.gz -R shinyobjectz/raea.
Fixes
- An app's
{ frames: 30 }and{ dialog: 1 }steps play again (#75). - A guide's
raea export-gamenames the real command (#76). - raea's own git commits work on a Mac with no git email set.
Thank you to everyone who filed issues and sent PRs this round: JimGHTB12, studiodreamsummon, watzon, kevinschaich, tudorsaitoc, Jameschuthink, tobitege and kumanday. 39 issues closed since canary.3.
If you build raea from main: between a3db7b6db and 94d62d7fd (both 11-08, neither in a release), raea render X.tsx --at N refused every TSX composition with "no two readbacks with its tag agreed". Full renders were unaffected. It's fixed in this release.
This release is built from v0.1.0 (d6f41c605).
Known missing
- No Windows build (0.1.1 has one).
- The engine is unsigned: its renders carry no Content Credentials, and the binaries aren't notarized. The installer doesn't quarantine them, so macOS runs them.
- A Rune layer's elements aren't in the page's layout snapshot yet (their
getBoundingClientRectis zero), and keys and IME don't reach a layer yet. - On the native target, the page below the app's root is painted white where the web paints it black.
- On the web target, a label in a narrow box can wrap where Chrome wouldn't.
- On Linux, raea needs ALSA and fontconfig (Ubuntu 24.04:
sudo apt install libasound2t64 libfontconfig1). An app's window (raea app run, on either target, andraea app check's web target) needs a display: X11 or Wayland, or Xvfb on a server. A minimal system also needslibxkbcommon-x11-0 libxcursor1 libxi6 libxrandr2 libx11-xcb1 libvulkan1(Debian and Ubuntu names).