xrpc
Core library for XRPC communication. This is a wrapped HTTP client for AT Protocol.
1.1.3
4.5K downloads/mo
#4013 most downloaded on pub.dev
myConsciousness/atproto.dart
What this package is like to depend on
Last release 1 months ago
22 Jul 2026
Ships unpredictably
gaps range from 8 days to 10 months
Nearly every release is documented
notes for 47 of 47 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
49 releases · first in 2023
5 releases in the last 12 months
see the full history below
Release timeline
49 releases · Mar 2023 to Jul 2026
2024
2025
2026
Releases
latest 49-
1.1.322 Jul 2026 -
1.1.216 Jul 2026Release notes
Open source →- docs: rewrote the README example, which imported non-existent
atproto.Session/atproto.CurrentSessionand used fictional NSIDs; it now matches the workingexample/example.dart(server.atproto.com/createSession/getSession, noatprotoimport). - docs: documented the streaming API (
subscribe<T>returning anXRPCResponse<Subscription<T>>) with a minimal usage snippet. - chore: bump
at_primitivesto^1.1.1.
- docs: rewrote the README example, which imported non-existent
-
1.1.116 Jul 2026Release notes
Open source →- fix: procedure/record request bodies no longer drop legitimately empty collections (e.g.
threadgate.allow: []); onlynullvalues are stripped. Query parameters are unchanged. This now also covers thehttp.postbody path (previously it still pruned empty[]/{}). - fix:
subscribepropagates backpressure and cancellation to the underlying WebSocket, preventing unbounded buffering on slow consumers (firehose) and socket leaks. - fix:
subscribeno longer drains the WebSocket before a consumer listens — the underlying subscription starts paused and resumes on the first listen, so a consumer that delays or never listens cannot buffer firehose frames unboundedly. - fix:
RateLimit.waitUntilReset()caps its delay at 60s, so a hostile or misconfigured far-futureRetry-AfterHTTP-date can no longer hang the caller indefinitely. - fix: an empty
200response body with atoconverter now yieldsEmptyDatainstead of throwing a rawFormatException. - fix: blob uploads fall back to
application/octet-stream(was*/*) when the content type cannot be sniffed.
- fix: procedure/record request bodies no longer drop legitimately empty collections (e.g.
-
1.1.013 Jul 2026Release notes
Open source →- fix:
subscribe()now closes itsStreamController, propagates WebSocket errors viaaddError, and always deliversdone, so a server disconnect no longer hangsawait forforever or leaks the controller. - fix: non-JSON error bodies (e.g. an HTML
502from a proxy or an empty429) fall back to a typed exception instead of throwing aFormatException, so typed errors and retries keep working. - fix!:
409 Conflictis no longer treated as a success and its body is no longer parsed as a data model. - fix: unknown HTTP status codes (e.g. Cloudflare
520) map toHttpStatus.unknowninstead of throwingUnsupportedErrorwhile building the error response. - fix:
_buildWsUrinow uses theUribuilder (percent-encoding, repeated list params, ISO8601 UTC), so multi-valued subscription params produce a valid URL. - fix: rate-limit header parsing is now defensive (
tryParse, unlimited fallback), so a malformed header no longer turns a successful response into a crash. - fix:
RateLimit.fromHeadersnow honors theRetry-Afterheader (delta-seconds and HTTP-date forms) when usableratelimit-*headers are absent, soisExceededandwaitUntilReset()respect the backoff of a429relayed by a proxy that strips theratelimit-*headers. - fix: the optional
ratelimit-policyheader is no longer required to parse rate limit info; responses carrying onlyratelimit-limit/ratelimit-remaining/ratelimit-resetare now parsed instead of being treated as unlimited. - feat: injectable
http.Clientfor connection reuse (non-breaking), plus aprocedureadaptor param andsubscribeprotocol param. - chore: bump
at_primitivesto^1.1.0.
- fix:
-
1.0.325 Sep 2025Release notes
Open source →- MIGRATION: Updated to use the consolidated
at_primitivespackage for AT Protocol primitive types. - IMPROVEMENT: Reduced dependency complexity by adopting unified primitive types.
- MIGRATION: Updated to use the consolidated
-
1.0.230 Jul 2025 -
1.0.128 Jul 2025 -
1.0.1-legacy28 Jul 2025 pre-releaseNothing published for this version
-
1.0.018 Jul 2025 -
1.0.0-legacy24 Jul 2025 pre-releaseNothing published for this version
-
0.6.107 Dec 2024 -
0.6.016 Nov 2024 -
0.5.304 Nov 2024 -
0.5.222 Feb 2024 -
0.5.118 Feb 2024Release notes
Open source →- Improved redundant error messages. Now it shows like
GET https://bsky.social/xrpc/com.atproto.identity.resolveHandle 400 Error: Params must have the property "handle". (#1253) - Added
parametersarg on.postand.procedure. (#1252) - Removed
.uploadfromxrpc. You can upload from.procedureand pass bytes tobody. (#1252)
- Improved redundant error messages. Now it shows like
-
0.5.027 Jan 2024Release notes
Open source →- Renamed types. (#1217)
- From
TotoResponseDataBuilder - From
ResponseAdaptortoResponseDataAdaptor
- From
- Renamed types. (#1217)
-
0.4.530 Dec 2023 -
0.4.429 Dec 2023 -
0.4.321 Dec 2023 -
0.4.219 Dec 2023 -
0.4.115 Nov 2023Release notes
Open source →- Added
.postfunction. (#999) - Use
bsky.networkas default when service is missing for.subscribefunction.
- Added
-
0.4.009 Nov 2023 -
0.3.331 Oct 2023 -
0.3.217 Sep 2023 -
0.3.118 Aug 2023 -
0.3.013 Aug 2023Release notes
Open source →- Drop support for null unsafe Dart, bump SDK constraint to '^3.0.0'. (#599)
- Dart3 modifier applied.
-
0.2.208 Aug 2023 -
0.2.109 Jul 2023Release notes
Open source →- Allows
Map<String, dynamic>to be specified for generics, allowing response data to be retrieved as JSON. (#563)
- Allows
-
0.2.027 Jun 2023 -
0.1.414 Jun 2023 -
0.1.305 Jun 2023 -
0.1.203 Jun 2023Release notes
Open source →- Added
decoderparameter insubscribeand delegate data decoding to the responsibility of the app that usesxrpc. (#472)
- Added
-
0.1.131 May 2023 -
0.1.017 May 2023 -
0.0.1405 May 2023 -
0.0.1319 Apr 2023Release notes
Open source →- Supported
protocoloptions inquery,procedure,upload. You can choosehttpas a protocol for your test locally. Defaults tohttps. (#269)
- Supported
-
0.0.1215 Apr 2023 -
0.0.1115 Apr 2023 -
0.0.1015 Apr 2023 -
0.0.913 Apr 2023 -
0.0.813 Apr 2023 -
0.0.709 Apr 2023 -
0.0.630 Mar 2023 -
0.0.526 Mar 2023 -
0.0.426 Mar 2023 -
0.0.323 Mar 2023 -
0.0.223 Mar 2023 -
0.0.122 Mar 2023 -
0.0.018 Mar 2023