NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A set of cubits that can be used to handle async operations in a simple, consistent way.
Last release 3 months ago
03 Jul 2026
Release timing varies
gaps range from 3 weeks to 2.2 years
Nearly every release is documented
notes for 9 of 10 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
10 releases · first in 2024
Added AsyncCubitsTrace.current to retrieve the current trace request id from the AsyncCubitsTrace zone
AsyncCubitsTrace.current to retrieve the current trace request id from the AsyncCubitsTrace zoneAdded AsyncCubitsTrace.generate() to create a trace request id, passed down through FutureCubit.performLoad/performRefresh and MutationCubit.invoke in
AsyncCubitsTrace.generate() to create a trace request id, passed down through FutureCubit.performLoad/performRefresh and MutationCubit.invoke into AsyncCubitsLogger calls (AsyncCubitLoggerInfo/AsyncCubitLoggerError gain an optional traceId parameter)One column per month.
Breaking: MutationSuccess is now MutationSuccess — holds both the input passed to invoke and the result
MutationSuccess<T> is now MutationSuccess<I, T> — holds both the input passed to invoke and the resultonSuccess(T result) is now onSuccess(I input, T result)MutationState factory constructors removed — use concrete classes directly (MutationIdle(), MutationLoading(), MutationSuccess(input, result), MutationFailure(error, stackTrace))Added AsyncCubitContainer.performDefault () static shorthand for AsyncCubitContainer.defaultInstance.perform ()
AsyncCubitContainer.performDefault<T>() static shorthand for AsyncCubitContainer.defaultInstance.perform<T>()Breaking: AsyncCubitContainer.invalidate () replaced by perform ({required runner, filter}) — accepts any BlocBase subtype and executes an arbitrary a
AsyncCubitContainer.invalidate<T>() replaced by perform<T>({required runner, filter}) — accepts any BlocBase subtype and executes an arbitrary async runner on each matching cubitMutationCubit.invalidate<T>() removed — use container.perform<T>(runner: (c) => c.invalidate()) inside onSuccess insteadFutureCubit.invalidate gains optimisticRefresh parameter: emits an optimistic value immediately before the refresh fetch begins; no-op when reload: trueAsyncCubitContainer now stores cubits in a List, allowing multiple instances of the same type to be registered simultaneously
AsyncCubitContainer now stores cubits in a List, allowing multiple instances of the same type to be registered simultaneouslyAsyncCubitContainer.invalidate<T>() now invalidates all registered cubits of type T (previously only one per type); accepts optional reload and filter parametersAsyncCubitContainer.get<T>() and invalidateAll(List<Type>) — use invalidate<T>() directlyReplaced freezed-based AsyncValue and MutationState with native Dart sealed classes — removes freezed_annotation and build_runner dependencies
freezed-based AsyncValue and MutationState with native Dart sealed classes — removes freezed_annotation and build_runner dependenciesFutureWithArgsCubit into FutureCubit: concrete subclasses now define their own load/refresh methods calling performLoad/performRefreshRefreshStreamFutureCubitMixinAdd MutationCubit used to invoke async operations by some side effect (eg. form submit)
Add MutationCubit used to invoke async operations by some side effect (eg. form submit)
Nothing published for this version
Create async_cubits package
Create async_cubits package
Your coding agent can read these notes before it upgrades. Set up the MCP server →