Skip to content
CAI
Software that uses CAICheck a score

felixblaschke/simple_animations

69.0

Adequate · 19 September 2026

2.7k

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 animation library that provides declarative widgets and controller extensions for managing complex animation sequences. It enables developers to define, play, loop, and mirror animations using a modular builder API and a modern MovieTween engine. The package also includes a visual debugging overlay to inspect and control animation timelines during development.

How it got here

2019 — API modernization and Flutter 3.44 alignment

6 changes.

The project underwent a significant API restructuring, replacing the legacy InstantAnimation widget with modular builder widgets and controller extensions to simplify animation control. This release aligned the package with Flutter 3.44.0, updating dependencies and removing legacy Android plugin registration mechanisms. Documentation was also enhanced by converting the example app into a structured reference guide with generated code snippets.

2022–2026 — Animation control and debugging features

9 changes.

This period focused on enhancing the library's animation capabilities by introducing new builder widgets with explicit control and delay support, alongside a new developer tools overlay for debugging. The underlying MovieTween API was restructured for version 5, and the AnimationMixin was updated to respect TickerMode for better performance. Comprehensive test suites were added to verify the behavior of these new features and existing components.

Features

Introduction of Animation Developer Tools overlay

A new \AnimationDeveloperTools\ widget has been added to the library, providing a visual overlay for debugging custom animations. This tool allows developers to play, pause, and scrub through animation timelines, adjust playback speed, and define specific value bounds (lower and upper) for animation ranges. It is designed to be integrated into applications by wrapping existing widgets, with a toolbar that can be positioned at the top or bottom of the screen or hidden entirely.

_lib/animation\_developer\tools · high confidence

New animation builder widgets with control and delay support

The \lib/animation\_builder\ package now includes \CustomAnimationBuilder\, \PlayAnimationBuilder\, \LoopAnimationBuilder\, and \MirrorAnimationBuilder\. These widgets wrap the \simple\_animations\ library to provide declarative animation control. \CustomAnimationBuilder\ introduces a \Control\ enum (play, stop, loop, mirror, etc.) and a \delay\ parameter to manage animation timing and state. The specialized builders (\Play\, \Loop\, \Mirror\) expose simplified APIs for common animation patterns while leveraging the underlying control logic.

_lib/animation\builder · high confidence

Behavioural changes

AnimationMixin now respects TickerMode for background animations

The AnimationMixin implementation has been updated to integrate with Flutter's TickerMode API. This ensures that animations managed by the mixin are automatically muted or paused when the widget tree is hidden (e.g., in background tabs or off-screen), improving performance and battery life. The change involves wiring the mixin to listen to TickerMode notifications and applying the muted/forceFrames state to all created tickers.

_lib/animation\mixin · high confidence

Example app updated to Flutter 3.24 project structure

The example app in example/sa\_flutter\_app has been regenerated to align with the default structure of Flutter 3.24. This update introduces several platform-specific changes: on Android, the MainActivity now extends FlutterActivity and the AndroidManifest.xml includes the required \<queries\> block for text processing; on iOS, the AppDelegate now implements FlutterImplicitEngineDelegate to support the implicit engine, and the project uses the modern SceneDelegate pattern. Additionally, the Dart analysis options have been updated to include the recommended flutter\_lints package, and the Gradle wrapper has been upgraded to version 9.1.0.

_example/sa\_flutter\app · high confidence

Example documentation rebuilt with generated code snippets

The example application's main entry point (main.dart) has been removed and replaced by a new, comprehensive documentation file (example.md) that uses the readme\_helper package to generate and embed code snippets. This change shifts the example from a single runnable app to a structured reference guide covering various animation builders, tweens, and mixins, providing users with copy-pasteable code examples for different animation patterns.

example · high confidence

MovieTween library restructured for Version 5 with new API

The MovieTween library has been updated to Version 5, introducing a new API for defining sequential or parallel animations. The \MovieTween\ class now uses a builder pattern with \scene()\ and \tween()\ methods to define animation properties, replacing the previous constructor-based approach. The library no longer depends on the \package:collection\ package, relying instead on standard Dart and Flutter APIs for sorting and list operations. This change affects how users define and configure multi-property animations, requiring updates to existing code that relied on the old constructor signature.

_lib/movie\tween · high confidence

Refactored animation API with new controller extensions and builder widgets

The library has restructured its public API by removing the legacy \InstantAnimation\ widget and introducing \AnimationControllerExtension\ methods (\play\, \playReverse\, \loop\, \mirror\) for easier animation control. The exports now include a suite of new builder widgets (\CustomAnimationBuilder\, \LoopAnimationBuilder\, \MirrorAnimationBuilder\, \PlayAnimationBuilder\), an \AnimationMixin\, developer tools, and \MovieTween\, replacing the previous single-widget approach with a more modular set of components.

lib · high confidence

Removal of legacy Flutter plugin registrant and local SDK paths

The Android module no longer includes the auto-generated \GeneratedPluginRegistrant.java\ class or the \local.properties\ file containing hardcoded local SDK paths. This indicates a shift away from the older Flutter plugin registration mechanism (likely moving to the new V2 embedding or direct plugin initialization), which simplifies the build configuration by removing machine-specific paths and the manual plugin registration stub.

android · medium confidence

Version 5.3.0 release with Flutter 3.44.0 alignment and TickerMode fix

This release updates the package to align with the latest Flutter baseline, requiring Dart SDK ^3.12.0, Flutter \>=3.44.0, and flutter\_lints ^6.0.0. It fixes a compatibility issue with Flutter's updated TickerMode API in AnimationMixin and adds regression tests to ensure correct behavior. The example app dependencies have been updated to match current Flutter project defaults, and the README has been improved.

(repo-wide) · high confidence

Test coverage

Added tests for AnimationMixin controller modes and TickerMode integration; Added unit tests for MovieTween timeline and property behaviors; Added widget tests for AnimationDeveloperTools; Added widget tests for animation builders and controller extensions; Removed test for InstantAnimation widget.

Dependencies

Updated example app to modern Flutter/Android templates and upgraded main package dependencies

The example app (sa\_flutter\_app) has been regenerated to use the latest Flutter project structure, including Kotlin DSL build scripts (build.gradle.kts), Android Gradle plugin 9.0.1, and Kotlin 2.3.20, while the main simple\_animations package has been updated to version 5.3.0 with a Dart SDK constraint of ^3.12.0 and Flutter \>=3.44.0. Additionally, the linter dependency flutter\_lints has been upgraded to version 6.0.0 in the main package and 5.0.0 in the example, and the pub.dev URL scheme has been standardized from pub.dartlang.org to pub.dev across lockfiles.

(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 69.

Lenses

  • Code Health 96
  • Architecture 100
  • Maturity 55
  • Readiness 62
  • Security 98
  • Domain Modelling 100

Changes since last survey

  • 261 commits — 225 feature/other, 36 fixes

By area

  • (root) — 126 commits
  • tool/templates — 15 commits
  • lib/simple_animations — 12 commits
  • lib/liquid — 10 commits
  • example/sa_flutter_app — 7 commits
  • (repo) — 6 commits
  • example/lib — 6 commits
  • simple_animations/example — 6 commits
  • lib/developer_tools — 4 commits
  • lib/simple_animations.dart — 4 commits
  • lib/timeline_tween — 4 commits
  • sa_liquid/lib — 4 commits
  • doc/no_supercharged — 3 commits
  • example/ios — 3 commits
  • lib/stateless_animation — 3 commits
  • test/timeline_tween — 3 commits
  • doc/timeline_tween.md — 2 commits
  • documentation/ARTICLES.md — 2 commits
  • sa_anicoto/CHANGELOG.md — 2 commits
  • sa_liquid/CHANGELOG.md — 2 commits

Notable commits

  • fix: Add AnimationMixin compatibility with TickerMode API and regression test
  • fix: Fix deprecated withOpacity() usage
  • fix: Fix href in readme
  • fix: Fix linter issues in example project
  • fix: Fix linter issues in package project
  • fix: Fix pubspec.yml format
  • fix: Fix test with curve (#5)
  • fix: Path fixes
  • fix: bugfix: curve properties not applied to track item (#3)
  • fix: example app: fixed crash when calling setState() after widget disposed
  • fix: fix analyzer issues
  • fix: fix atlas math to closer match drawCircle; clarify docs (#68)
  • fix: fix author field of pubspec.yaml
  • fix: fix bug in curve declaration
  • fix: fix doc reference to deprecated class
  • fix: fix example doc
  • fix: fix exception when passing 0 as effective blur value into MaskFilter
  • fix: fix homepage url / update dependencies
  • fix: fix import
  • fix: fix link in readme
  • …and 241 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

felixblaschke/simple_animations 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 ea4804c8d98f1e1c4e92093fe0b03f0aa3e2a109 — 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.