Runtime Compatibility Baseline
This page tracks what is actually live in the Rive C++ runtime for Luau scripting, even when docs wording lags.
Baseline Snapshot
- Audit date: April 27, 2026
- Runtime repo:
rive-app/rive-runtime - Runtime source gitHead (from npm metadata):
5581955bf70d8976c60254de1a9c50c128e70582 - Current C++ WASM runtime release line (npm):
2.37.4 - Checked npm packages:
@rive-app/canvas,@rive-app/canvas-lite,@rive-app/webgl2,@rive-app/canvas-advanced(all resolved to2.37.4) - npm publish timestamp for
2.37.4: April 24, 2026 (UTC) - Docs comparison source:
https://rive.app/docs/llms-full.txt(sections marked(Coming soon))
Use this snapshot when deciding whether LERP content is current for C++ runtime behavior.
Source-of-truth rule
For release tracking, LERP treats npm package metadata (version, time, gitHead) as authoritative for C++ WASM runtime line mapping.
"Coming Soon" Reality Check
Status legend:
- Live: Exposed and usable in current runtime bindings
- Partial: Surface exists but is limited vs docs wording
- Not exposed: Not currently available in Luau bindings at this baseline
| Surface in docs | Runtime status | Notes |
|---|---|---|
FocusEvent | Live | listenerContext:asFocus() returns focus payload with isFocus |
KeyPhase | Live | Exposed as "down", "repeat", "up" through keyboard invocation |
KeyboardEvent | Live | key, modifier flags, and phase are available |
ListenerContext | Live | is... / as... methods are implemented and wired |
TextInput | Live | listenerContext:asTextInput().text is available |
NoneEvent | Live | isNone() and asNone() are available |
NodeReadData.paint + node:asPaint() | Live | Paint access is implemented in Lua artboard bindings |
AudioSource.duration | Live | source.duration is exposed in Lua audio bindings |
ReportedEvent | Partial | Invocation exists; exposed payload is limited (delaySeconds) |
ViewModelChange | Partial | Invocation exists; payload wrapper has limited detail |
PointerType | Partial | No standalone type table; PointerEvent.type string values are live |
ViewModel.name | Not exposed | Documented field is not currently exposed in Lua ViewModel wrapper |
Output | Not exposed | No runtime Lua Output surface in this baseline |
Practical Guidance for LERP Content
- Teach
ListenerAction.performAction(self, listenerContext)as the primary callback shape. - Use
listenerContext:is...()andlistenerContext:as...()patterns for event-safe branching. - Treat
PointerEvent.typeas string-based ("pointerDown","pointerMove", etc.). - Do not teach
viewModel.nameas available in Luau at this baseline. - Do not present
Output<T>as a currently exposed runtime feature in C++ Luau bindings.
Re-Audit Workflow (for future updates)
- Fetch latest runtime:
git clone/git pullrive-app/rive-runtime. - Record latest npm release line for C++ WASM runtime packages:
npm view @rive-app/canvas versionnpm view @rive-app/canvas-lite versionnpm view @rive-app/webgl2 versionnpm view @rive-app/canvas-advanced version
- Pin npm
gitHeadhash and npm publish timestamp in this page. - Pull latest docs machine-readable source (
/docs/llms-full.txt) and list(Coming soon)API sections. - For each surface, verify:
- Type/wrapper exists in runtime headers
- Lua atoms/bindings exist
- Invocation/dispatch path exists (not only a stub)
- Update:
- this page
- affected API lessons/examples/quizzes
- changelog entry with audit protocol details
Audit Protocol (what this update checked)
For the April 27, 2026 pass, LERP used this verification sequence:
- Runtime release check via npm registry
- Ran
npm viewfor@rive-app/canvas,@rive-app/canvas-lite,@rive-app/webgl2, and@rive-app/canvas-advanced - Confirmed all report
2.37.4
- Ran
- Runtime source pin
- Pinned npm
gitHead5581955bf70d8976c60254de1a9c50c128e70582for runtime line2.37.4
- Pinned npm
- Docs delta source
- Compared against
https://rive.app/docs/llms-full.txt, focusing on APIs marked(Coming soon)
- Compared against
- Binding-level verification
- Confirmed availability/limits by checking runtime Luau bindings and invocation paths (not docs text alone)
- Course sync pass
- Updated relevant API pages, lessons, examples, quizzes, and compatibility notes
Changelog Requirements for Runtime Audits
Every runtime-audit changelog entry should include:
- Audit date
- Runtime source
gitHead(from npm metadata) + npm publish timestamp - npm release version line and packages checked
- Which surfaces changed status (
Live,Partial,Not exposed) - Which course pages were updated (docs + lessons + quizzes)
Compatibility Quiz
Q:At this baseline, which statement is accurate?