NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Safe automatic disposal for Flutter controllers, streams, timers, services, and custom resources.
Last release 4 months ago
21 May 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 6 of 6 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
6 releases · first in 2026
One column per month.
Robust Test Coverage Expansion — Achieved near-100% test coverage across the package by introducing dedicated test cases for all fallback dynamic engi
close, cancel, isDisposed getters/methods, isClosed getters/methods), Sink detection, and edge-case error catch paths in DisposeRegistry.DisposeEngine, AutoDisposeBag, AutoDisposeMixin, BlocAutoDisposeMixin, AutoDisposeChangeNotifier, and AutoDisposeScope).Flutter-Recommended Teardown Ordering — Reordered AutoDisposeMixin.dispose() to invoke _autoDisposeManager.release() *before* delegating to super.disp
AutoDisposeMixin.dispose() to invoke _autoDisposeManager.release() before delegating to super.dispose(). This guarantees that state-dependent objects (such as AnimationController) are disposed while the framework's own teardown mechanics are still fully intact.DisposeEngine to dynamically probe for standard teardown methods (dispose, close, cancel) and state getters (isDisposed, isClosed) using dynamic member access. This allows auto-disposal of third-party classes (such as BloCs and custom controllers) without needing explicit subclassing or marker interfaces.Sink objects, mapping them to close().safeExecute / safeExecuteAsync) — Added safety helper methods in AutoDisposeMixin to guard synchronous and asynchronous state modifications (such as setState), safely skipping invocation if the widget is no longer mounted.TrackedResource to support try/catch isolation so that a failed disposal leaves the resource in a non-disposed state, allowing the parent registry to safely retry disposal later.test/:
stress_test.dart: Validates massive registration storms, concurrent modifications, and navigation cycling.animation_controller_test.dart: Assures leak-free teardowns for running AnimationController loops.async_safety_test.dart: Tests safeExecute guards post-disposal.edge_case_test.dart: Validates fail-safe error isolation, nested scopes, and type fallbacks.benchmark_test.dart: Gates registration and disposal operations at < 1.5μs per op, demonstrating O(1) scaling.dart format, flutter analyze, flutter test --coverage, and enforces ≥ 80% code coverage on every push and PR.super.dispose() order warning for future contributors.`BlocAutoDisposeMixin` — dedicated mixin for Bloc, Cubit, and Riverpod StateNotifier. No flutter_bloc or riverpod dependency required. Call disposeAut
BlocAutoDisposeMixin — dedicated mixin for Bloc, Cubit, and Riverpod StateNotifier. No flutter_bloc or riverpod dependency required. Call disposeAutoDispose() from your close() / dispose() override and all registered resources are released safely.AutoDisposeChangeNotifier — abstract ChangeNotifier subclass that auto-disposes registered resources when dispose() is called. Drop-in for Provider models and Riverpod ChangeNotifier-based notifiers.addDisposeListener(callback) on DisposeRegistry, AutoDisposeBag, AutoDisposeBagMixin, BlocAutoDisposeMixin, and AutoDisposeMixin — register a one-shot callback invoked after all resources are released. Useful for notifying parent objects, logging, or running teardown logic that depends on children being disposed first.isRegistered(resource) on AutoDisposeBag, AutoDisposeBagMixin, and AutoDisposeMixin — query whether a resource is currently tracked before registering or disposing it.disposeOf(resource) on AutoDisposeMixin and BlocAutoDisposeMixin — dispose a single resource immediately and remove it from tracking.unregister(resource) on AutoDisposeMixin and BlocAutoDisposeMixin — remove a resource from tracking without disposing it; use when taking back ownership of a resource's lifecycle.disposeAutoDispose() or addDisposeListener() after disposal is guarded by a debug-mode assertion and is a no-op in release builds.addDisposeListener callbacks execute after all resources are released and are themselves wrapped in try/catch so a listener error cannot suppress cleanup logging.Added AutoDisposeBag for plain Dart classes, repositories, blocs, services, and state-management controllers.
AutoDisposeBag for plain Dart classes, repositories, blocs, services, and state-management controllers.AutoDisposeBagMixin so GetX controllers/services and Provider classes can use register() outside widget State.DisposeState and isDisposed probes to skip already disposed resources before teardown.StreamController and Timer.pubspec.yaml description to satisfy pub.dev package-description scoring.Fix: updated repository and homepage URLs in pubspec.yaml.
AutoDisposeMixin - zero-boilerplate State mixin; register resources inline with register().
AutoDisposeMixin - zero-boilerplate State mixin; register resources inline with register().AutoDisposeScope - InheritedWidget scope for shared cross-widget disposal.AutoDispose.of(context) - imperative registry accessor..autoDispose(context) extension - fluent inline registration.DisposeEngine - auto-detects dispose / close / cancel without reflection.DisposeRegistry - O(1) identity map, LIFO disposal order, fail-safe error handling.Disposable, Closeable, Cancellable marker interfaces for custom types.Your coding agent can read these notes before it upgrades. Set up the MCP server →