Rive Release Notes
16 release notes curated from 1 source by the Releasebot Team. Last updated: Oct 13, 2026
- Oct 13, 2026
- Date parsed from source:Oct 13, 2026
- First seen by Releasebot:Oct 13, 2026
Rive Editor 0.9.240
Rive improves timeline and state machine undo behavior, syncs edits after dropped connections, and fixes runtime playback for states with negative speed after the same animation plays forward.
โฉ๏ธ Undo keeps your view: undo in the timeline and the state machine graph now keeps your zoom and scroll, and moves the view only when what it changes is off screen. Before, undo jumped the view around before it reverted anything, and every scroll in the timeline was its own undo step.
๐ Syncing after a dropped connection: if the editor loses its connection while you keep working, it now syncs your changes when it reconnects, even a large batch of them. Before, a large batch could keep resending without ever finishing, or the editor could stop reconnecting and leave the file offline.
Runtime
โช Backwards states play again: since the last release, a state with a negative Speed could freeze on its first frame when the state before it had just played the same animation forward, like a show and hide pair built on one animation. Now it plays.
Original source - Oct 12, 2026
- Date parsed from source:Oct 12, 2026
- First seen by Releasebot:Oct 13, 2026
Rive Editor 0.9.225
Rive releases editor and runtime updates with Q, W and E transform shortcuts, editable brush shapes, smoother playback, more reliable data binding and scripting, and faster, more stable animations across the web editor and runtimes.
โจ๏ธ Hold Q, W or E to transform from anywhere: with something selected, hold Q, W or E and drag anywhere on the stage to move, rotate or scale the selection. Clicking other objects while you hold the key doesn't select them. Release the key to go back to the tool you had before. A quick tap still switches tools.
๐๏ธ Transform brush shapes without flattening: in Animate mode, moving, scaling or rotating a brush shape no longer asks you to Flatten to Animate, and you can key those changes. Editing its Brush Spines or outline still asks.
๐๏ธ Smooth timeline playback in large files: playing a timeline that keys draw order no longer stutters in files with many objects. The state machine played smoothly, but the timeline dropped frames. As reported here.
๐ฑ๏ธ Smooth hover during playback: moving the pointer over the stage while a file plays no longer slows the editor down in files with many Components.
๐ Long sessions in the browser: the web editor no longer runs out of memory and stops responding after a long session. Every frame that drew paths leaked a little memory, so playing animations for a while made it worse.
โ๏ธ Clean stroke ends with Stabilize: Brush and Eraser strokes drawn with Stabilize no longer narrow into a thin neck just before the end cap. With Stabilize at 0, strokes now end where the pen lifts.
๐ Paste constraint keyframes: pasting keyframes copied from a constraint, like the Distance of a Follow Path constraint, now works. Before, paste did nothing. Keyframes from one constraint go onto every selected constraint.
๐ Data binding survives .rev export and copy and paste: exporting a .rev, or copying and pasting, now keeps relative data binding paths (on triggers, listeners, Components and script inputs) and library enum values. Before, a file made from an exported .rev lost the target of every relative trigger.
๐ Changing a state's type keeps its transitions' actions: changing a state to another type no longer deletes the events and listener actions on its transitions.
๐งฎ Converter copy and paste: pasting or duplicating a Component bound through a converter no longer adds another copy of the converter's binds each time. Copying a converter in the Data Panel now brings its formula tokens and group items with it. Before, the pasted converter had an empty formula or no items.
๐ฃ Formula tokens keep their binds: editing a formula no longer deletes a token's bind, or binds it to a different view model, when two view models share a name or a name contains "/".
๐ฆด Selection fixes: bones drawn over a Component can be clicked on the stage again. One click on another Hierarchy row now leaves an edit mode (it took two), and clicking an image's mesh in the Hierarchy no longer shows a blank Inspector.
๐ฉน Crash fix: fixed a crash when the editor drew a path that had just been removed, seen around selection outlines, vertex editing and Follow Path.
AI Agent
๐ผ๏ธ Partial captures no longer break the conversation: when the AI Agent captured an artboard with some text or images not drawn yet, every later message in that conversation failed. Now the capture comes back marked as partial.
๐ฆด Points added to bound paths get weights: vertices the AI Agent adds to a path bound to bones now get weights, as the Pen tool's do. Before, capturing that artboard could crash the editor.
Scripting
๐ค context:font(name) in the editor: scripts that call context:font(name) now work in the editor. Before, the call failed, and a state machine running that script slowed down until the editor froze.
โป๏ธ Artboard inputs that loop back: a script whose Artboard input leads back to its own artboard (a script in A takes B as an input, and B contains A as a Component) no longer crashes. The repeated input is left empty.
๐จ Faster GPU scripts on WebGL: GPU script passes no longer stall every frame waiting on the GPU.
Runtime
โก Faster playback: a state machine layer resting on a pose, or on a one-shot animation that has finished, no longer re-applies it every frame while nothing changes. Artboards that keep most of their content behind Solos also skip the hidden options every frame. On test files, idle advance time dropped from 0.093 ms to 0.038 ms, and busy scenes advance 24 to 28% faster.
๐ Trackpad flicks bounce at the end of a scroll view: on macOS, flicking a scroll view to its end with the trackpad now stretches past the edge and springs back, as releasing a drag does. Before, it stopped dead at the edge.
โจ๏ธ Text Input carets blink everywhere: the caret now blinks on runtimes that redraw only when something changes. Before, it could stay hidden.
๐ก๏ธ Safer file loading: files with an object a runtime can't read no longer crash on load or attach the objects after it to the wrong parent. Draw rules whose target is missing no longer crash on load either.
Original source All of your release notes in one feed
Join Releasebot and get updates from Rive and hundreds of other software products.
- October 2026
- No date parsed from source.
- First seen by Releasebot:Oct 11, 2026
Rive Editor 0.9.174
Rive improves editor stability and runtime behavior with fixes for Blend State additive crashes, double-click state selection, library updates, text input tabbing, WebGL GPU scripts, high-density layout scaling, and on-load triggers in artboard lists.
๐งฎ Additive Blend States with view model timelines: adding a Mix by view model timeline to a Blend State (Additive) no longer crashes the editor, and neither does selecting that blend state afterwards. As reported here.
๐ฑ๏ธ Double-click opens a state again: clicking a state no longer shifts the graph when the Actions panel opens, so the second click of a double-click lands on the same state. Resizing the State Machine panel leaves the nodes in place again; dragging the divider above the panel still moves them with it.
๐ Library updates: undoing a library update no longer deletes the components it updated. Before, they disappeared for you and your collaborators, and could be lost for good. Updating only some components of a library no longer lists them twice in the Assets panel, and files where this already happened fix themselves when opened.
๐ฏ Solos after reparenting: dragging a Solo's active child out of it in Animate mode, then dragging the Solo under that child, no longer crashes the editor when an animation or state machine plays.
โจ๏ธ Tab through Text Inputs: a Text Input made with the Text Input tool now takes one Tab press. Before, its scroll viewport was a focus stop of its own, so every field took two.
Scripting
๐จ GPU scripts on WebGL: GPU scripts whose uniform struct isn't a multiple of 16 bytes render on WebGL again. Before, every draw failed.
๐ Layout scripts on high-density screens: on the web, a layout script's resize now gets the screen's pixel ratio as its scale. Before, it was always 1.
Runtime
๐ Triggers fired on load reach list rows: a trigger fired before the first frame, like one an app fires on load, now reaches the rows an Artboard List creates in that frame. Since the last release, those rows missed it, so their intro didn't play.
Original source - October 2026
- No date parsed from source.
- First seen by Releasebot:Oct 11, 2026
Rive CLI 1.5.1
Rive adds CLI library publishing, smoother Windows support, safer push confirmations, and broader improvements across web publishing, RML, scripting, and viewer behavior. The release also fixes library typing, Android previews from Windows, and several build and editor edge cases.
This release lets you publish libraries from the CLI. rive library publish turns your project's Rive file into a library, or publishes its next version. Before, you had to open the file in the editor to publish it. On Windows, rive . --android now previews on Android devices and rive login works on Windows 10. rive push now asks before it overwrites a linked file, so CI and scripts need --yes. Update with rive update (curl install) or brew upgrade --cask rive-cli.
Libraries
๐ฆ Publish a library: rive library publish publishes the project's Rive file as a library, so other files can import its artboards, view models, enums, scripts and shaders. The first run creates the library and every later run publishes a new version. Artboards with isComponent="true" publish, and view models, enums, scripts and shaders always do. Before it publishes, it lists what the new version adds and what it removes, then asks. --description= adds a note to the version and --yes skips the question. A version is made from the file's content, so the command pushes the project first: pull before publishing if someone else works in the file. The project must be linked to a file, so run rive push once before your first publish. Publishing libraries needs a Voyager plan or higher.
๐งฉ Library scripts know their library's types: a library's scripts now type check against the view models and enums the library declares. Before, a script that used Data. for one of them failed with an unknown type error. When your file and a library use the same name, your file's wins. rive pull refreshes these types when a library changes.
๐ Projects open on the main artboard: a project that imports a library with an unnamed artboard now opens on its own main artboard, on first launch and in every --screenshot. Before, it opened the library's unnamed artboard.
๐ Scripts keep their id across builds: a script kept in its own file (written in markup) now keeps the same id from build to build, written back into the markup as codeFileId. Before, each build gave it a new id, so publishing the file as a library replaced the script with a new one, and files that imported it lost it when they updated.
๐งฑ Libraries written as fragments: in a library whose markup has no root, an import placed anywhere at the top level now works. Before, the import made it into the .riv, but its view models were left undeclared and its scripts were left out.
Windows
๐ฑ Preview on Android from Windows: rive . --android now works on Windows. It finds adb, starts emulators, and offers to download Google's platform tools when adb is missing, and rive doctor reports the Android setup. Before, it was only available on macOS and Linux.
๐ Sign in on Windows 10: rive login now works on Windows 10. Before, it failed with an SSL connect error right after "Waiting for authenticationโฆ", so no command that needs a session worked. RIVE_NET_EXTRA_CA and CURL_CA_BUNDLE now work on Windows too, as on macOS and Linux, and certificates your company installs in Windows are still trusted. As reported here.
โฌ๏ธ Pickers in Windows consoles: the arrow-key pickers, like the project picker on a first rive push, and the rive ls browser now work in Windows consoles. Before, Windows fell back to a numbered list.
๐พ Save dialog for .rev export: exporting a .rev from the viewer's menu now opens a Save dialog on Windows, as on macOS.
๐ One --serve per port: a second rive --serve on Windows now fails to start when the port is taken. Before, it shared the port with the first one.
Push
โ ๏ธ rive push asks before overwriting: a push to a file the project is already linked to now asks first:
Pushing rive-cli project "palette" will overwrite remote file 37611. Proceed? [y/N]--yes skips the question. Where nothing can answer (CI, a script, an agent's shell), a push without --yes now stops with Rerun with --yes to confirm. instead of pushing, so add --yes to any pipeline that pushes a linked project. The first push, which creates the file, doesn't ask.
Publishing to the web
๐๏ธ Choose how the control bar starts: --drawer= sets how a page published with --publish=web starts its control bar (fit, full screen and copy link). docked keeps the bar out, hidden starts with only a small tab at the bottom of the page, and none leaves the page without a bar. Pass it on every publish, the same way as --no-wait: a publish without it goes back to the default. Visitors can still dock, hide or remove the bar.
RML (the markup the CLI compiles)
๐ข Scroll physics survive the editor: a scroll view's physics, with its name and settings like friction and speed, now stays when the pushed file is opened in the editor. Before, the editor swapped it for default physics, and a later rive pull brought the defaults back into your markup.
๐ Two new rive inspect checks: gradient-too-few-stops (error) flags a linear or radial gradient with fewer than two stops, which the editor deletes, leaving its fill or stroke with no color. shared-scroll-physics (warning) flags a scroll view that shares its physics with another, which the editor can reset to defaults. Neither fails a build.
๐ข Built-in enums build: markup that uses one of the editor's built-in enums, like Layout Display, now builds. Before, markup pulled from such a file failed with enumId="48:0" matches no id in this file. A view model property that uses one of these enums also ships its values in the .riv now. Before, it shipped with no values.
Scripting
๐จ Shader uniforms on WebGL: a shader whose uniform struct isn't a multiple of 16 bytes now draws on WebGL. Before, WebGL refused to draw it, and on Windows the player read past the end of its data.
โณ Async work after an animation ends: a script's async work now finishes after its animation has ended. Before, a runtime that stopped updating the finished animation never delivered the result, so an await stalled.
Viewer
๐ Rotation constraint limits across 180ยฐ: a Min of -180ยฐ now holds, ranges that cross 180ยฐ, like 150ยฐ to 210ยฐ, work, and an angle outside the range snaps to the nearer limit.
โ๏ธ Text inputs take a press anywhere in the field: a text input inside a scroll now places the caret on a press anywhere in its field, including above or below the text in a multiline field. Before, only a press over the text itself reached it.
Original source - October 2026
- No date parsed from source.
- First seen by Releasebot:Oct 11, 2026
Rive Editor 0.9.157
Rive adds smoother authoring and runtime updates, including SVG paste to the active artboard, new Grid and Stack tools, better virtualized layouts, fixes for brush shapes, Flash and Animate conversion, Auto Trace, bindings, state machine behavior, text input, and more.
๐ Paste SVG onto the stage: SVG you paste (from Illustrator, for example) or an SVG file you drop onto the stage now lands on the active artboard, centered and selected, like an image. Before, it only went to the Assets panel. Pasted images are centered again too; before, their top-left corner landed at the center. As requested here.
๐ Grid and Stack tools: the toolbar menu with Layout, Row, and Column now also has Grid and Stack. A Grid starts with two rows and two columns; while you drag it out, the up and down arrows add or remove a row and a column, and 1 to 9 set both counts. A Stack starts with two overlapping children, centered.
๐ Virtualized grids and wrapping layouts: Virtualize on a Scroll Constraint now works when its content is a grid or a wrapping layout, and with Direction set to All. Before, it only worked on a list in a single row or column. With Carousel on, a grid loops in both directions. Large virtualized lists also load and scroll faster.
๐๏ธ Brush shapes in Animate mode: a brush shape drawn in Animate mode keeps its color and holes. Before, leaving Animate mode, undoing, or moving the playhead turned it grey and filled in its loops. Generate Brush Shape and Generate Pencil Stroke get the same fix.
๐๏ธ Flash and Animate conversion: strokes no longer hide under their fills, MP3 sounds keep their format, and files at Animate's default 24 fps no longer convert at 30 fps, which put the animation out of sync with its sound. Layers with a shape tween keep their other keyframes, so a mouth chart no longer shows several mouths at once.
๐งต Auto Trace on pixel art: Auto Trace on small pixel art now follows the outline. Before, it made spikes and folds, and a high Padding could cut off part of the art.
๐งฉ Files that failed to load: a fill or stroke holding two paints, like a stray linear gradient next to the radial gradient it showed, made the whole file fail to load in the runtimes, and stopped every Component in it from drawing in the editor. The export now keeps only the paint the editor draws.
๐ Library view model binds: a library artboard bound to its library's global view model keeps its binding in a file that uses its own global view model instead of importing the library's. Before, the binding broke at runtime.
๐ข Binding several objects at once: binding a property that needs a built-in converter, like rotation or scale, on several selected objects now adds one shared converter. Before, it added one per object, and the extras ended up in the exported file.
๐บ๏ธ State machine graph on resize: resizing or moving the State Machine panel keeps the graph centered, so the nodes move with the panel. Before, they stayed put, and the Actions panel or a dragged divider could cover them.
๐ค Waking a large file: a file that went to sleep and reconnects no longer gets slower each time. Before, each wake repeated the work of every earlier one, and on a file with about 100,000 objects a single wake could freeze the editor for about 16 seconds.
Scripting
๐ผ๏ธ Decoded images in the runtimes: images a script decodes with context:decodeImage now show up in the web and Flutter runtimes. Before, they stayed on their fallback image.
๐ 2D vectors have z = 0: every 2D vector a script receives (pointer positions, node position and scale, gamepad sticks) now has z = 0. Before, z could hold a leftover value, so length() came out too long and Vector.xy(1, 2) == Vector.xy(1, 2) was sometimes false.
Runtime
๐ Triggers from nested state machines: a trigger fired by a nested state machine now reaches every state machine that listens for it. Before, it could be cleared before a sibling checked it, so the sibling never took its transition.
โ๏ธ Text Input like a platform text field: the caret hides while text is selected, a press anywhere in the field (past the end of the text, or above or below it in a multiline field) places the caret, and undo catches the first edit in an empty field.
๐ Rotation Constraint limits across 180ยฐ: a Min of -180ยฐ now holds, ranges that cross 180ยฐ, like 150ยฐ to 210ยฐ, work, and an angle outside the range snaps to the nearer limit.
Original source Similar to Rive with recent updates:
- Smokeball release notes147 release notes ยท Latest Oct 2, 2026
- Cosmolex release notes20 release notes ยท Latest Jul 30, 2025
- PracticePanther release notes36 release notes ยท Latest Aug 11, 2026
- Salesforce release notes78 release notes ยท Latest Oct 1, 2026
- Microsoft release notes1010 release notes ยท Latest Oct 15, 2026
- Zoom release notes219 release notes ยท Latest Sep 24, 2026
- October 2026
- No date parsed from source.
- First seen by Releasebot:Oct 11, 2026
Rive CLI 1.4.0
Rive adds major CLI, debugging, and viewer upgrades, including library-aware builds, Android preview, Luau network fetches, view model inspection, break on value change, better virtual input, and richer RML and rendering support.
Libraries
๐ Libraries come with the project: a library is content published in the editor that other files import, like artboards, state machines, view models, scripts and shaders. rive create --from-remote-file and rive pull now download every library the file uses, including the ones other libraries import, into a .libraries folder, and list the direct ones under libraries: in rive.yaml. A library that fails to download leaves its parts out, as in the editor, instead of stopping the build. rive push still pushes only your project. Commit .libraries so a teammate can build without pulling, but don't edit inside it: the next pull replaces it.
๐ Work on a library and the file that uses it together: add override: ../palette to a library's entry in rive.yaml and the build uses that local project instead of the downloaded copy, so you can change both without publishing in between. rive pull keeps your override. Adding a library or moving to a newer version is still done in the editor.
Android devices
๐ฑ Preview on Android: rive . --android installs the Rive player on the first connected Android device and sends it every build as you save. --android= picks a device by adb serial or emulator name, and starts the emulator if it isn't running (arm64 emulators only). Each finger is its own pointer, so multitouch works. When adb is missing, the CLI offers to download Google's platform tools. The player draws with Vulkan by default, and --device-backend=gl switches it to OpenGL. Not available on Windows yet.
Debugging
๐ View models in the debugger: the Rive VS Code extension has a new View Models panel under Run and Debug. It lists the artboard's view model and every global one, and refreshes while the preview runs. Change a number, string, boolean, color or enum from there, or fire a trigger. When a script stops, the Variables panel also shows a View Models scope beside Locals and Upvalues.
๐ Break on Value Change: right-click a view model value in Variables and pick Break on Value Change, or press the breakpoint button beside it in the View Models panel. The preview stops at the script line that wrote the value. When a listener or a data bind wrote it, the call stack names that instead, like Listener 'Tap' and the state machine and artboard it belongs to. The stop message shows the change, like Main/stats/bursts: 0 โ 1.
Headless input
๐ Touch: --touch=<kind[:id]@x,y> synthesises a finger (down, up, move or tap), each id its own pointer. drag@x1,y1>x2,y2+x3,y3>x4,y4 moves several fingers in the same frames, for pinches and two-finger swipes. Before, headless input had a single pointer.
๐ฑ๏ธ Mouse wheel and trackpad: --pointer takes wheel@x,y:dx,dy and trackpad@x,y:dx,dy. A trackpad swipe ends in the same fling on every run, so captures match. A scroll that nothing takes now says so, where before the capture just showed a list that hadn't moved:
wheel: nothing at 200, 300 scrolled. No scroll view under it can move that way, or its wheelInteractive is offScripting
๐ fetch in Luau scripts: fetch(url, options) returns a Promise when you run the CLI with --allow-net. Without it, or anywhere outside the CLI for now, requests reject with disabled. Only https works; IP addresses, local network names and Rive's own hosts are refused, and size, timeout and per-minute limits apply. macOS only for now. To load a downloaded .riv, context:decodeFile(bytes) decodes it and file:bindableArtboard(name) gives an artboard you can assign to a view model artboard property. Only its embedded assets load.
๐ฒ๏ธ Scroll in scripts: a script can take mouse wheel and trackpad scroll with a new pointerScroll(self, event) method. Call event:hit() to keep the scroll; otherwise it passes to the scroll view behind. Scripts without pointerScroll never take scroll.
๐ 2D vectors have z = 0: every 2D vector a script receives (pointer positions, node position and scale, gamepad sticks) now has z = 0. Before, z could hold a leftover value, so length() came out too long and Vector.xy(1, 2) == Vector.xy(1, 2) was sometimes false.
๐งฎ WGSL aliases in shaders: uniform structs can use mat2x2f through mat4x4f, their h forms, and vec2h through vec4h. Before, the shader check rejected them.
โฑ๏ธ --bench times what you publish: --bench= now compiles scripts the way a publish does, and the build log says so. Before, it timed the preview build, which compiles Luau at a lower optimization level.
RML (the markup the CLI compiles)
โญ Inner and outer strokes: position on takes inside, center or outside. It defaults to center and is only written when it differs, so existing files don't change, and runtimes that don't support it yet draw the stroke centered. In the editor, inner and outer strokes are in Early Access.
๐ท๏ธ Names instead of numbers: markup written by rive pull, rive create --from-remote-file and --from-rev now uses names, blendModeValue="softLight" instead of blendModeValue="21", and instead of propertyKey="15". You can write property by hand too; a name that doesn't exist gets a "did you mean" error. Markup with numbers still compiles.
Viewer
๐ Virtualized scrolling in grids and wrapping layouts: virtualize on a scroll view now works in grid and wrapping layouts, in one or both directions. Before, it only worked on a list in a single row or column. A virtualized grid that hugs its content now sizes to all of its rows.
๐ A trigger fired by a nested state machine now reaches every state machine that listens for it. Before, it could be cleared before a sibling checked it, so the sibling never took its transition.
๐ A transition now sees a value that a listener action just wrote. Before, it read the old value, so a button could need two clicks.
โ๏ธ Text inputs behave like platform text fields: the caret hides while text is selected, a click past the end of the text moves the caret to the end, and undo catches the first edit in an empty field.
๐ Color emoji from COLRv1 fonts, like Android's system emoji, draw their gradients. Before, those parts drew solid black.
Original source - Oct 2, 2026
- Date parsed from source:Oct 2, 2026
- First seen by Releasebot:Oct 5, 2026
- Modified by Releasebot:Oct 15, 2026
Rive Editor 0.9.104
Rive releases a major update that brings richer Adobe Animate-to-Rive conversion, mouse and controller input improvements, and early-access inner and outer strokes. It also adds scripting and runtime capabilities, resolves editor and rendering issues, and boosts performance for idle state machines.
Weโve got a ๐ MONSTER release to start October: ๐๏ธ Flash and Animate files convert to Rive, ๐ฑ๏ธ Mouse wheel and trackpad scrolling, ๐ฒ๏ธ Right-click and middle-click listeners, ๐ฎ More controllers on Windows, and, in Early Access, โญ Inner and outer strokes.
๐๏ธ Flash and Animate files convert to Rive
Drag an Adobe Animate .fla file (Animate CC or later), or a zipped XFL folder, into a project and it converts into a Rive file. Each library symbol becomes its own artboard, and the main timeline becomes the Scene 1 artboard. The converter is out of Early Access and available to everyone, and now carries over much more of how an Animate file plays:
Frame labels and frame scripts
Frame labels become state machine states, and stop(), gotoAndPlay(), and gotoAndStop() frame scripts, by frame number or label, in AS2 or AS3, become transitions between them. Only top-level calls convert; calls inside functions or conditionals are skipped.
Working buttons
Button symbols get Up, Over, and Down states driven by a state machine, with a hit area built from the Hit frame, or the Up frame when Hit is empty. Each placed button keeps its own hover and pressed state, so buttons respond independently.
Graphic symbol playback
Loop, Play Once, Single Frame, and both reverse modes, with first and last frame, stay synced to the parent timeline.
Frame sounds
MP3, WAV, and FLAC sounds placed on frames play as audio events.
Bitmaps and symbols
Bitmap fills keep their transform, bitmaps keep smoothing on or off, and instance alpha and 9-slice scaling carry over.
Animation
Classic, motion, and shape tweens, frame-by-frame animation, custom eases, tween rotation, motion guides with orient to path, and IK bones and poses.
Everything else
Shapes and primitives, gradients, dashed and dotted strokes, guide and folder layers, layer parenting, and static, dynamic, and input text. Font names carry over, with Inter embedded as the default font.
๐ฑ๏ธ Mouse wheel and trackpad scrolling
Scroll views built with a Scroll constraint now scroll with a mouse wheel or trackpad, not only a pointer drag. A horizontal strip inside a vertical list scrolls the right way, and a flick that starts in the inner view stays there. Turn off Wheel / Trackpad in the Scroll constraint's options to keep one drag-only. Works in the editor, on share links, and in the web and Flutter runtimes; the iOS and Android runtimes don't support it yet.
๐ฒ๏ธ Right-click and middle-click listeners
A listener set to Pointer Down, Pointer Up, Click, or Pointer Drag now has a second dropdown to pick Primary Button, Secondary Button, or Middle Button. While a state machine plays in the editor, right-click still pans and opens menus everywhere except over a listener that wants it. Runtimes that predate this ignore these listeners instead of firing them on a left click. As requested here.
๐ฎ More controllers on Windows
PlayStation, Switch Pro, and most generic controllers now work in the Windows editor. Before, only Xbox-style controllers were detected on Windows.
๐ MCP connections
The editor's MCP server now runs on Rive's own MCP stack, which fixes the connection problems some of you had.
๐ Grid and Stack in the Hierarchy
An unnamed layout set to Grid or Stack now shows that name and icon in the Hierarchy, like Row and Column already did.
โจ๏ธ Tab between linked fields
In a linked pair like Scale, typing in the first field and pressing Tab now updates the second field. Before, it kept showing its old number until you reselected the object.
โฉ๏ธ Undo after drawing a layout
Undoing right after drawing a Layout, Row, or Column now removes all of it. Before, part of it stayed behind.
๐ Text Runs from library view models
Binding a list of items from a library view model to a text's Text Runs now fills in their style and content. Before, the runs were created empty. In files that already had this binding, the runs fill in once the list changes or you reopen the file.
๐ข Numbers bound to dropdown properties
Binding a number to a property like a Component's Fit, a text's Wrap, or a layout's Display no longer breaks playback when the number is out of range. It falls back to the first option, like the runtimes.
โ๏ธ Trim Path strokes
A trimmed stroke on a path where a straight vertex meets a curved one (an arm at the shoulder, for example) no longer breaks into a fan of lines, a detached cap, or missing segments at some poses. Dash Effect gets the same fix.
๐ค Fit Font Size with huge sizes
A text set to Fit Font Size no longer hangs the editor when its font size is infinite or extremely large, for example from a data-bound formula.
๐ ๏ธ Crash fixes
Stopping playback with a focused Text Input inside a Component (as reported here), and choosing an artboard with no timeline in Share or Publish. Those artboards are now listed as Needs a timeline, since the thumbnail comes from a timeline.
๐ช Windows startup and exit
The editor no longer quits without showing a window when a Chinese or Japanese input method is the default (as reported here). Closing the editor right after launch no longer leaves Rive running in the background, which blocked opening it again until you ended the task.
Early Access
โญ Inner and outer strokes
Stroke Options has a new Position dropdown: Inside, Center, or Outside. Only the Rive Renderer draws inside and outside strokes so far; other renderers and older runtimes draw them centered. As requested here.
Scripting
๐จ Draw into Rive's render target
context:gpuTarget() returns the target Rive draws into, so a script's GPU pass can draw straight into it, under all Rive content. Before, a script drew its passes into its own GPU Canvas first. The target can't be sampled and starts each frame empty, so the first pass must clear or cover it. Where a host can't expose its target (WebGL, for now), context:gpuTarget() returns nil, so keep a GPU Canvas as the fallback.
๐ Pointer event types
event.type in a Node script's pointerDown, pointerMove, pointerUp, and pointerExit now reports the real event. Before, it always read "pointerEnter".
๐ Display scale in Scripted Layouts
The scale resize receives is now the display's pixel density only. Before, it also included the editor's zoom, so a canvas sized from it grew as you zoomed in until it failed to allocate.
๐ Library scripts in pickers
Script pickers no longer list each library script twice. Picking the second copy left the field showing "-".
โพ๏ธ Artboard inputs on actions and conditions
An Input on a scripted listener action or transition condition can no longer pick the artboard that owns it, which recursed until it crashed.
Runtime
๐ฑ๏ธ Buttons that needed two clicks
When a state or transition action writes a view model value that a transition condition reads, the state machine now sees the new value right away. Before, an Any State transition on the old value could win, so a button could take a second click to respond.
๐ Color emoji gradients
Gradient layers in color emoji (like Android's system emoji) now draw in color instead of solid black.
๐ฆด Bone-bound shape fills
Small curved paths bound to bones keep the right fill direction when the bones mirror, and the editor and runtimes now agree at any size.
Renderer and Performance
โก Idle state machines
State machines that have settled stop re-checking work that can't change. An idle scene with a 400-row list drops from 208 ยตs to 44 ยตs per frame (79% less).
๐ฑ Mali GPUs on Vulkan
Fixes a device loss on Mali GPUs (like the Mali-G715 in the Pixel 8) with the Vulkan backend, and landscape Android apps on Vulkan no longer draw stretched.
Original source - Oct 1, 2026
- Date parsed from source:Oct 1, 2026
- First seen by Releasebot:Oct 5, 2026
- Modified by Releasebot:Oct 11, 2026
Rive CLI 1.3.0
Rive adds a bigger CLI and editor update, bringing terminal access to accounts, workspaces, and file IDs, plus mouse wheel and trackpad scrolling in the viewer. It also improves scripting, fixes exports for state machine inputs in folders, and tightens several build and listener behaviors.
Your Rive account
๐๏ธ rive ls lists the projects in your current Workspace, then one folder level of a project, with the id of every row. rive ls --all lists every file in a project with its folder path. On an interactive terminal it opens a browser instead: arrows move, enter opens a project or folder, and a file offers to open it in the editor, create a local project from it, or print its id. --plain prints the table and --json prints one object per line. Windows prints the table for now.
๐ข rive workspace shows your current Workspace and the others you belong to, and rive workspace switches to one. rive whoami now names the current Workspace on a second line.
๐ rive open opens the file in the web editor. --print prints the URL only.
๐งน rive uninstall --unused removes every cached CLI version except the one in use and the default. Before, each rive update or rive switch left the old version in ~/.rive/versions, and you removed them one rive uninstall at a time.
Viewer
๐ฑ๏ธ Scroll views (ScrollConstraint) now scroll with a mouse wheel or trackpad, including a horizontal strip nested inside a vertical list. Before, they only scrolled with a pointer drag. wheelInteractive="false" turns it off for one scroll view. rive samples has a new scroll_demo to try it.
โจ๏ธ On macOS, Shift, Control, Option and Command pressed on their own now reach scripts and keyboard listeners. Before, a game that used Shift to boost did nothing in the viewer. On every platform, keys held down when the window loses focus are now released, so a key no longer stays pressed after you switch windows.
๐ฏ A headless --key with nothing before it now reaches the element the entry state focuses. Before, --key=down without an --advance first went nowhere and logged:
key: nothing is focused, so no listener will see thisScripting
๐ค Fonts and text from Rive Editor 0.9.46 work in CLI scripts too: get a font with context:font(name), lay out styled runs, and draw them with text:draw(renderer). Four new samples show it: scripted_text, text_island, text_string (a paragraph threaded on a rope you can drag apart) and text_rain. See the demos in action.
๐จ context:gpuTarget() returns the target Rive draws into, so a script's GPU pass can draw straight into it, under all Rive content. Before, a script drew its passes into its own GPUCanvas first. The target can't be sampled and starts each frame empty, so the first pass must clear or cover it. Where a host can't expose its target, context:gpuTarget() returns nil, so keep a GPUCanvas as the fallback.
๐ event.type in a Node script's pointerDown, pointerMove, pointerUp, and pointerExit now reports the real event. Before, it always read "pointerEnter".
๐จ๏ธ print("a", 1) now logs a and 1 separated by a tab, like standard Luau. Before, it logged a1. As reported here.
RML
๐ State machine inputs and listeners inside a folder now export. Before, the build left them out of the .riv and reported 0 errors, 0 warnings, and everything that pointed at them went too: a blend state driven by inputs in a folder mixed nothing.
๐จ The build now fails on a reference to an object it didn't export. Before, the reference was dropped and the build passed. The error names both ends:
TranslationConstraint targetId = "0:12" targets a Node that is not exported.๐ A path's winding now comes only from isClockwise. pathFlags in markup is ignored and computed at build time, the way the editor does it. Before, the viewer read the winding from pathFlags, so a path whose pathFlags disagreed with isClockwise could fail to show up.
๐งญ A state machine layer with only an Entry state now gets its Any State and Exit state added at build time, and their ids are written back into your markup so they stay the same across pushes. Before, the editor removed a layer missing either one when the file opened, taking its states, transitions, conditions and actions with it.
๐ข DataConverterEnumToUint is no longer exported, matching the editor. Before, the runtime skipped it and every converter after it shifted one place, so binds landed on the wrong converter. rive inspect reports editor-only-converter when it feeds anything but a number property, and points to DataConverterToNumber. As reported here.
โจ rive inspect reports scripted-path-effect-not-under-paint when a ScriptedPathEffect sits directly under a Shape. It belongs inside a Fill, Stroke, or GroupEffect; under a Shape the file failed to load with a re-import error, and the docs showed exactly that placement. The docs are fixed too. As reported here.
๐๏ธ ListenerViewModelChange takes inputValue (pointerX, keyPressed, gamepadAxis, and others) to write the value of the input that fired the listener, the markup side of the listener values feature in Rive Editor 0.9.46. inputValueIndex picks the gamepad button or axis.
Original source - Oct 1, 2026
- Date parsed from source:Oct 1, 2026
- First seen by Releasebot:Oct 5, 2026
- Modified by Releasebot:Oct 11, 2026
Rive Runtime updates - October 1, 2026
Rive ships a biweekly runtimes roundup with React Native v0.5.0 out of beta and smaller Apple and Android runtimes.
React Native v0.5.0 is out of beta, the Apple and Android runtimes get a lot smaller, and Focus and Text Input are on their way. Here's the latest biweekly roundup of what shipped across Rive Runtimes.
Highlights
- Focus and Text Input are coming to the...
- September 2026
- No date parsed from source.
- First seen by Releasebot:Sep 30, 2026
- Modified by Releasebot:Oct 6, 2026
Rive Editor 0.9.46
Rive releases broader .riv export access on Free, adds listener-driven view model actions and easier Set Parent rigging, expands scripting with text shaping, and improves AI illustration quality plus renderer and playback performance.
๐ Export .riv files on the Free plan
every plan can now export a .riv. Files exported on the Free plan play a short Rive splash screen before your content, and paid plans export without it.
โข ๐๏ธ Listener values drive view model properties
a View Model Change action can now write the value of the input that fired the listener: Pointer X and Pointer Y (and their deltas), Key Pressed, Text Input, Focused, a gamepad button's pressed state or value, or a stick axis. Pick it from the action's value dropdown. When the types differ, add a converter like Convert to Number to turn a button press into a number.
โข ๐ฆด Set Parent
select objects, press Option+P (Alt+P on Windows) or right-click and choose Set Parent on the Stage or in the Hierarchy, then select the new parent. The objects keep their position and draw order, so rigging a character with many image parts no longer means dragging each one onto a bone in the Hierarchy. As requested here.
โข ๐๏ธ Freehand fixes
clicking a Brush Spine's ink with the Bucket now recolors it. With Stabilize turned up, lifting the pen while still moving no longer ends a brush stroke in a thin needle, and the Eraser now erases all the way to where you lifted instead of stopping short.
โข ๐ Undo restores state and transition actions
undoing the delete of a state or transition now brings back its conditions and everything in its Actions list, like Report Event and View Model Change. Before, only the conditions came back.
โข ๐ Duplicating state machines keeps relative binds
duplicating a state machine or a layer no longer drops conditions and actions that use Bind Relative.
โข ๐ฌ Render Presets for state machines
a Render Preset can now render a video of a state machine, with its own fps and Duration, so you can queue the same render again with one click. Before, you had to set up a state machine render in the Render Queue each time.
โข ๐ Listener Source row updates
switching a listener's Listen to between view model properties now shows or hides the Source dropdown right away, instead of only after you reselect the listener. As reported here.
โข ๐ Scripted converters in Converter Groups
a Converter Group with a scripted converter followed by a typed one, like Range Map, no longer shows the invalid converter warning when the file opens.
โข ๐งฉ Grouping Property Groups and Effect Groups
grouping a Property Group or Effect Group with Cmd+G no longer moves it on the stage.
โข ๐ฏ Artboard as Focus Target
a Focus Target action can now target the artboard itself.
AI Agent
โข ๐น Arrow 2 illustrations
on Voyager plans, the Rive Agent now draws illustrations with QuiverAI's Arrow 2 model, which makes cleaner shapes with fewer points.
Scripting
โข ๐ค Fonts and text in scripts
scripts can now shape and draw text. Get a font with context:font(name) or from a view model font property, then lay out styled runs with wrapping, alignment, Ellipsis overflow, and right-to-left text. Lines and glyphs come back with their positions, so a script can animate individual glyphs, and hitTest, caret, and selectionRects support custom text cursors.
Runtime
โข ๐ฆด Bone-bound shapes stay filled
a bone-bound shape with a Clockwise fill no longer disappears when its rig loads folded and then unfolds (for example, inside a Component whose data-bound size starts small).
Renderer and Performance
โข โก Faster playback
long virtualized lists scroll much faster (1,000 rows: 2.26 ms to 0.14 ms per frame) and no longer leak memory as rows are added. Blend states now go idle once they settle (one test file spends 66% less time per frame), layout tweens and corner radius animations no longer re-solve the whole layout every frame, and fading a skinned or constrained shape no longer rebuilds its path.
โข ๐ฏ Faster fills on Vulkan
the Ghostscript tiger (a standard vector rendering benchmark) draws 47% faster on an Adreno 750 (a common Android GPU) and 9% faster on a Mali-G715 (Pixel 8) with the Vulkan backend.
Original source - September 2026
- No date parsed from source.
- First seen by Releasebot:Sep 28, 2026
Rive Editor 0.9.19
Rive ships text input, color binding, brush spine, and state machine fixes, plus faster playback and new instanced image mesh scripting for better rendering and layout performance.
Text Input fixes
A Text Input added to the stage now shows its text (it could draw nothing before), and picking a weight like Bold in the Style dropdown now applies it, including for variable fonts like Inter. As reported here.
Binding color alpha
Auto-binding a fill's Alpha (or its Red, Green, or Blue channel) now creates a Number property instead of an empty Enum, and binding Alpha to an existing Number reads it as 0-100%, matching the color popout, instead of 0-255. As reported here.
Brush Spines
Dragging many Brush Spines at once no longer lags (12 spines on one shape: 68 ms to 9.5 ms per drag). Marquee selecting inside a grouped brush shape now selects only its spines, not the shape.
State machine layers from markup
A state machine layer with no Any State or Exit State (for example, one written in CLI markup) no longer loses its states, transitions, and actions when opened. The editor adds the missing states instead.
Scripting
Instanced image meshes
renderer:drawImageMeshInstanced draws one image mesh many times in a single call, for particles and other repeated sprites. Each instance in a MeshInstances gets its own transform, opacity, additiveness, and UV offset and scale. Blend mode is always normal (use additiveness instead), and the UV transform needs the Rive Renderer.
Renderer and Performance
โก Faster playback: shapes, text, and images placed directly in a layout no longer re-solve the layout every frame, so a still scene goes idle instead of working every frame. Files with many paths also draw faster (one test file with 3,861 paths spends 43% less time per frame in the runtime).
Original source - September 2026
- No date parsed from source.
- First seen by Releasebot:Sep 26, 2026
Rive Editor 0.9
Rive adds major 1.0 editor features including keyboard, gamepad, text, focus, accessibility, grid and stack layouts, blob data binding, color channel controls, key object alignment, and scroll to selection, plus fixes and performance gains ahead of 1.0.
Every major feature planned for Rive 1.0 is now in the Rive Editor.
This release turns on keyboard, gamepad, and text input, focus, accessibility, grid layouts, and more for everyone. Not all runtimes support all these features yet, check Runtime Feature Support for the latest. We've moved to 0.9 while we focus on stability ahead of 1.0, and we need your help. Use these features in real projects and tell us what isn't working right, what feels wrong, and what's missing in Bug Reports and Feature Requests.
โจ๏ธ Keyboard input: add a Keyboard listener and pick On Key Down or On Key Up to react to keys. Keys go to the element that has focus. To try it in the editor, press Option+Space to play with keyboard capture on, or click Toggle Keyboard Capture in the playback header, so keys reach your file instead of triggering editor shortcuts.
๐ฏ Focus: turn on Focusable for any element to add it to the focus order. Focus listeners react when an element gains or loses focus, and Focus Target and Focus Traversal actions move focus to a specific element or step through the order. See it in action.
๐ฎ Gamepad input: add a Gamepad listener to drive a state machine from a controller's buttons and sticks. Scripts can listen to gamepad events too. The gamepad icon at the bottom of an open file turns green when Rive can see your controller. See it in a controller demo and a twin-stick game.
โ๏ธ Text Input: pick the Text Input tool in the toolbar and draw an editable text field. Draw it over a layout to drop it into that layout. The Text Input section of the Inspector sets its font, colors, placeholder, selection color, background, and single line or multiline. See it in action (the filter field).
โฟ Semantics (Accessibility): the Semantic section of the Inspector gives an element a role (button, checkbox, slider, text, and more) plus its traits and state, so screen readers can read and navigate your file. Semantic Tap, Semantic Increase, and Semantic Decrease listeners respond to screen reader actions.
๐ Grid and Stack layouts: Layout Children now offers Grid and Stack next to Row and Column. Grid columns and rows can be sized, reordered by dragging, and edited together (Shift-click the track numbers), with cell guides and gap shading on the stage. Set a child's position and span in Grid Cell.
๐งฑ Shapes, text, and images in layouts: switch a shape, text, or image from Node to Layout at the top of the Inspector to make it a layout child directly, with its own width, height, and fit. No wrapper layout needed.
๐ฆ Blob data binding: add a Blob property to a view model and bind it to any file imported as a Blob asset (drop in a file Rive doesn't recognize and choose Import as Blob). Scripts can read and write its bytes.
๐จ Color channels: the color popout has separate Red, Green, Blue, and Alpha fields, and each one can be keyed and data bound on its own. Animate a fill's alpha without touching its color, or bind one channel to a number.
๐ Align to Key Object: with two or more objects selected, click one of them again to make it the Key Object (it gets a heavier outline). Align then moves the others to it while it stays put. Click it again to clear it. As requested here.
โฌ๏ธ Scroll to selection: press X to scroll the selected layer to the top of the Hierarchy and the timeline, expanding collapsed parents first. As requested here.
๐ฆด Offset on root bones: Translation Constraints on root bones can now use Offset.
๐ค Fit text with vertical trim: text set to fit its box inside a Hug layout no longer shrinks too far when vertical trim is on. Fixed in the editor and the runtimes.
๐ฑ๏ธ Layouts at 0% scale: a layout scaled to 0% with an opaque listener no longer blocks clicks on everything under it in the editor.
๐ ๏ธ Crash fix: a state machine condition on an enum property with no source selected no longer crashes the editor.
Early Access
- โจ Additive strength: with a fill, stroke, or drawable on Normal blend, the Additive strength slider (0-100%) mixes in additive blending for glows and light effects. It can be keyed and data bound. Partial strength needs the Rive Renderer; other renderers draw it at full strength.
Runtime
๐ Hidden components ignore clicks: a hidden Component or component list no longer takes clicks meant for a visible one next to it.
๐ Collapsed components and data binding: a collapsed Component no longer writes 0 into the view model properties it's bound to.
Renderer and Performance
- โก Faster rigs: moving an artboard without changing its shapes no longer rebuilds their paths (27% faster updates on one test file), and rigs with many hidden shapes advance faster.
- Sep 25, 2026
- Date parsed from source:Sep 25, 2026
- First seen by Releasebot:Sep 26, 2026
- Modified by Releasebot:Oct 6, 2026
Rive CLI 1.2.0
Rive adds web publishing for projects, letting games go live on a playable page with no hosting needed.
This release puts your project on the web. Build a game, run
Original sourcerive mygame --publish=web, and it goes live on a page anyone can open and play, with nothing to host yourself. Before,--publishonly wrote a signed.rivto disk. Keyboard and gamepad input... See more. - Sep 23, 2026
- Date parsed from source:Sep 23, 2026
- First seen by Releasebot:Sep 25, 2026
Rive Editor 0.8.5940
Rive releases editor and runtime improvements that cut GPU memory use, add Hug past bounds and richer layout controls, expand custom properties on drawable shapes and images, and polish freehand, IK, text, and scripting behavior with multiple crash and leak fixes.
๐ง Editor uses far less GPU memory
closing a file now releases its textures (each open/close cycle on an image-heavy file used to leak around 300 MB for the rest of the session), avatars and file thumbnails decode at the size they're shown instead of full resolution, and the system emoji font is mapped from disk instead of being copied into memory (180 MB on macOS) at startup. Long sessions with many files should stay fast.
๐ Hug past bounds
a layout set to Hug on either axis gets a Hug past bounds checkbox in the Layout Inspector. Turn it on to let the hugged text or shape grow past the space its container offers instead of stopping at the container's size, for example to data bind a text's real height when it's taller than the artboard. Min and max sizing still apply. Off by default, so existing files don't change.
โ๏ธ Layout Children toggle
The Layout Children section swaps its Type dropdown for a full-width Row / Column toggle, with Reverse as its own checkbox.
๐ท๏ธ Custom Properties on shapes and images
any drawable (shapes, images, text, components) now gets a Custom Properties section in the Inspector. They're keyable and bindable like custom properties on groups, and scripts can read them at draw time (see Scripting below).
๐๏ธ Freehand tool improvements
- Bucket on text recolors its fill, and on a gradient recolors the stops in place so keys and data bindings survive. Only the top fill changes, so a shadow fill beneath keeps its color, and a click on a stroke-only shape passes through to the filled shape underneath.
- Stabilize no longer ends a quick stroke in a thin straight needle. Brush and Eraser take the pressure the pen had where the ink lands, including on hairpins and self-crossing strokes.
- Holding Cmd with the Pencil borrows Shape Bend, like the Brush.
- Shape Bend works on a selected Eraser Spine row and only grabs the selected spines.
- Painting with the Brush or Pencil over a selected shape that's locked starts a new shape instead of adding to the locked one.
๐ฆด IK constraints at partial strength
An IK constraint held below full strength no longer resets the chain it touches. Two IK constraints on the same bone cross-faded by keying their strengths (a knee-direction flip, for example) now blend properly, and a rotation constraint on a bone above the tip keeps its angle. Fixed in the editor and the runtimes.
๐ Clockwise fills on bone-bound paths
a path bound to bones keeps its clockwise fill rule correct when the bones mirror it, fully or in part, and the editor and runtime now agree on it.
๐ Emoji in text
pasting or deleting an emoji in a Text object no longer crashes the editor.
๐งฌ Duplicate view model instances
the instance pickers no longer list the private instances behind stateful components and component overrides, which could let the last real instance be deleted and a private one take its place.
๐ ๏ธ Crash fixes
a file that crashed the editor on every open (a failed import during load), copying view model instances with a broken or circular reference, a component's animation using a scripted interpolator or data-bound keyframe, a Luau converter or path effect script returning the wrong type, a file import fault on Windows, and the Windows editor crashing at shutdown.
Early Access
๐ฑ๏ธ Select and copy text during playback
turn on Selectable in the Text Inspector, then while a state machine plays in the editor you can drag across Text objects (including repeated component instances) to select their text, extend with Shift, Select All, and copy it. Select the artboard background to set the highlight Selection color and corner radius for the whole file. Editor only for now; text modifiers and Ellipsis text are not selectable yet.
Scripting
๐จ Draw tagged drawables with color modulation
custom properties on a drawable are readable by scripts at draw time, for passes like emission. artboard:drawModulated(renderer, key) draws each tagged drawable with its own color modulation and no script callback, with levels multiplying down through tagged components and component lists. For full control, artboard:draw(renderer, visitor) hands each tagged drawable to your script, where artboard:propertyKey(name) reads the tag and renderer:setColorModulation(color) or renderer:modulateColor(color) sets it.
๐งฉ Scripts keep their view model properties
a view model property a script cached in init no longer reads back the type default after being set, and a listener action reached from a pointer event now initializes before it runs, so a state machine no longer appears to work only from its second play.
๐ฅ Script inputs on files pushed from the CLI
opening a CLI-pushed file no longer resets a script input typed as a view model or artboard to empty, and an input the markup didn't spell out is created at the script's own default instead of zero.
Runtime
๐งน Scripted interpolator inputs freed
loading a file whose scripted interpolator carries script inputs no longer leaks them.
Original source - September 2026
- No date parsed from source.
- First seen by Releasebot:Sep 22, 2026
Rive CLI 1.1.1
Rive adds CLI pull support, smarter scripting for targeting drawables and custom properties, and stronger push protection to prevent data loss. The release also improves focus handling, build checks, runtime stability, and ships updated CLI docs and examples.
Push and pull
- ๐ฅ rive pull brings the remote Rive file's changes into the cli project, writing scene markup plus one file per script, shader and asset. Files whose bytes already match are left untouched, and build inputs missing from the remote file are reported, never deleted. This is a first version: it replaces the local project with the remote file as-is, with no merging of local changes yet, and it explains that and asks for confirmation before it runs. Conflict resolution is coming soon; until then, work in one place at a time and keep the project in source control.
- ๐ข rive push no longer fails with "malformed .rev property" on a project that builds, verifies, inspects and previews clean. An authored fractional index attribute such as childOrder made its object claim one more property than it wrote, and the report came from an object hundreds of objects past the real one.
- ๐ Script inputs survive a push. The cli now resolves a script input's data type at export. Before, it wrote none, so the editor rebuilt every such input from scratch and lost the artboard the author picked along with the data bind path on view model inputs.
- ๐๏ธ Duplicate elements for the same object are merged by the compiler, so the editor keeps every keyframe. Markup that spells one per property is legal and exported a .riv that animated correctly, then the editor dropped all but the first on import, silently, taking its keyframes with it.
- ๐๏ธ Brush, pencil, eraser and bucket strokes survive a .rev to RML to .rev round trip. A stroked shape looked right after a push and then lost its outline on the first edit that rebuilt it.
- ๐ Guide Layers are pruned from the .riv export, matching the editor. A reference pointing into a guide now fails the export instead of building a broken file.
Scripting
- ๐จ Scripts can single out individual drawables inside an artboard. artboard:draw(renderer, visitor) hands the visitor every drawable that carries custom properties, and the visitor decides whether to call drawable:draw(renderer) and under what renderer state; everything else draws as usual and clipping still applies. Read a property with drawable:number(key), :boolean(key), :color(key), or :string(key), resolving the key once in init with artboard:propertyKey("glow").
- ๐ท๏ธ Custom properties go on a drawable directly, with no group: a shape, image, text, Component, Component list or scripted drawable takes CustomPropertyNumber, CustomPropertyBoolean, CustomPropertyColor, and the rest as children. They key and bind like any other custom property, and they are what a drawing script reads.
- ๐ Scripts reach the .riv in dependency order, so a require() resolves against a module that is already registered. A script that required another could previously be registered first and fail to find it.
Keyboard and focus
- ๐ฏ Any node can hold focus, not just a leaf. A FocusData on a group makes the group a Tab stop in its own right, visited before its children, so Tab goes group, first child, second child. canTraverse="false" makes it a pure container again.
- ๐ฉน on the artboard no longer empties the tab order. It is the documented way to host keyboard listeners, and it used to take every focusable in the file out of the order with it. canFocus and canTraverse now speak only for the node that carries them.
Build checks
- ๐ Audio the runtime cannot decode is now a build error. An AudioAsset holding Ogg, AIFF, MP4 or M4A, Matroska or WebM, or WMA fails the build naming the file and telling you to convert it to WAV, MP3 or FLAC. The runtime decodes only those three and reported a failed decode on stderr, so the build was clean and the sound simply never played. Checked on both the .riv and .rev paths, and for embedded bytes as well as a file= reference.
- ๐ Four new problem kinds from rive inspect and the LSP, declared in the markup definitions rather than hand-written: reference-wrong-type for an id that resolves to the wrong kind of thing, implied-reference-authored for a reference the nesting always sets, wrong-parent for an element nested where it cannot work, and duplicate-sibling for a value repeated within its scope.
- ๐ข --format=json reports 1-based lines and columns, matching the log and problems.log instead of sitting one below them. A problem on line 1 now has the line in its label.
- ๐๏ธ rive pointed at a built .riv or an editor .rev now names the fix instead of reporting "no rive.yaml"; a .rev gets a rive create --from-rev= suggestion.
- ๐ฌ Suggested commands quote paths correctly, including spaces, quotes and trailing backslashes on Windows. A path with no safe quoted form prints a placeholder instead of a command that breaks when pasted.
RML
- ๐ wordBreakValue on Text: breakWord (default, the previous behavior), normal (the word overflows the box), breakAll (pack every line full).
Runtime fixes
- ๐ฆด Clockwise fills render correctly on bone-bound paths. The winding is measured from the deformed path instead of the design-time flag.
- ๐ฅ Fixed a crash loading a .riv whose view model data is incomplete or refers back to itself.
- ๐ฅ Fixed a crash loading a .riv where an object fails to import and something else already holds a reference to it.
Built-in CLI docs (rive docs)
These ship with the CLI and are what agents read to author scenes; open them with rive docs.
- ๐ฆ Referenced and hosted assets are documented: where the bytes land in each export mode, how sidecars are named, and which of the two the player can render.
- ๐ค text.md documents familyName and styleName on TextStylePaint. The editor fills its Font and Weight dropdowns from them, so a style carrying only fontAssetId and a wght axis renders correctly and opens with both dropdowns blank.
- data.md gains a worked example of viewModelType="global", which the schema accepted and --data-dump reported but nothing showed being authored.
- ๐ค rive create scaffolds preview guidance into CLAUDE.md: rive . is the previewer, so start it once and leave it running, and don't preview with rive push or through a web runtime.
- ๐ Docs pass across roughly 30 pages, fixing what agents misread in the first week of use: pages that still called build errors silent, contradictions between pages (the Tests script shape, coroutines vs async / await, Feather on fills, performAction vs the deprecated perform), contributor-only and internal content removed, and gotchas.md, layout.md, and luau/protocols.md reordered worst-first.
- ๐ Fixed a broken link in the scripting API reference.
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.