PackageTrack
Sign in Get early access

async

Utility functions and classes related to the 'dart:async' library.

2.13.1 12M downloads/mo #9 most downloaded on pub.dev dart-lang/core

What this package is like to depend on

Last release 5 months ago

26 Mar 2026

Release timing varies

gaps range from 3 weeks to 1.6 years

Most releases are documented

notes for 46 of 62 stable releases

Nothing withdrawn

no release was ever pulled

13 years old

66 releases · first in 2013

1 release in the last 12 months

see the full history below

Release timeline

66 releases · May 2013 to Mar 2026
2014 2016 2018 2020 2022 2024 2026
Release Pre-release

Releases

latest 60 of 66
  1. 2.13.1 26 Mar 2026
    Release notes
    • Fix StreamGroup.broadcast().close() to properly complete when all streams in the group close without being explicitly removed.
    • Run dart format with the new style.
    Open source →
    Release notes
    • Fix StreamGroup.broadcast().close() to properly complete when all streams in the group close without being explicitly removed.
    • Run dart format with the new style.
    • Can decide fetch method of AsyncCache will store exception or not by using cacheErrors property.
    Open source →
  2. 2.13.0 06 Feb 2025
    Release notes
    • Fix type check and cast in SubscriptionStream's cancelOnError wrapper
    Open source →
    Release notes
    • Fix type check and cast in SubscriptionStream's cancelOnError wrapper
    Open source →
  3. 2.12.0 16 Oct 2024
    Release notes
    • Require Dart 3.4.
    • Move to dart-lang/core monorepo.
    Open source →
  4. 2.11.0 10 Mar 2023
    Release notes
    • Add CancelableOperation.fromValue.
    • Add StreamExtensions.listenAndBuffer, which buffers events from a stream before it has a listener.
    Open source →
  5. 2.10.0 24 Oct 2022
    Release notes
    • Add CancelableOperation.thenOperation which gives more flexibility to complete the resulting operation.
    • Add CancelableCompleter.completeOperation.
    • Require Dart 2.18.
    Open source →
  6. 2.9.0 01 Apr 2022
    Release notes
    • Potentially Breaking The default propagateCancel argument to CancelableOperation.then changed from false to true. In most usages this won't have a meaningful difference in behavior, but in usages where the behavior is important propagation is the more common need. If there are any CancelableOperation with multiple listeners where canceling subsequent computation using .then shouldn't also cancel the original operation, pass propagateCancel: false.
    • Add StreamExtensions.firstOrNull.
    • Add a CancelableOperation.fromSubscription() static factory.
    • Add a CancelableOperation.race() static method.
    • Update StreamGroup methods that return a Future<dynamic> today to return a Future<void> instead.
    • Deprecated AsyncCache.fetchStream.
    • Make AsyncCache.ephemeral invalidate itself immediately when the returned future completes, rather than wait for a later timer event.
    Open source →
  7. 2.8.2 10 Aug 2021
    Release notes
    • Deprecate EventSinkBase, StreamSinkBase, IOSinkBase.
    Open source →
  8. 2.8.1 22 Jul 2021
    Release notes
    • Don't ignore broadcast streams added to a StreamGroup that doesn't have an active listener but previously had listeners and contains a single subscription inner stream.
    Open source →
  9. 2.8.0 22 Jul 2021
    Release notes
    • Add EventSinkBase, StreamSinkBase, and IOSinkBase classes to make it easier to implement custom sinks.
    • Improve performance for ChunkedStreamReader by creating fewer internal sublists and specializing to create views for Uint8List chunks.
    Open source →
  10. 2.7.0 20 May 2021
    Release notes
    • Remove sorting of the allowedHelp argument in usage output. Ordering will
      depend on key order for the passed Map.
    • Fix the repository URL in pubspec.yaml.
    • Added option hideNegatedUsage to ArgParser.flag() allowing a flag to be
      negatable without showing it in the usage text.
    • Fixed #101, adding check for mandatory when using .option().
    Open source →
    Release notes
    • Add a Stream.slices() extension method.
    • Fix a bug where CancelableOperation.then may invoke the onValue callback, even if it had been canceled before CancelableOperation.value completes.
    • Fix a bug in CancelableOperation.isComplete where it may appear to be complete and no longer be cancelable when it in fact could still be canceled.
    Open source →
  11. 2.6.1 03 May 2021
    Release notes
    • When StreamGroup.stream.listen() is called, gracefully handle component streams throwing errors when their Stream.listen() methods are called.
    Open source →
  12. 2.6.0 28 Apr 2021
    Release notes
    • Add a StreamCloser class, which is a StreamTransformer that allows the caller to force the stream to emit a done event.
    • Added ChunkedStreamReader for reading chunked streams without managing buffers.
    • Add extensions on StreamSink, including StreamSink.transform() for applying StreamSinkTransformers and StreamSink.rejectErrors().
    • Add StreamGroup.isIdle and StreamGroup.onIdle.
    • Add StreamGroup.isClosed and FutureGroup.isClosed getters.
    Open source →
  13. 2.5.0 02 Feb 2021
    Release notes
    • Stable release for null safety.
    Open source →
  14. 2.5.0-nullsafety.3 03 Nov 2020 pre-release
    Release notes
    • Update SDK constraints to >=2.12.0-0 <3.0.0 based on beta release guidelines.
    Open source →
  15. 2.5.0-nullsafety.2 23 Oct 2020 pre-release
    Release notes
    • Remove the unusable setter CancelableOperation.operation=. This was mistakenly added to the public API but could never be called.
    • Allow 2.12.0 dev SDK versions.
    Open source →
  16. 2.5.0-nullsafety.1 22 Sep 2020 pre-release
    Release notes
    • Allow 2.10 stable and 2.11.0 dev SDK versions.
    Open source →
  17. 2.5.0-nullsafety 29 Jul 2020 pre-release
    Release notes
    • Migrate this package to null safety.
    Open source →
  18. 2.4.2 06 Jul 2020
    Release notes
    • StreamQueue starts listening immediately to broadcast strings.
    Open source →
  19. 2.4.1 16 Mar 2020
    Release notes
    • Deprecate DelegatingStream.typed. Use Stream.cast instead.
    • Deprecate DelegatingStreamSubcription.typed and DelegatingStreamConsumer.typed. For each of these the Stream should be cast to the correct type before being used.
    • Deprecate DelegatingStreamSink.typed. DelegatingSink.typed, DelegatingEventSink.typed, DelegatingStreamConsumer.typed. For each of these a new StreamController can be constructed to forward to the sink. StreamController<T>()..stream.cast<S>().pipe(sink)
    • Deprecate typedStreamTransformer. Cast after transforming instead.
    • Deprecate StreamSinkTransformer.typed since there was no usage.
    • Improve docs for CancelablOperation.fromFuture, indicate that isCompleted starts true.
    Open source →
  20. 2.4.0 03 Oct 2019
    Release notes
    • Add StreamGroup.mergeBroadcast() utility.
    Open source →
  21. 2.3.0 17 Jul 2019
    Release notes
    • Implement RestartableTimer.tick.
    Open source →
  22. 2.2.0 05 Apr 2019
    Release notes
    • Add then to CancelableOperation.
    Open source →
  23. 2.1.0 22 Mar 2019
    Release notes
    • Fix CancelableOperation.valueOrCancellation's type signature
    • Add isCanceled and isCompleted to CancelableOperation.
    Open source →
  24. 2.0.8 19 Jul 2018
    Release notes
    • Set max SDK version to <3.0.0.
    • Deprecate DelegatingFuture.typed, it is not necessary in Dart 2.
    Open source →
  25. 2.0.7 03 May 2018
    Release notes
    • Fix Dart 2 runtime errors.
    • Stop using deprecated constants from the SDK.
    Open source →
  26. 2.0.6 03 Mar 2018
    Release notes
    • Add further support for Dart 2.0 library changes to Stream.
    Open source →
  27. 2.0.5 27 Feb 2018
    Release notes
    Open source →
  28. 2.0.4 10 Feb 2018
    Release notes
    • Add support for Dart 2.0 library changes to Stream and StreamTransformer. Changed classes that implement StreamTransformer to extend StreamTransformerBase, and changed signatures of firstWhere, lastWhere, and singleWhere on classes extending Stream. See also issue 31847.

    Open source →
  29. 2.0.3 05 Jan 2018
    Release notes
    • Move to package:web.
    • Require Dart 3.5
    Open source →
    Release notes
    • Fix a bug in StreamQueue.startTransaction() and related methods when rejecting a transaction that isn't the oldest request in the queue.
    Open source →
  30. 2.0.2 03 Jan 2018
    Release notes
    • Add support for Dart 2.0 library changes to class Timer.
    Open source →
  31. 2.0.1 03 Oct 2017
    Release notes
    • Fix a fuzzy arrow type warning.
    Open source →
  32. 2.0.0 29 Aug 2017
    Release notes
    • Remove deprecated public result.dart and stream_zip.dart libraries and deprecated classes ReleaseStreamTransformer and CaptureStreamTransformer.

    • Add captureAll and flattenList static methods to Result.

    • Change ErrorResult to not be generic and always be a Result<Null>. That makes an error independent of the type of result it occurs instead of.

    Open source →
  33. 1.13.3 17 May 2017
    Release notes
    • Make TypeSafeStream extend Stream instead of implementing it. This ensures that new methods on Stream are automatically picked up, they will go through the listen method which type-checks every event.
    Open source →
  34. 1.13.2 20 Feb 2017
    Release notes
    • Fix a type-warning.
    Open source →
  35. 1.13.1 15 Feb 2017
    Release notes
    • Use FutureOr for various APIs that had previously used dynamic.
    Open source →
  36. 1.13.0 06 Feb 2017
    Release notes
    • Add collectBytes and collectBytesCancelable functions which collects list-of-byte events into a single byte list.

    • Fix a bug where rejecting a StreamQueueTransaction would throw a StateError if StreamQueue.rest had been called on one of its child queues.

    • StreamQueue.withTransaction() now properly returns whether or not the transaction was committed.

    Open source →
  37. 1.12.0 24 Jan 2017
    Release notes
    • Add an AsyncCache class that caches asynchronous operations for a period of time.

    • Add StreamQueue.peek and StreamQueue.lookAheead. These allow users to look at events without consuming them.

    • Add StreamQueue.startTransaction() and StreamQueue.withTransaction(). These allow users to conditionally consume events based on their values.

    • Add StreamQueue.cancelable(), which allows users to easily make a CancelableOperation that can be canceled without affecting the queue.

    • Add StreamQueue.eventsDispatched which counts the number of events that have been dispatched by a given queue.

    • Add a subscriptionTransformer() function to create StreamTransformers that modify the behavior of subscriptions to a stream.

    Open source →
  38. 1.11.3 24 Oct 2016
    Release notes
    • Fix strong-mode warning against the signature of Future.then
    Open source →
  39. 1.11.2 27 Sep 2016

    Nothing published for this version

  40. 1.11.1 19 Jul 2016
    Release notes
    • Fix new strong-mode warnings introduced in Dart 1.17.0.
    Open source →
  41. 1.11.0 09 May 2016
    Release notes
    • Add a typedStreamTransformer() function. This wraps an untyped StreamTransformer with the correct type parameters, and asserts the types of events as they're emitted from the transformed stream.

    • Add a StreamSinkTransformer.typed() static method. This wraps an untyped StreamSinkTransformer with the correct type parameters, and asserts the types of arguments passed in to the resulting sink.

    Open source →
  42. 1.10.0 12 Apr 2016
    Release notes
    • Add DelegatingFuture.typed(), DelegatingStreamSubscription.typed(), DelegatingStreamConsumer.typed(), DelegatingSink.typed(), DelegatingEventSink.typed(), and DelegatingStreamSink.typed() static methods. These wrap untyped instances of these classes with the correct type parameter, and assert the types of values as they're accessed.

    • Add a DelegatingStream class. This is behaviorally identical to StreamView from dart:async, but it follows this package's naming conventions and provides a DelegatingStream.typed() static method.

    • Fix all strong mode warnings and add generic method annotations.

    • new StreamQueue(), new SubscriptionStream(), new DelegatingStreamSubscription(), new DelegatingStreamConsumer(), new DelegatingSink(), new DelegatingEventSink(), and new DelegatingStreamSink() now take arguments with generic type arguments (for example Stream<T>) rather than without (for example Stream<dynamic>). Passing a type that wasn't is-compatible with the fully-specified generic would already throw an error under some circumstances, so this is not considered a breaking change.

    • ErrorResult now takes a type parameter.

    • Result.asError now returns a Result<T>.

    Open source →
  43. 1.9.0 08 Mar 2016
    Release notes
    • Deprecate top-level libraries other than package:async/async.dart, which exports these libraries' interfaces.

    • Add Result.captureStreamTransformer, Result.releaseStreamTransformer, Result.captureSinkTransformer, and Result.releaseSinkTransformer.

    • Deprecate CaptureStreamTransformer, ReleaseStreamTransformer, CaptureSink, and ReleaseSink. Result.captureStreamTransformer, Result.releaseStreamTransformer, Result.captureSinkTransformer, and Result.releaseSinkTransformer should be used instead.

    Open source →
  44. 1.8.0 25 Jan 2016
    Release notes
    • Added StreamSinkCompleter, for creating a StreamSink now and providing its destination later as another sink.

    • Added StreamCompleter.setError, a shortcut for emitting a single error event on the resulting stream.

    • Added NullStreamSink, an implementation of StreamSink that discards all events.

    Open source →
  45. 1.7.0 19 Jan 2016
    Release notes
    • Added SingleSubscriptionTransformer, a StreamTransformer that converts a broadcast stream into a single-subscription stream.
    Open source →
  46. 1.6.0 11 Jan 2016
    Release notes
    • Added CancelableOperation.valueOrCancellation(), which allows users to be notified when an operation is canceled elsewhere.

    • Added StreamSinkTransformer which transforms events before they're passed to a StreamSink, similarly to how StreamTransformer transforms events after they're emitted by a stream.

    Open source →
  47. 1.5.0 14 Dec 2015
    Release notes
    • Added LazyStream, which forwards to the return value of a callback that's only called when the stream is listened to.
    Open source →
  48. 1.4.0 28 Oct 2015
    Release notes
    • Added AsyncMemoizer.future, which allows the result to be accessed before runOnce() is called.

    • Added CancelableOperation, an asynchronous operation that can be canceled. It can be created using a CancelableCompleter.

    • Added RestartableTimer, a non-periodic timer that can be reset over and over.

    Open source →
  49. 1.3.0 10 Aug 2015
    Release notes
    • Added StreamCompleter class for creating a stream now and providing its events later as another stream.

    • Added StreamQueue class which allows requesting events from a stream before they are avilable. It is like a StreamIterator that can queue requests.

    • Added SubscriptionStream which creates a single-subscription stream from an existing stream subscription.

    • Added a ResultFuture class for synchronously accessing the result of a wrapped future.

    • Added FutureGroup.onIdle and FutureGroup.isIdle, which provide visibility into whether a group is actively waiting on any futures.

    • Add an AsyncMemoizer class for running an asynchronous block of code exactly once.

    • Added delegating wrapper classes for a number of core async types: DelegatingFuture, DelegatingStreamConsumer, DelegatingStreamController, DelegatingSink, DelegatingEventSink, DelegatingStreamSink, and DelegatingStreamSubscription. These are all simple wrappers that forward all calls to the wrapped objects. They can be used to expose only the desired interface for subclasses, or extended to add extra functionality.

    Open source →
  50. 1.2.0 26 Jun 2015
    Release notes
    • Added a FutureGroup class for waiting for a group of futures, potentially of unknown size, to complete.

    • Added a StreamGroup class for merging the events of a group of streams, potentially of unknown size.

    • Added a StreamSplitter class for splitting a stream into multiple new streams.

    Open source →
  51. 1.1.0 23 Feb 2015
    Release notes
    • ChangeLog starts here.
    Open source →
  52. 1.0.0 23 May 2014

    Nothing published for this version

  53. 1.0.0+1 23 Sep 2014

    Nothing published for this version

  54. 0.9.1 20 Dec 2013

    Nothing published for this version

  55. 0.9.0 20 Dec 2013

    Nothing published for this version

  56. 0.1.7 19 May 2013

    Nothing published for this version

  57. 0.1.7+201305222207 22 May 2013

    Nothing published for this version

  58. 0.1.7+201306072346 07 Jun 2013

    Nothing published for this version

  59. 0.1.7+201307031741 03 Jul 2013

    Nothing published for this version

  60. 0.1.7+201307031742 03 Jul 2013

    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