Skip to content
CAI
Software that uses CAICheck a score

Stacked-Org/stacked

58.3

Adequate · 19 September 2026

12.2k

lines of production code

Dart

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Flutter framework library that provides a structured architecture for building applications using ViewModels, services, and a code-generation-based router. It manages reactive state, asynchronous data handling, and dependency injection while offering platform-aware navigation and UI components like skeleton loaders. The project also includes example applications and comprehensive test coverage to demonstrate and validate these core capabilities.

How it got here

2020 — Stacked v3.5.0 migration and release

4 changes.

The project underwent a major architectural migration from a legacy provider-based system to the Stacked framework v3.5.0, introducing breaking changes to ViewModels and UI structures. This period also involved modernizing the dependency stack, automating the release process with semantic-release, and establishing a comprehensive test suite for the new core components.

2023–2025 — Stacked framework modernization and code generation

11 changes.

This period focused on modernizing the Stacked framework by introducing a new code generation system for routing and dependency injection, alongside a refactored ViewModel architecture aligned with the Stacked and Provider patterns. The work included building a new reactive router with platform-aware history support, adding specialized asynchronous view models, and updating example applications to demonstrate these new declarative and generated patterns.

Features

Add new Flutter example projects with platform scaffolding and integration tests

This change introduces two new example applications, \navigator\_example\ and \router\_example\, providing complete project scaffolding for both Android and iOS. The additions include standard platform-specific configuration files (such as \AndroidManifest.xml\, \Info.plist\, and Xcode project files), Gradle wrapper setup, and Flutter-specific assets like launch screens and app icons. Additionally, each example is equipped with a comprehensive integration test suite (\integration\_test/app\_test.dart\) that validates core application flows, including navigation, state management, and UI interactions, ensuring the examples function correctly out of the box.

_example, example/router\example/android · high confidence

Added SkeletonLoader widget with configurable corner radius

A new SkeletonLoader widget has been introduced in the UI view models to display a shimmer animation over child content while loading. This component allows users to customize the animation duration, start and end colors, and now includes a configurable corner radius (defaulting to 15.0) to match the visual style of the underlying content.

_lib/src/view\models/ui · high confidence

Introduces new router annotation and reactive value infrastructure

This change adds the core implementation files for the code generation router annotations (including \ExtendedNavigator\, \RouteDataV1\, \RouteMatcher\, and transition builders) and establishes the foundational reactive value system with \ReactiveValue\, \StoredValue\, \ProxyValue\, and \ReactiveList\. These additions provide the underlying classes and utilities required for the framework's navigation and state management features.

_lib/src/code\generation · high confidence

New FutureViewModel, StreamViewModel, and MultipleFutureViewModel data models

The library now provides dedicated abstract view models for handling asynchronous data sources. FutureViewModel and StreamViewModel allow a single future or stream to be managed with lifecycle hooks (onData, onError, onSubscribed) and include stack traces in their onError callbacks for better debugging. MultipleFutureViewModel enables running and tracking multiple concurrent futures, exposing an onAllFuturesCompleted callback when all operations finish. These classes simplify the pattern of fetching and managing async data in Stacked applications.

_lib/src/view\_models/data\models · high confidence

Behavioural changes

Introduce new Stacked Router architecture with platform-aware navigation history

The router module has been restructured with a new core implementation in \lib/src/router\. This update introduces a \NavigationHistory\ abstraction that provides native browser history support (back/forward) on Web platforms while offering a stubbed implementation for other platforms. It also adds a \RouterObserver\ and \RouteAware\ mixin to allow widgets to react to route lifecycle changes, convenience extension methods on \BuildContext\ for navigation, and a \Parameters\ class for robust parsing of route path and query parameters.

lib/src/router · high confidence

Introduction of ListenableServiceMixin and deprecation of ReactiveServiceMixin

A new ListenableServiceMixin has been added to lib/src/mixins that implements the standard Flutter Listenable interface, allowing services to integrate seamlessly with Flutter's reactive UI patterns. The existing ReactiveServiceMixin (moved from lib/\_reactive\_service\_mixin.dart) is now deprecated in favor of the new mixin. Both mixins provide a listenToReactiveValues method that supports listening to ChangeNotifier, ReactiveValue, and ReactiveList instances, but the new mixin standardizes listener management via addListener, removeListener, and notifyListeners methods.

lib/src/mixins · high confidence

The navigator example has been completely rewritten to demonstrate modern Stacked patterns. The app now uses code generation for dependency injection, routing, and UI setup, replacing manual wiring with generated files for the locator, router, dialogs, and bottom sheets. Navigation is handled via the StackedRouter with named routes and custom transition builders. The example includes new UI demonstrations such as a bottom navigation bar with nested navigation, form handling with generated validators and dropdowns, and reusable ViewModelWidgets. Services like EpochService and InformationService are now registered as lazy singletons or factories with environment support, and the app structure is organized into clear layers for views, viewmodels, and services.

_example/navigator\example · high confidence

Router example app modernized to use Stacked's Navigator 2.0 and code generation

The router example application has been updated to use the Stacked framework's modern navigation system (Navigator 2.0) and code generation patterns. The app now relies on generated files (such as \app.router.dart\, \app.locator.dart\, and \app.logger.dart\) to handle dependency injection, routing configuration, and logging, replacing manual setup. Navigation is now driven by a \StackedRouterWeb\ instance with declarative route definitions in \app.dart\, and the main entry point uses \MaterialApp.router\ with path URL strategy. This change also introduces support for custom route transitions, bottom sheets, and dialogs via generated builders, and updates view models to use \IndexTrackingViewModel\ for synchronized bottom navigation state.

_example/router\example · high confidence

Stacked architecture migration and API restructuring

The library has migrated from the legacy provider-based architecture to the Stacked framework, fundamentally changing how ViewModels and UI are structured. The old \BaseViewModel\, \ReactiveViewModel\, and \ViewModelBuilder\ widgets have been removed and replaced with new implementations in \src/view\_models/\ and \src/router/\. Users must now use the new \stacked\_view.dart\ and \view\_model\_builder.dart\ exports, which integrate with the new router system (\auto\_router\_x.dart\) and reactive mixins (\reactive\_service\_mixin.dart\). This is a breaking change requiring updates to existing ViewModel classes and widget bindings to align with the new Stacked patterns.

lib · high confidence

Stacked v3.5.0 release with semantic-release automation and documentation overhaul

This release introduces automated semantic versioning and publishing via a new \.releaserc.json\ configuration, which updates \pubspec.yaml\ and publishes to pub.dev. The package documentation has been significantly streamlined: the \README.md\ now directs users to the new official docs site and includes a maintainer schedule, while the legacy documentation has been moved to \README\_old.md\. Additionally, the project license has been updated from a placeholder to the MIT License, and the changelog has been expanded to include the full history of versions from 0.0.1 through 3.5.0.

(repo-wide) · high confidence

Updated Android example to Flutter v2 embedding and added utility helpers

The Android example app has been migrated to the Flutter v2 embedding, requiring the use of \FlutterActivity\ in Kotlin and setting the \flutterEmbedding\ meta-data value to 2 in the manifest. Additionally, a new \lib/src/utils.dart\ file was introduced to provide helper functions for checking if maps or lists are null or empty.

_example/navigator\example/android, lib/src · high confidence

ViewModel architecture refactored to use Stacked framework helpers and Provider

The view model layer has been restructured to align with the Stacked framework, introducing new base classes like BaseViewModel and ReactiveViewModel along with dedicated helpers for managing busy/error states, form validation, and index tracking. The UI binding is now handled by the StackedView and ViewModelBuilder widgets, which leverage the Provider package for dependency injection and reactive updates. Additionally, the internal DataProviderElement has been updated to force rebuilds, ensuring the UI correctly reflects state changes.

_lib/src/view\models · high confidence

Test coverage

Added code coverage report for view models and router annotations; Initial test suite for Stacked framework core components.

Dependencies

Stacked framework upgraded to v3.5.0 with modernized dependencies

The Stacked framework has been updated to version 3.5.0, requiring a Dart SDK upgrade to 3.5.0. This release modernizes the dependency stack by upgrading \get\_it\ to v8, \provider\ to v6.1.5, and \flutter\_lints\ to v6.0.0, while adding \universal\_io\, \web\, and \collection\ as dependencies. The \pubspec.lock\ file has been removed, and the package now explicitly declares support for Android, iOS, Linux, macOS, Web, and Windows platforms.

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

Lenses

  • Code Health 93
  • Architecture 95
  • Maturity 50
  • Readiness 58
  • Security 53
  • Domain Modelling 100

Changes since last survey

  • 300 commits — 240 feature/other, 60 fixes

By area

  • packages/stacked_cli — 129 commits
  • (root) — 40 commits
  • packages/stacked — 29 commits
  • packages/stacked_generator — 23 commits
  • (repo) — 22 commits
  • packages/stacked_tools — 15 commits
  • .github/workflows — 12 commits
  • packages/stacked_hooks — 9 commits
  • lib/src — 7 commits
  • example/router_example — 6 commits
  • packages/stacked_services — 3 commits
  • example/android — 2 commits
  • .github/FUNDING.yml — 1 commit
  • example/navigator_example — 1 commit
  • packages/stacked_crashlytics — 1 commit

Notable commits

  • fix: Bumps version for fixes
  • fix: FIX: delete service command
  • fix: Fix ReactiveList compatibility with Flutter 3.7.0
  • fix: Fix _isStackedApplication method
  • fix: Fix bottom_sheet template
  • fix: Fix serviceName on templates
  • fix: Fix test_constants/router_constants.dart
  • fix: Fix unit tests
  • fix: Fix unit tests
  • fix: Fix unit tests
  • fix: Fix unit tests
  • fix: Fix: Adds basic details about stacked for SEO purposes
  • fix: Fix: Prevent swipe-to-dismiss on CupertinoRoute when blocked by PopScope (#1117)
  • fix: Fixed changelog version
  • fix: Fixes #866
  • fix: Fixes all the unit tests
  • fix: Fixes example app for StackedCLI
  • fix: Fixes the analyze issues
  • fix: Fixes the integration tests
  • fix: Fixes the integration tests
  • …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

Stacked-Org/stacked 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 e335e038c9db4424ae8b895b818a246ad037ac03 — 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.