Skip to content
CAI
Software that uses CAICheck a score

alibaba/fish-redux

62.0

Adequate · 23 September 2026

5.1k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Fish Redux is a Flutter application framework that implements the Redux state management pattern to handle complex application state. It provides a complete architecture for building medium to large-scale apps, featuring a unified API for store creation, component lifecycle management, and routing. The system supports dynamic and static UI rendering through specialized adapters and includes utilities for aspect-oriented programming, memoized state connectors, and middleware for debugging and error handling.

Features

Add Aspect-Oriented Programming (AOP) utilities for function enhancement

Introduces a new AOP framework in the \redux\_aop\ library, allowing developers to wrap functions with cross-cutting concerns. The core \AOP\ class chains \ApplyLikeEnhancer\ modifiers, providing convenience methods (\withZero\ through \withSix\) to apply these enhancements to functions with up to six arguments. The update also includes a suite of common AOP enhancers such as \debounce\, \throttle\, \delay\, \memoize\, \log\, \performance\ tracking, and \wait\ (lock) logic, all exported via \common\_aop.dart\.

_lib/src/redux\aop · high confidence

Add FlowAdapter and connector extensions for list-based UI patterns

Introduced new extension classes to simplify the creation of list-based UI components in the Fish-Redux framework. The \SimpleFlowAdapter\ provides pre-built adapters for static, dynamic, and list-like data sources, reducing boilerplate for rendering item lists. Additionally, \SimpleComponent\ and \SimpleConnector\ extensions are added to streamline component and connector definitions. Specific connectors like \IndexedListConn\ and \IndexedListLikeConn\ are included to handle indexed access to list states, enabling efficient rendering of dynamic lists in the todo list example.

_example/lib/todo\_list\_page/flow\adapter, lib/src/extensions · high confidence

Add Todo edit page with global theme switching

The example now includes a new Todo edit page that allows users to edit a todo item's title and description. Additionally, the example introduces a global store for managing application-wide state, specifically enabling users to change the app's theme color via a button in the edit page.

_example/lib/todo\_edit\page · high confidence

Add TodoItem component for the example app

The example app now includes a complete TodoItem component, introducing a new UI element for displaying and managing individual to-do items. This component provides the ability to mark items as done, edit their title and description, and remove them via a confirmation dialog, all within the example application.

_example/lib/todo\_list\_page/todo\component · high confidence

Add safety adapter middleware for error handling

A new \safetyAdapter\ middleware is introduced to wrap list rendering in a try-catch block, ensuring that any exceptions during item building or rendering are caught and handled via an optional \onError\ callback rather than crashing the app. This provides a safer way to render lists in the Redux middleware layer.

_lib/src/redux\_middleware/adapter\middleware · high confidence

Add safety middleware for error handling in view rendering

A new \safetyView\ middleware is introduced to wrap view rendering logic in a try-catch block. This ensures that if a view component throws an error during rendering, the application will not crash; instead, it will either call a provided error handler or render an empty container. This change improves application stability by preventing unhandled exceptions in the view layer.

_lib/src/redux\_middleware/view\middleware · high confidence

Add todo list example with report component

The example application now includes a complete todo list page implementation in \example/lib/todo\_list\_page\. This adds a new page that manages a list of todos and displays a report component showing the total and completed task counts. The implementation includes action creators, effects for initialization and adding items, a reducer for state management, and UI components for the report and the main page layout.

_example/lib/todo\_list\page · high confidence

Added debug middleware for logging and performance monitoring

Introduced new middleware for debugging Redux actions in debug mode. The 'log' middleware prints action types, payloads, and state changes to the console, while the 'performance' middleware measures and prints the execution time of each action. Both are conditionally active only during debug builds.

_lib/src/redux\middleware/middleware · high confidence

Added example Flutter project scaffolding

Added the initial structure for the example Flutter application, including the .gitignore, .metadata, and README.md files, along with the generated .flutter-plugins-dependencies file that tracks the path\_provider plugin.

example · high confidence

Added example app entry point and root configuration

The example application now includes a dedicated entry point (main.dart) that initializes the app via createApp(). The root widget is configured with Fluro-based routing for 'todo\_list' and 'todo\_edit' pages, connecting them to a global AppStore. Common AOP enhancements, including safety view/adapter middlewares and a lifecycle logging effect middleware, are applied to all pages.

example/lib · high confidence

Added web application entry point and PWA configuration

The example/web directory now includes index.html and manifest.json files, enabling the Flutter web application to function as a Progressive Web App (PWA) with service worker integration, custom icons, and standalone display mode.

example/web · high confidence

Consolidated public API for Redux integration

The library now exposes a unified public API via lib/fish\_redux.dart, which re-exports key modules including extensions, Redux core, adapter, AOP, component, component mixin, connector, middleware, routes, and utilities. This change simplifies imports for users by providing a single entry point to access all Redux-related functionality.

lib · high confidence

Initial release of Fish Redux framework

The Fish Redux library is introduced as an assembled Flutter application framework based on Redux state management, suitable for building medium to large complex applications. This initial release includes the core library, a comprehensive changelog tracking versions from 0.1.2 to 0.3.7, and a README with installation instructions, architecture diagrams, and links to example projects. The project is licensed under Apache 2.0 and includes standard configuration files such as .gitignore, .travis.yml for CI/CD, and analysis\_options.yaml for Dart linting.

(repo-wide) · high confidence

Introduce PageRoutes for managing page-specific stores

A new PageRoutes class is introduced to associate each page with a unique store, enabling developers to define basic route behaviors and manage page-specific state management within the routing layer.

_lib/src/redux\routes · medium confidence

Introduce core Redux library implementation

Added the foundational Redux implementation to the codebase, providing the core state management capabilities. This includes the \Store\ class and \createStore\ factory for managing application state, along with \applyMiddleware\ to support asynchronous side effects and logging. The update also introduces \combineReducers\ and \combineSubReducers\ to manage complex state trees, and defines the \Action\, \Reducer\, and \Middleware\ interfaces. Additionally, \ImmutableConn\ and \MutableConn\ connectors are provided to facilitate data binding between the store and UI components.

lib/src/redux · high confidence

Introduce new adapter types for dynamic and static flow rendering

Added new adapter classes to support different rendering patterns: \FlowAdapter\ for dynamic flow-based rendering, \StaticFlowAdapter\ for static slot-based rendering, and \SourceFlowAdapter\ for source-driven lists. These adapters utilize a \RecycleContext\ to optimize performance by reusing and cleaning up sub-component contexts. The \DynamicFlowAdapter\ and \SourceFlowAdapter\ are marked as deprecated in favor of the new \FlowAdapter\ and \StaticFlowAdapter\ respectively.

_lib/src/redux\adapter · high confidence

Introduce the Redux Component architecture with lifecycle and middleware support

The library now provides a complete component-based architecture for managing state and UI in Flutter applications. This includes a new \AutoDispose\ system for managing widget lifecycles, a \Component\ base class for stateful UI components, and a \Page\ class for full-page management with route parameters. The update introduces a middleware pipeline (\Enhancer\) that allows intercepting and modifying actions, view building, and effects. It also adds a \DispatchBus\ for inter-component and inter-page communication, along with \LocalProps\ for managing local, non-reactive state. This refactors the library from a simple store provider to a full-featured state management solution with lifecycle hooks and middleware support.

_lib/src/redux\component · high confidence

Introduces Reselect-based state connectors and helper utilities

The redux\_connector module now includes new files (connector.dart, helper.dart, map\_like.dart, none.dart, op\_mixin.dart, reselect.dart) that provide Reselect-style memoized selectors and connector utilities. This adds support for caching and optimizing state access in the Redux store, including a generic Reselect implementation for up to 6 sub-states, a mixin for single-state memoization, and helper functions to compose and join connectors.

_lib/src/redux\connector · high confidence

New Redux component mixins for lifecycle, visibility, and animation support

The library introduces a new \redux\_component\_mixin\ module providing several mixins to enhance component behavior: \KeepAliveMixin\ and \keepAliveClientWrapper\ preserve component state when hidden; \PrivateReducerMixin\ allows reducers to handle internal actions without exposing them publicly; \SingleTickerProviderMixin\ and \TickerProviderMixin\ provide fixed disposal for animation tickers; \VisibleChangeMixin\ tracks list item visibility; and \WidgetsBindingObserverMixin\ forwards app lifecycle changes. These additions allow developers to easily integrate state preservation, animation, and lifecycle awareness into their Redux components.

_lib/src/redux\_component\mixin · high confidence

New list adapter implementation for the todo list example

The example application now uses a new \list\_adapter\ directory containing \action.dart\, \adapter.dart\, and \reducer.dart\. This introduces a \ToDoListAdapter\ that extends \SourceFlowAdapter\ to manage the todo list state, handling \add\ and \remove\ actions via a dedicated reducer.

_example/lib/todo\_list\_page/list\adapter · medium confidence

New utility libraries for collections, debugging, hashing, and tuples

Added new utility files in lib/src/utils to provide helper functions for common data operations. The collections utility offers safe reduce, fold, flatten, merge, compact, and empty-check methods for lists and maps. A debug mode flag and a println helper are now available for development-time logging. A Jenkins hash function is provided for generating integer hashes of integer iterables. Additionally, generic tuple classes (Tuple0 through Tuple6) are introduced to support multi-value returns and structured data handling. These utilities are exported via the main utils.dart file.

lib/src/utils · high confidence

Redux middleware library exposes public API

The lib/src/redux\_middleware/redux\_middleware.dart file now exports adapter\_middleware, middleware, and view\_middleware modules, making these components available for external use.

_lib/src/redux\middleware · high confidence

Test coverage

Added comprehensive test suite for the Redux architecture; Added initial widget test for the example app; Added test widgets for the Fish Redux framework.

Dependencies

Updated Dart SDK constraints and test dependencies

The project's \pubspec.yaml\ files have been updated to specify Dart SDK constraints of \\>=2.2.0 \<3.0.0\ for the main package, while example, test, and test\_widgets sub-packages use \\>=2.0.0-dev.68.0 \<3.0.0\. Additionally, the \test\ dependency has been updated to version \^1.5.1\ in the main and test packages, and \mockito\ has been removed from the main package's dev dependencies.

(dependencies) · medium 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

Score

  • CAI 58 → 62 (+3.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 98 (-2.1)
  • Architecture 100 → 98 (-2.2)
  • Maturity 40 → 54 (+13.9)
  • Readiness 46 → 44 (-1.4)
  • Security 100 → 100 (+0.0)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (6)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Test reliability not included
  • complexity unreadable for .dart — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (24)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no installation or build instructions (docs/concept/page.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • Documentation: no usage examples (docs/concept/on-error.md)
  • Documentation: no usage examples (docs/concept/oop.md)
  • Duplicated block (10 lines × 2) (lib/src/redux/connector.dart)
  • Duplicated block (11 lines × 2) (lib/src/redux_adapter/dynamic_flow_adapter.dart)
  • Duplicated block (14 lines × 2) (lib/src/redux_adapter/flow_adapter.dart)
  • Duplicated block (8–9 lines × 2) (lib/src/redux_adapter/dynamic_flow_adapter.dart)
  • HackComment (lib/src/redux_adapter/dynamic_flow_adapter.dart)
  • HackComment (lib/src/redux_adapter/source_flow_adapter.dart)
  • HackComment (lib/src/redux_adapter/static_flow_adapter.dart)
  • Low cohesion: Logic (LCOM4 10) (lib/src/redux_component/logic.dart)
  • Low cohesion: PureViewViewService (LCOM4 4) (lib/src/redux_component/context.dart)
  • No dependency advisory monitoring
  • TodoComment (lib/src/redux_component/context.dart)
  • TodoComment (test/lib/redux_component/component_test.dart)
  • TodoComment (test/lib/redux_component/lifecycle_test.dart)
  • TodoComment (test/lib/redux_component/page_test.dart)
  • …and 4 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

alibaba/fish-redux 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 23 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 40b853bfa0843e5bbe23e9217bae7598bb08bcf7 — 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-955b9cee9818.