Skip to main content

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 to 2.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 docsRuntime statusNotes
FocusEventLivelistenerContext:asFocus() returns focus payload with isFocus
KeyPhaseLiveExposed as "down", "repeat", "up" through keyboard invocation
KeyboardEventLivekey, modifier flags, and phase are available
ListenerContextLiveis... / as... methods are implemented and wired
TextInputLivelistenerContext:asTextInput().text is available
NoneEventLiveisNone() and asNone() are available
NodeReadData.paint + node:asPaint()LivePaint access is implemented in Lua artboard bindings
AudioSource.durationLivesource.duration is exposed in Lua audio bindings
ReportedEventPartialInvocation exists; exposed payload is limited (delaySeconds)
ViewModelChangePartialInvocation exists; payload wrapper has limited detail
PointerTypePartialNo standalone type table; PointerEvent.type string values are live
ViewModel.nameNot exposedDocumented field is not currently exposed in Lua ViewModel wrapper
OutputNot exposedNo 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...() and listenerContext:as...() patterns for event-safe branching.
  • Treat PointerEvent.type as string-based ("pointerDown", "pointerMove", etc.).
  • Do not teach viewModel.name as 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)

  1. Fetch latest runtime: git clone/git pull rive-app/rive-runtime.
  2. Record latest npm release line for C++ WASM runtime packages:
    • npm view @rive-app/canvas version
    • npm view @rive-app/canvas-lite version
    • npm view @rive-app/webgl2 version
    • npm view @rive-app/canvas-advanced version
  3. Pin npm gitHead hash and npm publish timestamp in this page.
  4. Pull latest docs machine-readable source (/docs/llms-full.txt) and list (Coming soon) API sections.
  5. For each surface, verify:
    • Type/wrapper exists in runtime headers
    • Lua atoms/bindings exist
    • Invocation/dispatch path exists (not only a stub)
  6. 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:

  1. Runtime release check via npm registry
    • Ran npm view for @rive-app/canvas, @rive-app/canvas-lite, @rive-app/webgl2, and @rive-app/canvas-advanced
    • Confirmed all report 2.37.4
  2. Runtime source pin
    • Pinned npm gitHead 5581955bf70d8976c60254de1a9c50c128e70582 for runtime line 2.37.4
  3. Docs delta source
    • Compared against https://rive.app/docs/llms-full.txt, focusing on APIs marked (Coming soon)
  4. Binding-level verification
    • Confirmed availability/limits by checking runtime Luau bindings and invocation paths (not docs text alone)
  5. 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?