Skip to content

Release 2.0.0 - #1257

Merged
ttypic merged 1 commit into
mainfrom
release/2.0.0
Oct 30, 2026
Merged

ttypic merged 1 commit into
mainfrom
release/2.0.0

Conversation

@ttypic

@ttypic ttypic commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

The 2.0.0 release makes it clear what to use on a device and what to use on a server. The SDK is now split by where your code runs. Depend on io.ably.pubsub:device for code that runs on an end user's device, such as an Android app or a desktop client, or io.ably.pubsub:server for code that runs on your own infrastructure. Each artifact offers only the clients that make sense on its side. The artifact names are also what coding assistants see in the dependency declaration and the builder call, so they get the choice right too.

v2 also removes the APIs and client options deprecated in v1.

Below is an overview of the major changes in this release.

Please refer to the upgrade guide for the full details, including a list of all breaking changes and instructions on how to address them.

Per-side artifacts

This repository no longer publishes io.ably:ably-java or io.ably:ably-android. Depend on exactly one artifact, for the side of the connection your code runs on:

  • io.ably.pubsub:device for code that runs on an end user's device: an Android app or a JVM desktop client. It is a Kotlin Multiplatform artifact; Maven consumers depend on io.ably.pubsub:device-jvm directly.
  • io.ably.pubsub:server for code that runs on infrastructure you operate. It offers both a realtime client, PubSubRealtimeClient, and an HTTP client, PubSubHttpClient.

Clients are created through builders instead of constructors: PubSubDevice.clientBuilder() from io.ably.pubsub:device, and PubSubServer.realtimeClientBuilder() and PubSubServer.httpClientBuilder() from io.ably.pubsub:server. build() hands the client a shallow copy of the options, so a builder can be reused without affecting clients already built.

Never depend on io.ably.pubsub:core or io.ably.pubsub:core-android directly. The remaining artifacts change group only and release in lockstep at the same version: liveobjects, network-client-core, network-client-default, network-client-okhttp and pubsub-adapter move from io.ably to io.ably.pubsub.

Client API naming

  • Packages move from io.ably.lib.* to io.ably.pubsub.*.
  • AblyRealtime is renamed PubSubRealtimeClient and AblyRest is renamed PubSubHttpClient.
  • Rest is renamed Http across the public API: io.ably.lib.rest.* moves to io.ably.pubsub.http.*, RestAnnotations is now HttpAnnotations, AblyBase is now PubSubBase and io.ably.lib.http.Http is now HttpRequester.
  • Log tags are class names, so they change with the packages.

Server clients and authentication

  • Requests identify as ably-pubsub-java/<version> instead of ably-java/<version> in the Ably-Agent header and the realtime agent parameter, with an ably-pubsub-server or ably-pubsub-device entry for the side.
  • Clients from PubSubServer declare themselves as servers. Authenticate them with an API key. A realtime connection with token authentication needs a token carrying the signed x-ably-clientType=server claim (today a JWT), otherwise it is rejected with error 40167.
  • When Ably asks a connected client to re-authenticate, the client emits UPDATE once renewAuth completes instead of before it has finished.

Push notifications

  • The Android push registration token type is persisted by name instead of by enum ordinal. A stored FCM token is migrated; a stored GCM token is discarded and the device registers with FCM again.

Removed APIs

  • The environment, restHost, realtimeHost and fallbackHostsUseDefault client options are removed in favour of endpoint. The default host moves to main.realtime.ably.net, so networks that restrict outbound traffic must allow *.realtime.ably.net and *.fallback.ably-realtime.com.
  • The AblyRealtime and AblyRest constructors, the CompletionListener publish overloads, Connection.recoveryKey, the ConnectionState-keyed Connection event methods, Channel.sync(), Auth.authorise, Auth.renew, ChannelOptions.fromCipherKey, TokenDetails.fromJSON, TokenRequest.fromJSON and RegistrationToken.Type.GCM are removed.
  • Channels.release() throws a checked AblyException (90011) unless the channel is INITIALIZED, DETACHED or FAILED.

Supported platforms changes

  • Support for Android API levels lower than 24 has been dropped.

Summary by CodeRabbit

  • Documentation
    • Updated the 2.0.0 changelog with its release date, links to the release and full changelog, and a migration overview.
    • The overview summarizes changes to artifacts, clients, builders, package and API names, server identity and authentication, re-authentication events, push-token persistence, removed APIs and options, the default host, and the minimum Android version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 47416c1c-058a-4e12-bded-1b01be3699a1
Commits

Reviewing files that changed from the base of the PR and between 05e01a2 and 780945e.

Files selected for processing: 1
  • CHANGELOG.md

Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review.

Walkthrough

The 2.0.0 changelog entry is dated 2026-10-30 and replaces the unreleased migration-guide summary with release notes covering artifacts and clients, API and package changes, authentication, push-token persistence, removed APIs and options, host changes, and the Android API 24 minimum.

Changes

2.0.0 release changelog

Layer / File(s) Summary
Document 2.0.0 changes
CHANGELOG.md
The dated release entry describes artifacts, clients, API changes, authentication, push-token persistence, removed APIs and options, host changes, and the Android API 24 minimum. It links to the release tag and full changelog.

Priority: Normal

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Feature

Possibly related issues

Possibly related PRs

Suggested reviewers: sacoo7

Merge Risk: Minimal · up to 78094

The release-note update has no identified merge-blocking issue and is ready to merge after normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title, "Release 2.0.0," accurately identifies the main change: documenting the 2.0.0 release and its breaking changes.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit reads the release notes bright,
New names and artifacts come to light.
The tokens find their names in store,
API changes line the shore.
One hop to two, the pages are set.

Comment @coderabbitai help to get the list of available commands.

@sacOO7 sacOO7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ttypic
ttypic merged commit c5b88d6 into main Oct 30, 2026
16 of 17 checks passed
@ttypic
ttypic deleted the release/2.0.0 branch October 30, 2026 13:47

This branch was successfully deployed

2 active deployments
staging/pull/1257/javadoc — 780945ea Deployed Oct 30, 2026 by github-actions[bot]
staging/pull/1257/features — 780945ea Deployed Oct 30, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants