Skip to content

High sustained CPU usage (~70%) when rendering a Rive scene in Flutter #666

Closed

Description

@673636634

Submission checklist

  • I have confirmed the issue is present in the latest version of the rive Flutter package
  • I have searched the documentation and forums and could not find an answer
  • I have searched existing issues and this is not a duplicate

Description

Description

I am experiencing sustained CPU usage of approximately 70% while displaying a Rive garden scene in a Flutter app.

CPU usage remains around 70% after the scene has finished loading, rather than only spiking during initialization. This was observed on a physical iPhone in Release mode, not in Debug mode or on a simulator.

Test environment

  • Device: iPhone 12 (physical device)
  • Operating system: iOS 26.5
  • Build mode: Release
  • Flutter: 3.47.0 (stable)
  • Dart: 3.13.0
  • rive: 0.14.11
  • rive_native: 0.1.11
  • Rive renderer: Factory.rive

Scene setup

  • A main garden scene contains up to six flower plots.
  • Flower artboards are dynamically bound to the main scene.
  • Flower Rive files are loaded on demand.
  • Decoded flower files are reused within the garden controller, rather than decoded every frame.

Steps to reproduce

  1. Launch the app on an iPhone 12 in Release mode.
  2. Open the home screen containing the Rive garden scene.
  3. Wait for the scene and required flower assets to finish loading.
  4. Keep the garden screen visible and observe CPU usage.

Actual behavior

CPU usage remains around 70% while the garden scene is displayed.

Expected behavior

I would expect CPU usage to settle after loading, depending on the animations that remain active.

Questions

Could you help determine whether this sustained CPU usage is related to:

  • The animations or state machines in the Rive assets
  • Dynamically bound flower artboards
  • The rendering configuration
  • Our Flutter integration

Please let me know which profiling data, Rive assets, or minimal reproduction code would be most useful for investigating this issue.

Reproduction steps / code

  1. Run the Flutter app on a physical iPhone 12 running iOS 26.5 in Release mode.
  2. Open the garden screen, which renders a main Rive scene with dynamically bound flower artboards using Factory.rive.
  3. Wait for the Rive files to finish loading.
  4. Keep the garden screen visible and monitor the app's CPU usage.
  5. CPU usage remains around 70%, rather than only increasing during initial loading.

This has been observed in our application. I have not yet isolated and verified the issue in a minimal standalone reproduction.

Upload your reproduction files / stack trace

No response

Source .riv / .rev file

No response

Screenshots / video

No response

Rive Flutter package version

0.14.11

Flutter version

3.47.0 (stable)

Device

iPhone 12

OS version

iOS 26.5

Additional context

The issue was observed in Release mode on a physical device.

We use Factory.rive with rive 0.14.11 and rive_native 0.1.11. Flower files are loaded on demand and reused within the garden controller, rather than decoded every frame.

We have not yet isolated the cause or confirmed whether the same behavior occurs with Factory.flutter. Suggestions for profiling or narrowing down the issue would be appreciated.

Activity

  1. 673636634 commented on Oct 23, 2026

    @673636634
    Author
  2. added
    knownTriaged: understood and tracked on our side
    and removed
    needs-reproTriaged: waiting on a reproduction from the reporter
    on Oct 23, 2026
  3. 673636634 commented on Oct 26, 2026

    @673636634
    Author

    Thanks for reviewing the file and marking this as a known issue. Is there a recommended workaround to reduce CPU usage while keeping the animations running? Also, is a fix planned for an upcoming release?

  4. removed
    knownTriaged: understood and tracked on our side
    on Oct 26, 2026
  5. HayesGordon commented on Oct 26, 2026

    @HayesGordon
    Contributor

    @673636634 apologies, that was an automation issue to mark it as a known issue.

    This seems more like an issue with how the file is authored than a runtime issue. I've not looked at the file to understand how complex it is. Something you should keep in mind is that if you're continuously animating something, then the state machine will never settle and it will continue to advance + draw. 70% is really high though.

    Unfortunately, I can't investigate the file for you. The open source repository is only here to handle reproducible issues and not to resolve per-file level setup. We have a community support channel that might be able to assist.

    I would also STRONGLY encourage you to try out the new Rive CLI: https://rive.app/agents

    With this you can profile your file and try to identify what could be setup incorrectly with the file or what can be improved.

    Some things worth looking into on your side:

    • Looping animations. Any looping animation that's playing (in the main artboard or in any nested artboard) keeps the state machine advancing every frame. If the motion is ambient, consider letting it come to rest after a while, or only starting it on interaction.
    • Nested artboards. Each nested artboard runs its own state machine, so a scene with many nested artboards that each loop adds up quickly. Check how many are animating at the same time while the screen is idle.
    • Blend states. A layer sitting in a blend state currently keeps the state machine advancing even when the blend value isn't changing. If you use blend states for something that's static most of the time, try transitioning out of them when idle.
    • Offscreen content. Make sure the Rive widget isn't kept mounted while it's not visible, for example behind another route or in a hidden tab.
    • Upgrade. From rive: 0.15.0-dev.4, Rive skips redrawing frames where nothing on the artboard changed. That only helps once parts of the scene actually come to rest, but it's worth having.

    If you can narrow it down to a minimal file that shows unexpected CPU usage for what it's animating, we're happy to dig into that as a bug for the Flutter runtime.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions