PackageTrack
Sign in Get early access

atproto

The most famous and powerful Dart/Flutter library for AT Protocol.

2.5.0 5.6K downloads/mo #3672 most downloaded on pub.dev myConsciousness/atproto.dart

What this package is like to depend on

Last release 15 days ago

09 Aug 2026

Release timing varies

gaps range from 8 days to 3 months

Nearly every release is documented

notes for 124 of 125 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

136 releases · first in 2023

29 releases in the last 12 months

see the full history below

Release timeline

136 releases · Mar 2023 to Aug 2026
2024 2025 2026
Release Pre-release

Releases

latest 60 of 136
  1. 2.5.0 09 Aug 2026
    Release notes
    • feat: added Firehose, a durable com.atproto.sync.subscribeRepos consumer. It connects, hands each decoded message to a handler, reconnects with exponential backoff and jitter when the relay drops the connection, and — the part that was missing — persists how far it got so a restart resumes instead of skipping to the live edge. subscribeReposAsMessages is unchanged; Firehose is a layer on top of it, not a replacement.
    • feat: added CursorStore (with an InMemoryCursorStore default), the injection point for durable cursor storage, matching the OAuthStateStore / OAuthSessionStore / DPoPNonceCache pattern. delete() is part of the interface because a relay answers a cursor that is ahead of its own stream with FutureCursor on every reconnect: without a way to discard the cursor, a consumer that has read past its relay never recovers.
    • feat: Firehose takes a handler rather than exposing a Stream. A stream can only report when a message was delivered, never when the consumer finished with it, so advancing the cursor on delivery would lose everything in flight when a process dies — the exact loss a persisted cursor exists to prevent. The completion of the handler's future is the only evidence a message was handled, so delivery is at-least-once and handlers should be idempotent.
    • feat: cursor writes are batched (flushEveryEvents, default 100; flushEveryInterval, default 5s) because the full-network firehose runs at hundreds to thousands of events per second and a write per message would put the store on the hot path. The replay window after a crash is bounded by those same settings, and a flush is forced before every reconnect and on stop().
    • feat: an #info OutdatedCursor is surfaced through onError as FirehoseOutdatedCursorException instead of passing silently. It means the relay no longer holds the requested cursor and resumed from the oldest event it does hold, so events have already been lost — without the signal the caller has no way to notice the gap.
    Open source →
  2. 2.4.2 08 Aug 2026
    Release notes
    • fix: ATProto.fromOAuthSession passes its timeout through to the OAuthSessionManager it builds, so a hung restore or refresh is bounded by the timeout the caller asked for instead of running unbounded.
    Open source →
  3. 2.4.1 29 Jul 2026
    Release notes
    • feat: added com.atproto.server.describeServer.output.blobUploadLimit
    • chore: regenerated from synced lexicons
    Open source →
  4. 2.4.0 26 Jul 2026
    Release notes
    • chore: bump atproto_core to ^2.4.0, picking up the decodeCar CAR-header validation, the true 5xx status code on RetryContext, the stale-401 refresh short-circuit and ServiceContext.withAdditionalHeaders.
    Open source →
  5. 2.3.0 26 Jul 2026
    Release notes
    • feat: added ATProto.actorDid, surfacing ServiceContext.actorDid so callers can ask which actor a client is authenticated as without branching on the auth kind. Named actorDid rather than repo, which is already the com.atproto.repo.* service on this class.
    • docs: fromOAuth now records that one shared OAuthSessionManager is what makes several clients share a session, and fromOAuthSession that it mints a fresh manager per call. Two managers restored from one OAuthSession do not merely fail to share: because a rotating refresh token is only honoured once, they revoke each other, surfacing OAuthSessionRevokedException from a session that was valid.
    • chore: bump atproto_core to ^2.3.0.
    Open source →
  6. 2.2.1 22 Jul 2026
    Release notes
    • chore: widen atproto_core to ^2.2.0 and xrpc to ^1.1.3.
    Open source →
  7. 2.2.0 21 Jul 2026
    Release notes
    • feat: added ATProto.onSessionUpdated, surfacing ServiceContext.onSessionUpdated so callers can re-persist credentials rotated by an automatic refresh. Without it an app that persists the session it constructed the client with ends up storing a spent refresh token, since refresh tokens are single-use.
    • chore: bump atproto_core to ^2.1.0.
    Open source →
  8. 2.1.0 21 Jul 2026
    Release notes
    • feat: added ATProto.ctx, exposing the ServiceContext that backs every service. A wrapping client can now drive its own services from the same context instead of constructing a second one, which is required for correct session refresh because refresh tokens are single-use.
    Open source →
  9. 2.0.1 16 Jul 2026
    Release notes
    • docs: documented OAuth authentication in the README — ATProto.fromOAuth(OAuthSessionManager), ATProto.fromOAuthSession(session, {oauthClient}), and the renamed oAuthSessionManager getter.
    • docs: the Firehose section now shows the recommended typed atproto.sync.subscribeReposAsMessages() API, keeping the raw subscribeRepos() + SyncSubscribeReposAdaptor path as the advanced alternative.
    • docs: noted that retryConfig accepts any RetryStrategy, with RetryStrategy/RetryContext/RetryReason re-exported from core.dart.
    • chore: bump atproto_core to ^2.0.1 and xrpc to ^1.1.2.
    Open source →
  10. 2.0.0 16 Jul 2026
    Release notes
    • feat!: ATProto.fromOAuth(OAuthSessionManager). fromOAuthSession(session, {oauthClient}) now wraps a manager (pass oauthClient for auto-refresh); the oAuthSession getter is replaced by oAuthSessionManager.
    • fix: export Subscription, SyncServiceImpl, and WebSocketChannelFactory so subscription/sync return types are usable without a direct atproto_core/xrpc dependency.
    • fix: automatic session refresh preserves email/emailConfirmed/emailAuthFactor.
    • feat: the retryConfig parameter now accepts any RetryStrategy, not only RetryConfig, so callers can fully customize backoff and which failures retry. RetryStrategy/RetryContext/RetryReason are re-exported. By default a procedure (POST) is no longer retried after an ambiguous failure the server may already have applied (see atproto_core).
    Open source →
  11. 1.7.0 13 Jul 2026
    Release notes
    • feat: added atproto.sync.subscribeReposAsMessages(), a Firehose subscription that yields already-decoded, typed USyncSubscribeReposMessages (CBOR/CAR-decoded blocks, normalized ops/commit/prevData CID links) instead of raw Uint8List frames. The existing subscribeRepos() (raw bytes) is unchanged, and a frame that fails to decode surfaces as a stream error without terminating the subscription.
    • feat: package:atproto/firehose.dart now re-exports the com.atproto.sync.subscribeRepos message types, so a single import provides the adaptors, the typed USyncSubscribeReposMessage, and its isCommit/commit accessors.
    Open source →
  12. 1.6.0 13 Jul 2026
    Release notes
    • feat: automatic access-token refresh in ATProto.fromSession (wired through com.atproto.server.refreshSession); atproto.session reflects the new credentials. fromOAuthSession is untouched, and all new parameters are optional (non-breaking).
    • fix!: hardened the Firehose against hostile input — removed the ref int-list heuristic in cid_links that allowed any network user to crash every Firehose consumer by publishing a record containing "ref": [1,2,3] (A-3).
    • fix: #commit prevData/prev CID links are now converted, so sync v1.1 commits no longer degrade to unknown (A-1).
    • fix: #sync frame blocks are decoded into a typed Sync event (account migration/recovery) (A-2).
    • fix: Firehose error frames (op == -1, e.g. FutureCursor/ConsumerTooSlow) now surface as a typed FirehoseErrorException, and text frames raise a typed FirehoseFrameException instead of a TypeError (A-8/A-10).
    • fix: CAR decode failures are surfaced instead of being silently turned into an empty map (A-9).
    • fix: protocol is now forwarded in create/refresh/deleteSession (A-7).
    • chore: removed dead, unexported repo adaptors (A-5/A-6/A-12) and regenerated services from the fixed lex_gen ($type injection, UTC datetime, required+nullable serialization).
    • chore: removed the internal, unexported convertCidLinks no-op (and its call in the firehose adaptor) — CID links and byte strings are already normalized by decodeCar in atproto_core.
    • fix!: regenerated from the fixed lex_gen — a string field with both knownValues and a default is now non-nullable and carries its spec default instead of reporting null: com.atproto.label.defs#labelValueDefinition.defaultSetting (warn) and com.atproto.admin.getInviteCodes.sort (recent). The corresponding hasX/hasNotX getters were removed (G-18).
    • chore: bump atproto_core to ^1.3.0.
    Open source →
  13. 1.5.1 10 Jul 2026
    Release notes
    • chore: bump atproto_core to ^1.2.2.
    Open source →
  14. 1.5.0 09 Jul 2026
    Release notes
    • feat: added com.germnetwork.declaration record.
    Open source →
  15. 1.4.3 25 May 2026
    Release notes
    • core: generated code. (#2350)
    Open source →
  16. 1.4.2 20 May 2026
    Release notes
    • core: generated code. (#2333)
    Open source →
  17. 1.4.1 20 Feb 2026
    Release notes
    • fix: optional jwt scope and auth identity. (#2224)
    Open source →
  18. 1.4.0 19 Feb 2026
    Release notes
    Open source →
  19. 1.3.0 20 Dec 2025
    Release notes
    Open source →
  20. 1.2.4 09 Nov 2025
    Release notes
    Open source →
  21. 1.2.3 19 Oct 2025
    Release notes
    • chore: Sync Lexicon Data. (#2165)
    Open source →
  22. 1.2.2 30 Sep 2025
    Release notes
    • FIX: Fixed type compatibility issues with AtUri parameters
      • Corrected service method calls to properly handle AtUri objects instead of strings
      • Improved type safety in API parameter handling
    Open source →
  23. 1.2.1 30 Sep 2025
    Release notes
    • IMPROVEMENT: Enhanced union type classes with sealed class implementation
      • Union type classes are now generated as sealed classes instead of abstract classes
      • Enabled Dart's exhaustiveness checking for switch statements on union types
      • Improved compile-time safety by ensuring all union cases are handled
      • Prevents runtime errors from unhandled union variants through static analysis
    Open source →
  24. 1.2.0 25 Sep 2025
    Release notes
    • feat: Added Admin and Lexicon services to ATProto
      • Added AdminService for com.atproto.admin.* endpoints
      • Added LexiconService for com.atproto.lexicon.* endpoints
      • Enhanced AT Protocol service coverage with comprehensive admin and lexicon functionality
    Open source →
  25. 1.1.1 25 Sep 2025
    Release notes
    • MIGRATION: Updated to use the consolidated at_primitives package for all AT Protocol primitive types.
    • IMPROVEMENT: Simplified dependency management by adopting unified primitive types from at_primitives.
    Open source →
  26. 1.1.0 11 Sep 2025
    Release notes
    • feat: Version bump to v1.1.0 to reflect enhanced AT Protocol capabilities
      • Minor version bump appropriate for new com.atproto.temp.dereferenceScope endpoint
      • Maintains compatibility while signaling new functionality
    Open source →
  27. 1.0.10 11 Sep 2025
    Release notes
    • chore: Update source files automatically (#2117)
      • Added new com.atproto.temp.dereferenceScope endpoint for temporary scope dereferencing operations
      • Generated corresponding service methods, input/output types, and documentation
      • Enhanced AT Protocol temporary service capabilities
    Open source →
  28. 1.0.9 07 Sep 2025
    Release notes
    • BREAKING CHANGE: Enhanced lexicon known values naming with proper camelCase convention
      • Enum values now use consistent namespaced naming (e.g., reasonAppealtoolsOzoneReportDefsReasonAppeal)
      • Improved code generation for lexicon fragments and full URIs
      • Updated test cases to match new enum naming convention
    • feat: Added support for lexicon fragment-only values (starting with '#')
    • feat: Enhanced lexicon generation with context-aware naming based on lexicon ID
    • fix: Improved enum naming consistency across all generated lexicon types
    Open source →
  29. 1.0.8 02 Sep 2025
    Release notes
    Open source →
  30. 1.0.7 10 Aug 2025
    Release notes
    • fix: Drop universal_io for WASM compatibility.
    Open source →
  31. 1.0.6 10 Aug 2025
    Release notes
    • chore: fix WARNING: The annotation 'JsonSerializable.new' can only be used on classes..
    Open source →
  32. 1.0.5 09 Aug 2025
    Release notes
    • Add service functions. Endpoints can be easily called as functions like comAtprotoIdentityResolveDid
    • Expose ServiceContext from core library.
    Open source →
  33. 1.0.4 06 Aug 2025
    Release notes
    • chore: Removed outdated processes.
    • fix: Use @JsonSerializable(includeIfNull: false) for lex gen objects.
    • Add accessors that are useful when using records.
      • supports get, list, create, put and delete operations for each record.
    Open source →
  34. 1.0.3 30 Jul 2025
    Release notes
    • chore: Update source files automatically. (##2081)
    Open source →
  35. 1.0.2 30 Jul 2025
    Release notes
    • Fix SDK constraint to '">=3.8.0 <4.0.0"'.
    Open source →
  36. 1.0.1 28 Jul 2025
    Release notes
    • Improved firehose conversion process. Use SyncSubscribeReposAdaptor to convert byte data from subscribeRepos.
    • Now the endpoint argument $unknown cannot override a known field. (#2068)
    Open source →
  37. 1.0.1-legacy 28 Jul 2025 pre-release

    Nothing published for this version

  38. 1.0.0 18 Jul 2025
    Release notes
    • Bump SDK constraint to '^3.8.0'.
    • Fully replaced with objects generated based on lexicons.
    Open source →
  39. 1.0.0-preview.4 19 Sep 2024 pre-release

    Nothing published for this version

  40. 1.0.0-preview.3 04 Sep 2024 pre-release

    Nothing published for this version

  41. 1.0.0-preview.2 22 Aug 2024 pre-release

    Nothing published for this version

  42. 1.0.0-preview.1 09 Jul 2024 pre-release

    Nothing published for this version

  43. 1.0.0-preview.0 04 Jul 2024 pre-release

    Nothing published for this version

  44. 1.0.0-legacy 24 Jul 2025 pre-release

    Nothing published for this version

  45. 0.13.3 07 Dec 2024
    Release notes
    • Bump xrpc.
    Open source →
  46. 0.13.2 27 Nov 2024
    Release notes
    • Expose JwtExtension.
    Open source →
  47. 0.13.1 19 Nov 2024
    Release notes
    • Retry if a DPoP nonce error occurs during the execution of OAuthClient.refresh.
    • Add restoreOAuthSession function.
    Open source →
  48. 0.13.0 16 Nov 2024
    Release notes
    • Expose atproto_oauth package.
    • Add .fromOAuthSession constructor on ATProto.
    • Rename AuthToken to Jwt.
      • Change type of scope from enum to String
      • Rename subject to sub
      • Rename expiresAt to exp
      • Rename issuedAt to iat
    • Rename extended getters on Session
      • From accessToken to accessTokenJwt
      • From refreshToken to refreshTokenJwt
    Open source →
  49. 0.12.8 04 Nov 2024
    Release notes
    • Bump atproto_core.
    • Add service parameter on ATProto.get and ATProto.post. (#1783)
    • Add exp and lxm parameters on ServerService.getServiceAuth.
    Open source →
  50. 0.12.7 03 Jul 2024
    Release notes
    • Fixed a bug that prevented RepoService.deleteRecord from working.
    Open source →
  51. 0.12.6 02 Jul 2024
    Release notes
    • Bump atproto_core.
    Open source →
  52. 0.12.5 01 Jul 2024
    Release notes
    • Expose .atprotoPdsEndpoint from as an extension of Session. You can get specific pds endpoint based on did document.
    Open source →
  53. 0.12.4 01 Jul 2024
    Release notes
    • Expose .accessToken and .refreshToken as an extension from Session.
    Open source →
  54. 0.12.3 01 Jul 2024
    Release notes
    • Change the type .collection property from String to NSID on AtUri. You need to do .collection.toString() when you want a string of collection. (#1551)
    • The package was refactored as follows.
      • package:bluesky/atproto.dart => atproto features
      • package:bluesky/core.dart => core features
    Open source →
  55. 0.12.2 09 Jun 2024
    Release notes
    • The service is automatically resolved from the DID Document of the given Session. (#1543)
      • If no authentication is performed and no Session is passed, the default bsky.social is used.
      • If the user passes a specific service, it always respects the value of the user's service.
      • If something wrong happens for some reason, it uses bsky.social as default.
    Open source →
  56. 0.12.1 06 Jun 2024
    Release notes
    • Fixed a bug that prevented toJson on freezed objects from atproto_core.
    Open source →
  57. 0.12.0 03 Jun 2024
    Release notes
    • Add .active and .status properties on Session and CurrentSession objects. (#1516)
    • Move BlobConverter, Blob, BlobRef from atproto package to atproto_core.
    • Add .active and .status properties on Repo object. (#1517)
    • Add .getRepoStatus method on SyncService. (#1517)
    • Applied naming convention based on lexicons on following objects.
      • SubscribedRepoCommit -> Commit
      • SubscribedRepoIdentity -> Identity
      • SubscribedRepoHandle -> Handle
      • SubscribedRepoMigrate -> Migrate
      • SubscribedRepoTombstone -> Tombstone
      • SubscribedRepoInfo -> Info
      • Account -> CreateAccountOutput
    • Add account event on SyncService.subscribeRepos. (#1517)
    Open source →
  58. 0.12.0-preview.3 01 Feb 2024 pre-release

    Nothing published for this version

  59. 0.12.0-preview.2 29 Jan 2024 pre-release

    Nothing published for this version

  60. 0.12.0-preview.1 22 Jan 2024 pre-release

    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