PackageTrack
Sign in Get early access

built_redux

A state management library written in dart that enforces immutability

8.0.10 8.3K downloads/mo #3167 most downloaded on pub.dev davidmarne/built_redux

What this package is like to depend on

Last release 6 months ago

15 Feb 2026

Release timing varies

gaps range from 2 weeks to 1.3 years

Some releases are documented

notes for 32 of 62 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

67 releases · first in 2017

1 release in the last 12 months

see the full history below

Release timeline

67 releases · Apr 2017 to Feb 2026
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 67
  1. 8.0.10 15 Feb 2026
    Release notes

    Info

    Build: (waiting for build to complete)
    Skynet Results: (waiting for Skynet results)
    Pipeline: (waiting for pipeline to start)
    This patch release includes the following changes:

    Miscellaneous

    • #179 Update to full Dart 3.10

    Notes created on Sunday, February 15 02:22 PM UTC

    Open source →
  2. 8.0.9 04 Nov 2024
    Release notes

    Info

    Build: (waiting for build to complete)
    Skynet Results: (waiting for Skynet results)
    Pipeline: (waiting for pipeline to start)
    This patch release includes the following changes:

    Miscellaneous

    • #178 Allow analyzer 6

    Notes created on Monday, November 04 04:27 PM UTC

    Open source →
  3. 8.0.6 05 Sep 2023
    Release notes
    • restrict analyzer to 5.x
    Open source →
  4. 8.0.5 05 Sep 2023
    Release notes
    • open analyzer range to 5
    Open source →
  5. 8.0.4 05 Sep 2023

    Nothing published for this version

  6. 8.0.3 16 Feb 2023
    Release notes
    • reopen analyzer range
    Open source →
  7. 8.0.2 16 Feb 2023
    Release notes
    • only use nndb in generator if nndb feature is enabled. prevents build issues for non nndb consumers
    Open source →
  8. 8.0.1 13 Feb 2023
    Release notes
    • updated analyzer range to allow 2.x.x
    • add gh action workflow
    Open source →
  9. 8.0.0 03 Jun 2021
    Release notes
    • updated analyzer, source_gen, build, build_test dependency ranges
    • fix nnbd issues in generator
    • set sdk range lower bound to 2.12.0
    Open source →
  10. 8.0.0-nullsafety.0 08 Feb 2021 pre-release
    Release notes
    • add tests that generate actions with nullable generics
    • fixed issue where ++ does not work on builder value
    • address deprecations in generator
    • Breaking changes:
      • The argements to ActionDispatcher.call are no longer optional. when dispatching an action a payload a value must be provided. if the payload type is nullable null must be explicitly provided. append a ? to the ActionDispatcher type parameter for any actions that can be dispatched with a null payload, e.g. ActionDispatcher<int?>.
      • Remove previously deprecated test method
    Open source →
  11. 7.5.14 24 Feb 2022

    Nothing published for this version

  12. 7.5.13 23 Feb 2022

    Nothing published for this version

  13. 7.5.12 17 Jun 2021

    Nothing published for this version

  14. 7.5.11 12 May 2020
    Release notes
    • allow analyzer 0.39.0
    • make dispatcher name public
    • fix documentation typo
    Open source →
  15. 7.5.10 22 Jan 2020
    Release notes
    • add workiva_analysis_options
    • remove usage of new keyword in code and examples
    • bump various dependencies lower bounds
    Open source →
  16. 7.5.9 09 Jan 2020
    Release notes
    • add type_annotate_public_apis lint ignore to generated files
    Open source →
  17. 7.5.8 05 Dec 2019
    Release notes
    • rework generator to lift analyzer version constraint.
    • open analyzer range
    • generator now uses source parsing to resolve action generic types which allows any unresolved type to be used as an action payload.
    • generated actions classes now use type inference.
    • bump built_value lower bound to 6.1.4 since it is impossible for pub to resolve to anything lower due to the build dependency constraint.
    Open source →
  18. 7.5.7 27 Nov 2019
    Release notes

    open built value range restrict analyzer to less than 0.38.3, issue was introduced in 0.38.3 patch

    Open source →
  19. 7.5.6 16 Oct 2019
    Release notes

    add dart2js:noInline annotations

    Open source →
  20. 7.5.5 09 Oct 2019
    Release notes

    update analyzer dependency to allow '>=0.33.0 <0.39.0'

    Open source →
  21. 7.5.4 19 Jun 2019
    Release notes

    update analyzer dependency to allow '>=0.33.0 <0.37.0' fix type in built_redux_test_utils.dart

    Open source →
  22. 7.5.3 01 Apr 2019
    Release notes

    update analyzer dependency to allow '>=0.33.0 <0.36.0'

    Open source →
    Release notes

    update analyzer dependency to allow '>=0.33.0 <0.36.0'

    Open source →
  23. 7.5.2 14 Dec 2018
    Release notes

    update analyzer dependency to allow ^0.33.0

    Open source →
  24. 7.5.1 14 Dec 2018
    Release notes

    update build dependencies

    Open source →
  25. 7.5.0 13 Sep 2018
    Release notes
    • allow 4.x.x of built_collection
    • added combineReducerBuilder to NestedReducerBuilder
    • added a NestedMiddlewareBuilder
    Open source →
    Release notes
    • allow 4.x.x of built_collection
    • added combineReducerBuilder to NestedReducerBuilder
    • added a NestedMiddlewareBuilder
    Open source →
  26. 7.4.5 02 Aug 2018
    Release notes
    • open sdk range to dart 2!
    • update built_value and source_gen dependencies
    • use SharedPartBuilder rather than PartBuilder in the generator
    Open source →
    Release notes
    • open sdk range to dart 2!
    • update built_value and source_gen dependencies
    • use SharedPartBuilder rather than PartBuilder in the generator
    Open source →
  27. 7.4.4-dev 15 Jul 2018 pre-release
    Release notes

    update generator to use typedef names in actiondispatcher generics

    Open source →
    Release notes
    • use typedef names in action generator
    Open source →
  28. 7.4.3-dev 14 Jul 2018 pre-release
    Release notes
    • update dependency range on analyzer
    • update dependency range on test
    • fix broken test caused by dart 2's new asyc behavior
    Open source →
    Release notes
    • update dependency range on analyzer
    • update dependency range on test
    • fix broken test caused by dart 2's new asyc behavior
    Open source →
  29. 7.4.2 29 Jun 2018
    Release notes
    • add lint ignores to generated files
    Open source →
  30. 7.4.2+1 28 Feb 2019

    Nothing published for this version

  31. 7.4.1 17 Apr 2018
    Release notes
    • fix cast issues around store changes in dart 2
    • open analyzer version range
    Open source →
  32. 7.4.1-dev 17 Apr 2018 pre-release
    Release notes
    • open sourc-gen range
    • run tests on the dev compiler
    Open source →
  33. 7.4.0 26 Feb 2018
    Release notes
    • add built_redux_test_utils library - exposes an expectDispatched function for expecting a given action gets dispatched asynchronously
    • add combine to MiddlewareBuilder class - lets you combine middleware builders
    • add toString to Action class
    • add example
    • add docs
    Open source →
  34. 7.4.0-dev 29 Mar 2018 pre-release
    Release notes
    • add build.yaml and build.dart to comply with build_runner 0.7.x

    With the dev tag you can consume the latest versions of built_value, build, and build_runner that are only compatable with dart 2.

    In order to migrate:

    • remove your old build scripts
    • update your pubspec to include
      build_runner: ^0.7.9
    
    • add a build.yaml to the root of your repo that contains the following:
    targets:
      $default:
        builders:
          built_value_generator|built_value:
            enabled: false
    
    • run pub run build_runner build.

    The build script is only a temporary measure until https://github.com/dart-lang/source_gen/issues/319 is resolved.

    Open source →
  35. 7.3.5 31 Jan 2018

    Nothing published for this version

  36. 7.3.4 26 Jan 2018

    Nothing published for this version

  37. 7.3.3 31 Dec 2017
    Release notes
    • add changelog
    • update readme to include link to todoMVC repo
    Open source →
  38. 7.3.2 05 Dec 2017
    Release notes
    • open dependency range on the build package
    Open source →
  39. 7.3.1 30 Nov 2017
    Release notes
    • open dependency range on the built_collection package
    Open source →
  40. 7.3.0 18 Nov 2017
    Release notes
    • dispose is now awaitable
    Open source →
  41. 7.2.0 05 Nov 2017
    Release notes
    • Added actionStream stream to the store api so one can listen to changes resulting from a specific action name.
    • Fixed issues called out my adding implicit-dynamic and implicit-cast rules.
    Open source →
  42. 7.1.0 01 Nov 2017
    Release notes
    • Added reducer builders for all collection types in built_collection. This means you can now write reducers that rebuild just a collection. Examples: https://github.com/davidmarne/built_redux/blob/master/test/unit/collection_models.dart
    • The action generator now supports inheritance, meaning one can now have action classes extend one another. AbstractReducerBuilder was added as means of merging a reducer builder defined to rebuild the abstract pieces of state. Examples: https://github.com/davidmarne/built_redux/blob/7.1.0/test/unit/inheritance_test_models.dart for examples
    Open source →
  43. 7.0.0 22 Oct 2017
    Release notes
    • Breaking changes:
      • A breaking change in behavior was made to action dispatchers. Before action dispatchers executed the middleware/reducers asynchronously, but they now execute synchronously.

    For example you may have:

    int getCount(store) {
      print(store.state.count); // prints 0
      store.actions.increment(1);
      print(store.state.count); // would print 1 if actions were sync, 0 if async
      return store.state.count; // would return 1 if actions were sync, 0 if async
    }
    

    Before this function would return 0 because the state update that occurs from actions.increment would be processed in a future task. Now this function will return 1 because the state update that occurs from actions.increment is processed in the current task

    Open source →
  44. 6.1.1 13 Oct 2017

    Nothing published for this version

  45. 6.1.0 01 Oct 2017

    Nothing published for this version

  46. 6.0.0 28 Sep 2017
    Release notes

    Removes the BuiltReducer interface and the generated BuiltReducer implementation in favor of building a reducer function and passing it to the store at instantiation.

    • Breaking changes:
      • Store now takes a reducer
      • Nested reducers need to be built with the NestedReducerBuilder and merged wth the main ReducerBuilder using ReducerBuilder.addNestedReducer
      • Models no longer implement BuiltReducer
        • Remove references to the reducer on your models
      • Renamed ActionDispatcher.syncWithStore to setDispatcher
      • Renamed SubStateChange to SubstateChange

    Reasoning:

    • Decouples your models and reducers.
    • Requires less generated code.
    • Reducing requires less map look ups. Previously N map look ups were required where N was the number of BuiltReducers in your state tree. Now only 1 map look up is required per action dispatched.

    Examples:

    • Example model change. Remove the generated BuiltReducer mixin and the reducer getter

    Before:

      abstract class Counter extends Object
         with CounterReducer
         implements Built<Counter, CounterBuilder> {
       int get count;
    
       get reducer => _reducer;
    
       Counter._();
       factory BaseCounter() => new _$BaseCounter._(count: 1);
     }
    

    After:

      abstract class Counter implements Built<Counter, CounterBuilder> {
       int get count;
    
       Counter._();
       factory BaseCounter() => new _$BaseCounter._(count: 1);
     }
    
    • Example nested reducer change. Change NestedCounter's reducer builder to a NestedReducerBuilder. Pass the NestedReducerBuilder mapper functions from the main state/builder to the nested state/builder.

    Before

    
    // Built Reducer
    abstract class BaseCounter extends Object
        with BaseCounterReducer
        implements Built<BaseCounter, BaseCounterBuilder> {
      int get count;
    
      BuiltList<int> get indexOutOfRangeList;
    
      NestedCounter get nestedCounter;
    
      @override
      get reducer => _baseReducer;
    
      // Built value constructor
      BaseCounter._();
      factory BaseCounter() => new _$BaseCounter._(
            count: 1,
            nestedCounter: new NestedCounter(),
          );
    }
    
    final _baseReducer = (new ReducerBuilder<BaseCounter, BaseCounterBuilder>()
          ..add(BaseCounterActionsNames.increment, _baseIncrement)
          ..add(BaseCounterActionsNames.decrement, _baseDecrement))
        .build();
    
    abstract class NestedCounter extends Object
        with NestedCounterReducer
        implements Built<NestedCounter, NestedCounterBuilder> {
      int get count;
    
      get reducer => _nestedReducer;
    
      // Built value constructor
      NestedCounter._();
      factory NestedCounter() => new _$NestedCounter._(count: 1);
    }
    
    final _nestedReducer =  (new ReducerBuilder<NestedCounter, NestedCounterBuilder>()
              ..add(NestedCounterActionsNames.increment, _nestedIncrement)
              ..add(NestedCounterActionsNames.decrement, _nestedDecrement))
            .build();
    
    

    After

    abstract class BaseCounter implements Built<BaseCounter, BaseCounterBuilder> {
      int get count;
    
      NestedCounter get nestedCounter;
    
      BaseCounter._();
      factory BaseCounter() => new _$BaseCounter._(
            count: 1,
            nestedCounter: new NestedCounter(),
          );
    }
    
    // the reducer passed to the store
    final reducer = (new ReducerBuilder<BaseCounter, BaseCounterBuilder>()
          ..add(BaseCounterActionsNames.increment, _baseIncrement)
          ..add(BaseCounterActionsNames.decrement, _baseDecrement)
          ..combineNested(_nestedReducer))
        .build();
    
    abstract class NestedCounter implements Built<NestedCounter, NestedCounterBuilder> {
      int get count;
    
      // Built value constructor
      NestedCounter._();
      factory NestedCounter() => new _$NestedCounter._(count: 1);
    }
    
    final _nestedReducer = new NestedReducerBuilder<BaseCounter, BaseCounterBuilder,
        NestedCounter, NestedCounterBuilder>(
      (state) => state.nestedCounter,
      (builder) => builder.nestedCounter,
    )
      ..add(NestedCounterActionsNames.increment, _nestedIncrement)
      ..add(NestedCounterActionsNames.decrement, _nestedDecrement);
    
    Open source →
  47. 5.1.0 27 Sep 2017

    Nothing published for this version

  48. 5.0.0 08 Sep 2017

    Nothing published for this version

  49. 4.0.0 30 Aug 2017

    Nothing published for this version

  50. 3.0.0 13 Aug 2017

    Nothing published for this version

  51. 2.1.2 04 Aug 2017

    Nothing published for this version

  52. 2.1.1 26 Jul 2017

    Nothing published for this version

  53. 2.0.2 19 Jul 2017

    Nothing published for this version

  54. 2.0.1 18 Jul 2017

    Nothing published for this version

  55. 2.0.0 16 Jul 2017

    Nothing published for this version

  56. 1.0.0 14 May 2017

    Nothing published for this version

  57. 0.1.4 07 May 2017

    Nothing published for this version

  58. 0.1.3 30 Apr 2017

    Nothing published for this version

  59. 0.1.2 30 Apr 2017

    Nothing published for this version

  60. 0.1.1 23 Apr 2017

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive