NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4464 most downloaded on pub.dev
Collections of common reusable classes and utilities for Dart language.
Last release 21 days ago
17 Sep 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 42 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
195 releases · first in 2012
InvokeUtil.invokeSafely() and invokeSafelyWith() accept an optional onError callback, called with the exception caught. Without it, the exception is s
InvokeUtil.invokeSafely() and invokeSafelyWith() accept an optional
onError callback, called with the exception caught. Without it, the
exception is silently ignored as before.Removed the deprecated rikulo_mirrors library (mirrors.dart and ClassUtil/ObjectUtil) — it depended on dart:mirrors, which is unsupported on AOT/web.…
rikulo_mirrors library (mirrors.dart and
ClassUtil/ObjectUtil) — it depended on dart:mirrors, which is
unsupported on AOT/web. Use package:reflectable or code generation instead.One column per quarter.
Added clearDefers() — clears all pending deferred tasks queued by defer(), dropping them without running (the opposite of flushDefers()).
clearDefers() — clears all pending deferred tasks queued by
defer(), dropping them without running (the opposite of flushDefers()).Added streamedResponseAjax() — the streaming-*response* counterpart to ajax(): the caller reads the response body incrementally (e.g. Server-Sent Even
streamedResponseAjax() — the streaming-response counterpart
to ajax(): the caller reads the response body incrementally (e.g.
Server-Sent Events) via the http.StreamedResponse.stream, with the
same force-close timeout.Breaking: ajax() and the postAjax/putAjax/… wrappers return Future (was Future ?>); onResponse callback removed (read statusCode / bodyBytes from the
ajax() and the postAjax/putAjax/… wrappers return
Future<http.Response> (was Future<List<int>?>); onResponse
callback removed (read statusCode / bodyBytes from the response).streamedAjax() — streaming counterpart mirroring
package:http's StreamedRequest. Caller writes bytes into an
EventSink<List<int>>; force-close timeout supported.ajax() / streamedAjax() now built on package:http's
IOClient.send — wire-equivalent to http.get/http.put, with the
added value of a real timeout that force-closes the underlying
HttpClient.isResponseOK(http.Response) — shortcut for
isHttpStatusOK(resp.statusCode).ajax() matches package:http's IOClient.send: fixed-length body (sets Content-Length) and headers applied via set (not add).
ajax() matches package:http's IOClient.send: fixed-length body
(sets Content-Length) and headers applied via set (not add).Deprecated parseContentType — use ContentType.parse.
headAjax() no longer accepts data or body (#12).ajax() and the method wrappers accept an optional timeout; on expiry the HttpClient is force-closed and TimeoutException is thrown (#11).HttpUtil.decodeQuery() splits on the first = (was last) (#13).ajax() asserts data and body are mutually exclusive (#13).parseContentType — use ContentType.parse.rikulo_mirrors (uses dart:mirrors, unsupported on AOT/web).Browser.ie, Browser.legacyEdge, Browser.opera (retired browsers).StringUtil (deprecated since 7.3). Use the top-level isChar, isCharCode, skipWhitespaces, camelize, uncamelize in util.dart directly.setRawInnerHtml(element, html, {textContent}) and createRawHtml<T>(html, {textContent}); deprecated setUncheckedInnerHtml and createUncheckedHtml.getMimeType(): added yaml/yml, opus, mpd, zst; fixed jfif → image/jpeg and pko → vnd.ms-pkipko; query strip uses first ? (RFC 3986).XmlUtil.encode encodes ' and XmlUtil.decode decodes '
XmlUtil.encode encodes ' and XmlUtil.decode decodes 'StringUtil deprecated. String utilites no longer grouped under StringUtil.
isWhitespace() added.StringUtil deprecated. String utilites no longer grouped under StringUtil.Removed: gzip, ungzip, StreamTarget, and StreamProvider
gzip, ungzip, StreamTarget, and StreamProviderDeprecated: gzip, ungzip, StreamTarget, and StreamProvider
gzip, ungzip, StreamTarget, and StreamProviderNothing published for this version
defer() won't exceed the minimal maximal allowed time in a sequence of invocation.
defer() won't exceed the minimal maximal allowed time in a sequence of invocation.NullNodeValidator and NullNodeValidatorBuilder removed
NullNodeValidator and NullNodeValidatorBuilder removedNothing published for this version
Nothing published for this version
Browser.version interpret "version/16.3" as 16.3 instead of 16.03
Browser.version interpret "version/16.3" as 16.3 instead of 16.03Browser.parseVersion supports the twoDigits version.Nothing published for this version
* ReplaceAll added
ReplaceAll addedNothing published for this version
Pair.from() and Trio.from() added
Pair.from() and Trio.from() addedNothing published for this version
Nothing published for this version
convertListNS accepts a null list.
convertListNS accepts a null list.convertList and convertListNS added.
convertList and convertListNS added.* isHttpStatusOK accepts null.
isHttpStatusOK accepts null.Nothing published for this version
Nothing published for this version
getContentType supports headerBytes and path
getMimeType addedgetContentType supports headerBytes and path
The constructors of HttpRequestWrapper, HttpResponseWrapper, HttpHeadersWrapper... accept null as origin.
null as origin.Nothing published for this version
Nothing published for this version
encodeNS and decodeNS introduced. They're null-safety version of encode and decode
encodeNS and decodeNS introduced. They're null-safety version of encode and decodeNothing published for this version
MapUtil.parse's defaultValue is an empty string.
InvokeUtil.invokeSafely added.MapUtil.parse's defaultValue is an empty string.LIST_MIRROR and other mirrored types as static members of Mirror* StreamUtil.first added.
StreamUtil.first added.* Pair and Trio added.
Pair and Trio added.Clean up deprecated methods: Browser.edge, Browser.name and the onStatusCode argument of Ajax utilities.
Browser.edge, Browser.name and the onStatusCode argument of Ajax utilities.Nothing published for this version
Nothing published for this version
defer() replaces the key, so the invocation of task will be the last key.
defer() replaces the key, so the invocation of task will be the last key.Nothing published for this version
Nothing published for this version
BREAK CHANGE: configureDefers()'s executor argument's signature is changed.
configureDefers()'s executor argument's signature is changed.defer's categoryKey is renamed to categoryNothing published for this version
configureDefers() supports executable to slow down if the system is busy.
configureDefers() supports executable to slow down if the system is busy.name is removed from BrowseronStatusCode is removed from ajaxreadAsJson, readAsString and HttpUtil.decodePostedParameters support maxLength
readAsJson, readAsString and HttpUtil.decodePostedParameters support maxLengthHttpUtil.decodePostedParameters and decodeQuery use named parameters.InvokeUtil.invokeSafelyWith added.
InvokeUtil.invokeSafelyWith added.* InvokeUtil.invokeSafely added. * StreamUtil.first added. * Pair and Trio added.
InvokeUtil.invokeSafely added.StreamUtil.first added.Pair and Trio added.Browser.legacyEdge and Browser.newEdge are addded, and Browser.name and Browser.edge are deprecated.
Browser.legacyEdge and Browser.newEdge are addded, and Browser.name and Browser.edge are deprecated.Browser.newEdge and Browser.legacyEdge as a variant of Chrome, so Browser.chrome is also true in this case.Browser.linux and Browser.windows added
Browser.linux and Browser.windows addedajax/head/post: The onResponse argument is supported, and the onStatusCode argument deprecated.
ajax/head/post: The onResponse argument is supported, and the onStatusCode argument deprecated.The maxBusy setting was introduced to configureDefers.
maxBusy setting was introduced to configureDefers.defer() will wait for the executing one to complete.Nothing published for this version
Extension to support the comparators for DateTime, such as <, >, and -.
DateTime, such as <, >, and -.Fix #6 The method 'HttpHeadersWrapper.set' has fewer named arguments than those of overridden method 'HttpHeaders.set'. [Dart 2.8]
Limit Dart SDK version for Dart 2.8 version breaking change.
* Fix #5
defer()'s task callback takes the key as the argument. It helps to reuse the same closure for different keys.
defer()'s task callback takes the key as the argument. It helps to reuse the same closure for different keys.* cancelDeferred() added.
cancelDeferred() added.Your coding agent can read these notes before it upgrades. Set up the MCP server →