How to post a bug
Explain what's not working in detail.
Tell us what browser/desktop app/OS/runtime you're using.
Include a screenshot, video, code snippet, or a .rev backup file.
Revision History causes Rive to crash down
Hi, from the last update, on both windows desktop app and web app -
When trying to click on any of the Revision History options, Rive is crashing down.
It's not occurring for all projects. I can't tell for sure but the things that I might have done differently for some of these projects are: I copied and pasted a new project inside a folder; I exported the files as .riv and .rev; I opened a .rev file I've received.
I'll add more info if I find anything else.
Thanks!
Selecting a target in a listener causes it to deselect
This is a little thing but quite frustrating. So whenever I select a Listening to look for a target, when the target is selected, the listener is deselected, so I need to click on it again. Makes no sense.
audio in a nested art board is louder than its source art board?
As the title explains i have a project where i have nested three art boards into a main project art board. The audio is at the desired volume level in the source art boards. The volume level has been set in the asset panel for audio clip "Cartoon, Jump, Spring, Boing". The volume level is set to 5%. The issue is that the nested art boards sound like they are back to 100% in the main art board they have been nested in. Not sure why this is the case? Why isn't the volume set in the source art board that are nested not getting passed to the main art board. Is this a bug or a limitation in the current version of Rive?
Latest Rive Unity package causes compile errors
Using this Rive Unity package, I get a bunch of errors:
https://github.com/rive-app/rive-unity.git?path=package#v0.3.1-canary.36
This package works fine:
https://github.com/rive-app/rive-unity.git?path=package#v0.2.2-canary.25
Layout re-order bug
If you have a row with a shape layout and a text layout, it is not possible to re-order it by dragging the bottom layout to the top location in the tree. However, it is possible to drag the top layout to the bottom location in the tree.
Artboard Size Inconsistencies
When comparing the size of an artboard and one that uses layout features, the two are close in size but they have different heights listed in the properties panel. The taller one according to the properties is the left button in the screenshot. The right is the shorter one, pasted from .svg code in Figma.
I have a row layout in the taller artboard. There is also an n-slice
Crash on Android 15 Devices with 16KB Page Size: Possible Issue with Page Size Update
Encountering the following crash on a device with a 16KB page size running Android 15.
It seems to be related to the 16KB page size update: Page Size Changes - Android Developer Guide
java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in ".../app_lib/librive-android.so" (new hash type from the future?)
at java.lang.Runtime.load0(Runtime.java:933) at java.lang.System.load(System.java:1729)
at app.rive.runtime.kotlin.core.Rive.init(Rive.kt:410)
Freeze not working with Nested Artboards
When trying to adjust the anchor point for a nested artboard, it behaves as usual as not as intended where it is possible to move the anchor.
Here is a video with a screen recording on the issue.
https://drive.google.com/file/d/1YptILZiYCc0wxW9aETQKBtIDXNeIUFvj/view?usp=drive_link
Using Google Chrome (131.0.6778.109) on MacOS
Rive editor/site bad performance on Linux machine
I've created this thread to help people who may face the same issues as I did. So, native Rive editor is not a thing for Linux (at least for now), so we have to deal with 'browser edition'. While everything is more or less fine on my PC (Linux Mint), on my new laptop Rive works terribly with 99% of browsers. And that 1% is Google Chrome. Not chromium-based or even chromium, but pure proprietary Chrome. I'll attach the video (2x slowed) of comparing same rive file in Chrome (left) and Chromium (right). (My display is 120hz fyi).
Laptop Specs:
If you need any additional information, feel free to ask!
Corrupt riv files in 8th Wall and Unity
Runtimes: Web (JS) and Unity
Rive app: desktop (and browser too)
Hello, when editing a file in a shared workspace (free plan) our files have started to load the error screen to relaunch the app. This was happening when we tried to play any timelines or state machines to check each other's work (only 2 designers)
Then our files (shared or personal) repeatedly started to give the developers issues when they tried to integrate them. Previously it worked to copy an artboard into a new file to keep the state machine and timelines, but these files would also become useless to the developers. In the end we had to redo a file from scratch and also ended up using a V1 one riv in our final app because we couldn't use the updated one (all I changed was a colour and then it got corrupted) and our timeline doesn't allow us to redo it.
This issue happened for web handover to web (js) for 8th Wall as well as Unity.
How can we avoid files becoming corrupted or show 'had to patch file because of bad data' notification?
Are we copying artboards too many times? We rely on super rapid iteration and constant production testing. I attached the rev and riv of one of the files (this one didn't work in JS).
Thanks in advance, would love to see a solution since everyone is getting annoyed with me and I'm trying to introduce Rive into our handover workflow 🙈. Attached is one of the rev file that we couldn't use at all anymore. The error is the same as reported here: https://rive.app/community/forums/support/fsnLLkXUaA62/developer-having-trouble-implementing-rive-file---says-file-may-be-corrupt/ftRqwdjTXlue?post=1
I posted this the first time here: https://rive.app/community/forums/bugs/fsLjspgTHYcR/layout-copypaste/ftFUkEI0f22S
Layout Display (show/hide) bug
The new keyable Display feature (show/hide) for a layout does not turn off text runs properly. Instead, it moves text to the upper left corner.
To reproduce:
-Open the attached rev file.
-Select the State machine and click Play.
-Notice squashed text appearing on the top left corner of the artboard, caused by the Display show/hide feature.
New Layout Hide doesn't hide all children and sometimes doesn't show them
Getting weird results trying to hide layouts on button clicks. I was initially using a solo until switching to layouts since they didn't seem to support that. I then switched to opacity and scale which worked but was really messy. I tried using the new ability to toggle hide in the animation which somewhat works, but the text and images seem to get garbled up in the corner sometimes
Any ideas?
Layout in group not working
Not sure if it is a bug or a feature, but when selecting items in a group, SHIF+L or right click Wrap in->Layout is not working.
Changing event type removes usages throughout file
I created a click event I'm using for the UI in my game on several buttons. I just got the sound from my sound guy. After I change the event type to Audio and set the sound effect, all instances in the listeners remove the reference to the event. I have to go back through and re-assign all the usages in the file.
Not sure if this is a bug or intended behavior but there isn't a reason I should have to re-assign the event if I change the type since it still behaves in the same way if it's General or Audio.
Mobile site not working
Creating a thread on this site on mobile is not possible. Tested on Android using Edge. Pressing the thread button (icon with pencil) does nothing.
Revision history is incredibly slow
For large files (not in size but the amount of objects in the hierarchy), clicking on a revision history is incredibly slow. I have a real download speed of 350 Mbps yet it takes a few minutes to load each revision history.
Another problem is that there is no loading progress bar. Because of this, it is not clear when the revision is finished loading. The effect of this is that you click on one revision, not what you are looking for, click on the next one, not the one you are looking for, click on the next one, etc, without any idea that it actually was not finished loading and somewhere you clicked on the revision you were looking for but due to a "finished loading" notification, you don't know what revision you are actually looking at.
This is a major UI issue and should be fixed.
PERFORMANCE degrades NON-LINEARLY as artboard.draw() calls increase
Hardware: Firefox 133.0, NVIDIA 4070 SUPER, Intel i7-13700KF, 165hz monitor
Rive Package: @rive-app/webgl-advanced 2.21.6
Bug Source: https://github.com/RiveDegradation/RiveDegradation.github.io
Interactive Demo: https://rivedegradation.github.io/
Expected Behaviour:
Rendering an artboard X times should decrease performance linearly as x increases.
2 x artboard.draw() calls -> 165 FPS
3 x artboard.draw() calls -> 164 FPS
4 x artboard.draw() calls -> 163 FPS
.. etc ...
Actual Behaviour:
When using Firefox, performance degrades non-linearly when rendering an artboard multiple times.
Specifically:
2 x artboard.draw() calls -> 165 FPS
3 x artboard.draw() calls -> 165 FPS (now with regular frame time spikes)
4 x artboard.draw() calls -> 60 FPS 🚨🚨🚨🚨
Clearly a bug since 25 x artboard.draw() calls take the same as 4X!!! It's a quantic jump :)
Hopes and Dreams:
I'm still waiting on my previous one. I'm getting a little desperate as we're supposed to use Rive in production and ship a product by the beginning of Jan, but these performance bugs are killing us.
I understand you get a lot of bug reports from people not knowing how to use your code, but these are quite serious :(
Unable to fire triggers in rive_native
When using the rive_native package here https://pub.dev/documentation/rive_native/latest/
The docs start that setting state state inputs is supported (we are running MacOS).
Here is our code to test it out - all inputs (triggers/booleans/numbers) seem to not be working when set in code - any suggestions? Through print logs I can see the objects are found but next step of fire() / setting value don't seem to do anything. The inputs are all created at the top level i.e. not nested
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:rive_native/rive_native.dart'; bool isRiveRender = true; class RivePlayer extends StatefulWidget { const RivePlayer({ super.key, required this.asset, required this.stateMachineName, this.artboardName, this.hitTestBehavior = RiveHitTestBehavior.opaque, this.cursor = MouseCursor.defer, this.fit = Fit.contain, this.alignment = Alignment.center, this.layoutScaleFactor = 1.0, this.withStateMachine, this.onArtboardInitialized, }); final String asset; final String? stateMachineName; final String? artboardName; final RiveHitTestBehavior hitTestBehavior; final MouseCursor cursor; final Fit fit; final Alignment alignment; final double layoutScaleFactor; final void Function(Artboard)? onArtboardInitialized; // New callback final void Function(StateMachine)? withStateMachine; @override State<RivePlayer> createState() => _RivePlayerState(); } class _RivePlayerState extends State<RivePlayer> { File? riveFile; late Artboard artboard; late StateMachinePainter stateMachinePainter; @override void initState() { super.initState(); init(); } Future<File?> _loadFile() async { final bytes = await rootBundle.load(widget.asset); return File.decode(bytes.buffer.asUint8List(), riveFactory: isRiveRender ? Factory.rive : Factory.flutter); } Future<void> init() async { riveFile = await _loadFile(); if (widget.artboardName != null) { artboard = riveFile!.artboard(widget.artboardName!)!; } else { artboard = riveFile!.artboardAt(0)!; } stateMachinePainter = RivePainter.stateMachine( widget.stateMachineName, withStateMachine: widget.withStateMachine, ) ..hitTestBehavior = widget.hitTestBehavior ..cursor = widget.cursor ..fit = widget.fit ..alignment = widget.alignment ..layoutScaleFactor = widget.layoutScaleFactor; widget.onArtboardInitialized?.call(artboard); setState(() {}); } @override void didUpdateWidget(covariant RivePlayer oldWidget) { super.didUpdateWidget(oldWidget); if (widget.hitTestBehavior != oldWidget.hitTestBehavior) { stateMachinePainter.hitTestBehavior = widget.hitTestBehavior; } if (widget.cursor != oldWidget.cursor) { stateMachinePainter.cursor = widget.cursor; } if (widget.fit != oldWidget.fit) { stateMachinePainter.fit = widget.fit; } if (widget.alignment != oldWidget.alignment) { stateMachinePainter.alignment = widget.alignment; } if (widget.layoutScaleFactor != oldWidget.layoutScaleFactor) { stateMachinePainter.layoutScaleFactor = widget.layoutScaleFactor; } } @override Widget build(BuildContext context) { return riveFile != null ? RiveArtboardWidget( artboard: artboard, painter: stateMachinePainter, ) : const SizedBox(); } } class ExampleBasic extends StatelessWidget { const ExampleBasic({super.key}); @override Widget build(BuildContext context) { return RivePlayer( asset: "assets/slot_boy.riv", stateMachineName: "State Machine 1", artboardName: "Motherboard", onArtboardInitialized: (Artboard artboard) { StateMachine? state_machine = artboard.stateMachine("State Machine 1"); // flutter: state machine: Instance of 'FFIStateMachine' print('state machine: $state_machine'); // triggers - these all exist but fire doesn't work // flutter: trigger: Instance of 'FFITriggerInput' // flutter: trigger2: Instance of 'FFITriggerInput' // flutter: trigger3: Instance of 'FFITriggerInput' TriggerInput? trigger = state_machine!.trigger("Shuffle 1"); print('trigger: $trigger'); trigger!.fire(); TriggerInput? trigger2 = state_machine!.trigger("Shuffle 2"); print('trigger2: $trigger2'); trigger2!.fire(); TriggerInput? trigger3 = state_machine!.trigger("Scale"); print('trigger3: $trigger3'); trigger3!.fire(); // bool/number inputs - these also exist but fail to animated when set to a value that should trigger // flutter: booleaninput: Instance of 'FFIBooleanInput' // flutter: numberinput: Instance of 'FFINumberInput' BooleanInput? b = state_machine!.boolean("Boolean 1"); print('booleaninput: $b'); b!.value = true; NumberInput? n = state_machine!.number("Number 1"); print('numberinput: $n'); n!.value = 3; }, ); } }
Rive has a issue with responsive in Webflow
when Webflow is responsive. The height is automatically scaled to infinity by the Rive element. Does anyone know how to solve it?
Here is video
https://share.birdie.so/Rq5f2VnQ