NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #93 most downloaded on pub.dev
Utilities to write a client or server using the JSON-RPC 2.0 spec.
Last release 7 months ago
18 Feb 2026
Release timing varies
gaps range from 8 days to 2.4 years
Most releases are documented
notes for 28 of 32 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
32 releases · first in 2014
Forward errors within Peer when it is acting as a client.
Peer when it is acting as a client.Add custom ID generator option to clients, which allows for String ids.
String ids.String ids are present in a response, we no longer
automatically try to parse them as integers. This behavior was never a part
of the spec, and is not compatible with allowing custom ID generators.One column per quarter.
Move to dart-lang/tools monorepo.
dart-lang/tools monorepo.Address a few analysis hint violations.
package:lints.repository field.Fix a bug where a null result to a request caused an exception.
null result to a request caused an exception.Old functions still exists as deprecated, forwarding to the new functions without the preferNewest argument. Makes PackageConfig , Package and Languag…
findPackageConfigAndFile and findPackageConfigAndUri..packages file..packages files.packages.readAnyConfigFile to readConfigFile, and removedpreferNewest parameter.readAnyConfigFileUri which becomes readConfigFileUri.preferNewest argument.PackageConfig, Package and LanguageVersion @sealed classes,final in a future update.PackageConfig.minVersion to complement .maxVersion.2.Fix Peer.close() throwing Bad state: Future already completed.
Peer.close() throwing Bad state: Future already completed.Fix parsing of pre-release and build identifiers to only treat pure-digit base-10 identifiers as integers, treating hexadecimal and signed identifiers
Peer requests not terminating when the underlying channel is closed.Added strictProtocolChecks named parameter to Server and Peer constructors. Setting this parameter to false will result in the server not rejecting re
strictProtocolChecks named parameter to Server and Peer
constructors. Setting this parameter to false will result in the server not
rejecting requests missing the jsonrpc parameter.Fixed issue where throwing RpcException.methodNotFound in an asynchronous fallback handler would not result in the next fallback being executed.
RpcException.methodNotFound in an asynchronous
fallback handler would not result in the next fallback being executed.2.2.0.Switched to using the Apache httpd mime.conf table as the source of truth for mime types. Mime type additions:
application/vnd.geogebra.slidesfont/collectionimage/jxlimage/vnd.dvb.subtitlevideo/mp2tapplication/x-font-otf => font/otfapplication/x-font-ttf => font/ttfapplication/x-font-woff => font/woffmodel/vnd.mtsapplication/inkml+xml, inkml => inkapplication/octet-stream, so => binapplication/onenote, onetoc2 => onetocapplication/pgp-signature, sig => ascapplication/tei+xml, teicorpus => teiapplication/vnd.adobe.fxp, fxpl => fxpapplication/vnd.clonk.c4group, c4u => c4gapplication/vnd.dece.data, uvvf => uvfapplication/vnd.dece.ttml+xml, uvvt => uvtapplication/vnd.eszigno3+xml, et3 => es3application/vnd.framemaker, maker => fmapplication/vnd.geometry-explorer, gre => gexapplication/vnd.grafeq, gqs => gqfapplication/vnd.ibm.modcap, listafp => afpapplication/vnd.iccprofile, icm => iccapplication/vnd.intercon.formnet, xpx => xpwapplication/vnd.kde.kpresenter, kpt => kprapplication/vnd.kde.kword, kwt => kwdapplication/vnd.kinar, knp => kneapplication/vnd.koan, skt => skpapplication/vnd.ms-project, mpt => mppapplication/vnd.palm, pqa => pdbapplication/vnd.quark.quarkxpress, qxt => qxdapplication/vnd.simtech-mindmapper, twds => twdapplication/vnd.stardivision.writer, vor => sdwapplication/vnd.sus-calendar, susp => susapplication/vnd.symbian.install, sisx => sisapplication/vnd.ufdl, ufdl => ufdapplication/vnd.visio, vsw => vsdapplication/vnd.zul, zirz => zirapplication/x-authorware-bin, x32 => aabapplication/x-blorb, blorb => blbapplication/x-cbr, cbz => cbrapplication/x-director, w3d => dirapplication/x-font-type1, pfm => pfaapplication/x-msdownload, msi => exeapplication/x-pkcs12, pfx => p12application/x-pkcs7-certificates, spc => p7bapplication/x-zmachine, z8 => z1application/xv+xml, xvml => mxmlaudio/basic, snd => auaudio/mpeg, mpga => mp3audio/vnd.dece.audio, uvva => uvaimage/tiff, tif => tiffimage/vnd.dece.graphic, uvvi => uviimage/x-freehand, fhc => fhmessage/rfc822, mime => emlmodel/mesh, silo => mshmodel/x3d+binary, x3dbz => x3dbmodel/x3d+vrml, x3dvz => x3dvmodel/x3d+xml, x3dz => x3dtext/troff, tr => ttext/uri-list, urls => uritext/x-fortran, for => fvideo/mj2, mjp2 => mj2video/vnd.dece.hd, uvvh => uvhvideo/vnd.dece.mobile, uvvm => uvmvideo/vnd.dece.pd, uvvp => uvpvideo/vnd.dece.sd, uvvs => uvsvideo/vnd.dece.video, uvvv => uvvvideo/vnd.uvvu.mp4, uvvu => uvuvideo/x-ms-asf, asx => asfServer and related classes can now take an onUnhandledError callback to
notify callers of unhandled exceptions.Allow stream_channel version 2.x
stream_channel version 2.xNothing published for this version
Updated SDK version to 2.0.0-dev.17.0
When a Client is closed before a request completes, the error sent to that request's Future now includes the request method to aid in debugging.
Client is closed before a request completes, the error sent to that
request's Future now includes the request method to aid in debugging.* Internal changes only.
* Internal changes only.
Client.sendRequest() now throws a StateError if the client is closed while the request is in-flight. This avoids dangling Futures that will never be c
Client.sendRequest() now throws a StateError if the client is closed while
the request is in-flight. This avoids dangling Futures that will never be
completed.
Both Client.sendRequest() and Client.sendNotification() now throw
StateErrors if they're called after the client is closed.
* Fix new strong-mode warnings.
* Fix all strong-mode warnings.
Fix a race condition in which a StateError could be top-leveled if Peer.close() was called before the underlying channel closed.
StateError could be top-leveled if
Peer.close() was called before the underlying channel closed.Breaking change: all constructors now take a StreamChannel rather than a Stream/StreamSink pair.
Breaking change: all constructors now take a StreamChannel rather than a
Stream/StreamSink pair.
Client.sendRequest() and Client.sendNotification() no longer throw
StateErrors after the connection has been closed but before Client.close()
has been called.
The various close() methods may now be called before their corresponding
listen() methods.
The various close() methods now wait on the result of closing the underlying
StreamSink. Be aware that in some circumstances
StreamControllers' Sink.close() futures may never complete.
Add Client.isClosed and Server.isClosed, which make it possible to synchronously determine whether the connection is open. In particular, this makes i
Add Client.isClosed and Server.isClosed, which make it possible to
synchronously determine whether the connection is open. In particular, this
makes it possible to reliably tell whether it's safe to call
Client.sendRequest.
Fix a race condition in Server where a StateError could be thrown if the
connection was closed in the middle of handling a request.
Improve stack traces for error responses.
Update the README to match the current API.
Add a deepCopyLinks argument to copyPath and copyPathSync .
deepCopyLinks argument to copyPath and copyPathSync.@visibleForTesting annotation from SharedStdIn.SharedStdIn.new.
AnsiCode and AnsiCodeType marked final. ThesefinalexpectApiSummaryClean, ApiSummaryFormat, andApiSummaryVerificationException to support one-liner golden file verificationdart test (e.g. test('api_summary', expectApiSummaryClean);).--write (-w), --check (-c), and --output (-o) flags to theapi_summary CLI executable.Initial stable release.
Add a Client class for communicating with external JSON-RPC 2.0 servers.
Add a Peer class that's both a Client and a Server.
Remove Server.handleRequest() and Server.parseRequest(). Instead, new Server() takes a Stream and a StreamSink and uses those behind-the-scenes for it
Remove Server.handleRequest() and Server.parseRequest(). Instead, new Server() takes a Stream and a StreamSink and uses those behind-the-scenes
for its communication.
Add Server.listen(), which causes the server to begin listening to the
underlying request stream.
Add Server.close(), which closes the underlying request stream and response
sink.
Nothing published for this version
Nothing published for this version
Fix error response to include data from RpcException when not a map.
RpcException when not a map.Widen the version constraint for stack_trace.
stack_trace.Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →