Skip to main content
Bugs
11mo ago

How to post a bug

  1. Explain what's not working in detail.

  2. Tell us what browser/desktop app/OS/runtime you're using.

  3. Include a screenshot, video, code snippet, or a .rev backup file.

0 replies
20h ago

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!

1 reply
1d ago

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.

1 reply
2d ago

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?

4 replies
B
2d ago

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


3 replies
B
4d ago

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.

1 reply
5d ago

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

1 reply
A
7d ago

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)

1 reply
I
8d ago

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

1 reply
9d ago

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!

1 reply
S
9d ago

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

coaching_v4.rev
128 KB
1 reply
B
11d ago

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.

1 reply
J
12d ago

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.

1 reply
B
12d ago

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.

1 reply
B
12d ago

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.

1 reply
M
14d ago

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:

, is this the right forum for proper bug reports?

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 :(

12 replies
c
14d ago

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;
      },
    );
  }
}

1 reply
T
14d ago

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

1 reply