Skip to content
CAI
Software that uses CAICheck a score

rive-app/rive-flutter

71.5

Strong · 19 September 2026

7.2k

lines of production code

Dart

with C++

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Flutter package that integrates the Rive 2 runtime to render interactive animations and state machines within Flutter applications. It provides widgets for displaying Rive files, supports shared texture rendering for performance optimization, and offers features like data binding, scripting, and accessibility semantics. The package includes comprehensive examples and tests across multiple platforms to demonstrate its capabilities.

How it got here

2019–2020 — Rive 2 runtime migration and example app

10 changes.

The project migrated from the legacy Flare-based implementation to the new rive\_native backend, introducing updated public APIs and a compatibility layer for gradual adoption. This period also involved establishing comprehensive test coverage and scaffolding a multi-platform example application to demonstrate the new runtime's capabilities across Android, iOS, macOS, and Web.

2021–2026 — Rive native integration and performance

11 changes.

The project migrated from a Lottie-based implementation to a native Rive backend, introducing new core models, controllers, and error handling. Significant performance improvements were achieved through a shared texture rendering pipeline, enabling efficient multi-animation rendering and high-DPI support. The period also expanded platform coverage with initial Windows support and comprehensive testing infrastructure for both unit and integration scenarios.

Features

Added macOS example app scaffolding

The macOS platform support for the example application has been added, providing a complete Xcode project structure. This includes the native Swift entry points (AppDelegate and MainFlutterWindow), the Flutter engine integration via xcconfig files, and the necessary macOS entitlements for sandboxing and network access. Users can now build and run the example app on macOS using the generated Xcode workspace.

example/macos · high confidence

Automated pubspec update for local rive\_native dependency

A new shell script, update\_rive\_native\_to\_path.sh, has been added to the scripts directory. This tool automatically modifies the pubspec.yaml file to switch the rive\_native dependency from a versioned reference to a local path dependency (../rive\_native), handling both inline and existing path formats. This facilitates local development and testing workflows by ensuring the project uses the local version of the native runtime.

scripts · high confidence

Initial Windows platform support for the example app

The example application now includes a complete Windows runner, enabling users to build and run the Flutter app on Windows via Visual Studio or the command line. This change adds the necessary CMake build configuration, a Win32 window abstraction with high-DPI awareness, and the C++ entry point that initializes the Flutter engine and registers plugins.

example/windows · high confidence

Initial checkin of Rive 2 runtime example app

The Android and web example applications have been added to the repository, providing a complete, runnable Flutter project for the Rive 2 runtime. The Android configuration includes a new MainActivity extending FlutterActivity, updated AndroidManifest.xml files for debug, profile, and main builds, and Gradle wrapper properties pointing to Gradle 8.11.1. The web entry point (index.html) and manifest.json are also included, with the HTML file containing specific instrumentation scripts to monitor canvas transfer states, rendering activity, and WebGL object lifecycles for debugging purposes.

example/android · high confidence

Initial iOS example project scaffolding

Adds the complete iOS native project structure for the Flutter example app, including the Xcode workspace, project configuration, and build settings. This includes the AppDelegate implementing the implicit engine delegate, standard launch and main storyboards, asset catalogs for icons and launch images, and the necessary Info.plist and xcconfig files to support CocoaPods integration and Flutter framework embedding.

example/ios · high confidence

Initial setup of the Flutter example application

The example directory has been initialized with the standard structure for a Flutter application, including configuration files like .gitignore, .metadata, analysis\_options.yaml, and a README.md. This provides a standalone, runnable demo app that showcases the Rive Flutter package, allowing users to easily clone, build, and run the example to see the library in action.

example · high confidence

Introduce shared texture rendering for improved Rive animation performance

This change introduces a new shared texture rendering pipeline for Rive animations using the native \Factory.rive\ backend. Users can now wrap their Rive widgets in a \RivePanel\ or explicitly provide a \SharedRenderTexture\ to draw multiple animations into a single native texture, which significantly improves performance and avoids WebGL context limits on the web. The implementation includes a centralized ticker to manage animation frames efficiently across all painters, ensuring the animation loop stops when all animations are settled. Additionally, the \RiveWidget\ now supports configurable \drawOrder\ for stacking within the shared texture and exposes \RiveSemantics\ for accessibility support.

lib/src/widgets · high confidence

New Centaur Game example using shared render textures

An advanced example demonstrating a playable centaur game built with Flutter and Rive. The implementation uses a shared render texture (RiveNative instance) to render the Rive artboards directly into a Flutter widget, allowing for high-performance animation rendering. The example includes game logic for character movement, aiming, and firing arrows at apples, showcasing how to integrate Rive state machines and triggers within a custom game loop.

example/lib/advanced · high confidence

New Flutter example applications for runtime features

The example application now includes a comprehensive suite of new demonstration files covering advanced runtime capabilities. These include data binding examples for properties, artboards, images, and lists; a scripting demo featuring Blinko and a Centaur Game; and examples for handling events, inputs, and multi-touch interactions. Additional demos illustrate hit-test behavior, network asset loading, and various out-of-band asset strategies (dynamic, cached, and audio).

example/lib/examples · high confidence

New Rive example application with dark theme and renderer selection

The example application has been rewritten to include a dedicated dark theme (using specific app bar, background, and primary colors) and a static toggle to switch between the Rive Renderer and the Flutter Renderer. The app now organizes examples into sections such as Getting Started, Rive Features (including scripting, data binding, and semantics), Asset Loading, and Advanced Painters, providing a structured demo of the library's capabilities.

example/lib · high confidence

New RiveWidgetController for simplified Rive integration

A new RiveWidgetController class has been introduced to provide a more convenient API for building Rive widgets. This controller handles artboard and state machine selection, automatically binds view model instances at construction, and manages the painting lifecycle, allowing developers to use RiveWidget and RiveWidgetBuilder with less boilerplate.

lib/src/painters · high confidence

Behavioural changes

27 commits (0 fixes) modifying example/assets

A change to existing behaviour in example/assets — 27 commits, 61 files.

example/assets · medium confidence · unverified

Introduce Rive native integration with new model and error types

The library now uses the \rive\_native\ backend instead of the previous Lottie-based implementation. This change introduces a new set of core models and utilities in \lib/src\, including a \FileLoader\ for loading Rive files from assets, URLs, or files, and sealed classes for selecting artboards (\ArtboardSelector\) and state machines (\StateMachineSelector\) by default, name, or index. It also adds a \DataBind\ system for managing view model instance bindings (auto, by instance, by index, by name, or empty) and defines specific exception classes (\RiveException\, \RiveFileLoaderException\, etc.) to handle loading and binding errors.

lib/src, lib/src/models · high confidence

Migration to rive\_native and deprecation of legacy APIs

The library has replaced its underlying implementation with rive\_native, removing the previous Flare-based Rive widget and exposing a new set of public APIs (including RiveWidget, RiveBuilder, and RivePanel) while hiding internal implementation details. To support existing codebases, a new legacy.dart compatibility layer has been added, providing deprecated extensions for removed members like RiveWidgetController.dataBind and RiveLoaded.viewModelInstance, allowing users to migrate gradually with compiler warnings.

lib · high confidence

Rive Flutter runtime v0.15.0-dev.2 release

This release updates the Flutter runtime to version 0.15.0-dev.2, bumping the underlying \rive\_native\ dependency to 0.2.0-dev.2. It introduces \RiveWidget.semantics\ for accessibility support and adds global view model binding capabilities to \RiveWidgetController\. The release also includes several fixes, such as resolving audio resume issues on iOS backgrounding, restoring the deferred render worker on Emscripten 4 for Web, and preventing canvas reuse artifacts. Additionally, the project metadata has been updated to reflect a plugin project type with specific migration configurations.

(repo-wide) · high confidence

Test coverage

Added basic widget test for the example app; Added headless testing infrastructure and utilities for Rive golden tests; Added integration tests for RiveWidget controller swapping and deferred rendering; Added test assets for Rive animation testing; Added test coverage for Rive Flutter integration.

Dependencies

Rive Flutter runtime upgraded to 0.15.0-dev.2 with native backend and modern SDK requirements

The Rive Flutter package has been updated to version 0.15.0-dev.2, replacing the legacy \flare\_flutter\ dependency with the new \rive\_native\ (0.2.0-dev.2) backend. This change requires a minimum Dart SDK of 3.8.0 and Flutter 3.32.0, and adds \flutter\_web\_plugins\ to support web platforms. The example app has been migrated to use Kotlin DSL for its Android build configuration and updated to use \rive\_native\ via CocoaPods on iOS and macOS.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 71.

Lenses

  • Code Health 97
  • Architecture 99
  • Maturity 61
  • Readiness 63
  • Security 95
  • Domain Modelling 100

Changes since last survey

  • 300 commits — 234 feature/other, 66 fixes

By area

  • (root) — 166 commits
  • lib/src — 96 commits
  • example/lib — 16 commits
  • test/goldens — 9 commits
  • example/assets — 5 commits
  • example/ios — 3 commits
  • .github/ISSUE_TEMPLATE — 1 commit
  • .github/scripts — 1 commit
  • .github/workflows — 1 commit
  • example/macos — 1 commit
  • example/windows — 1 commit

Notable commits

  • fix: Bump Flutter runtime version and changelog, small analyze fix
  • fix: Code generator fixes alternative
  • fix: Event fixes
  • fix: Fix WASM audio MP3
  • fix: Fix audio overlap
  • fix: Fix diacritics
  • fix: Fix editor only in AbsoluteLayoutComponent and gen core runtimes
  • fix: Fix event listening for RuntimeArtboard
  • fix: Fix flutter validate() problem with drawable layouts
  • fix: Fix follow path 6070
  • fix: Fix for FollowPathConstraint position at distance multiples of 100%
  • fix: Fix incorrect default layout flags value
  • fix: Fix issue with timeline events on first frame
  • fix: Fix loading init text in Flutter runtime.
  • fix: Fix missing API in runtime mounted artboard
  • fix: Fix rive common size annotation
  • fix: Fix runtime image sizes and run core generator.
  • fix: Fix transform constraint trying to transform to shape bounds.
  • fix: Fix web editor
  • fix: Flutter Android example project fix
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

rive-app/rive-flutter was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 64dd103ca558be7241b49a5fe36a307ef3618035 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.