Fix
The 4.2.1 release upgrades Guava to 33.7.2-jre to address security vulnerability CVE-2026-102554. There are no other changes.
For the full changelog, please visit the GitHub release page.
The 4.2.1 release upgrades Guava to 33.7.2-jre to address security vulnerability CVE-2026-102554. There are no other changes.
For the full changelog, please visit the GitHub release page.
Ably now prices on monthly active users (MAUs). What you pay is set by how many people use your app each month, not by connection minutes, messages or channels. MAU packages are available to new accounts from today, and the Free package covers 500 MAUs. See the pricing page for packages and prices.
Build more, pay the same The price doesn’t change with which products your users use or how much they use them, within the fair usage that comes with every package. Add Chat, LiveObjects, Spaces, push notifications or AI Transport and your bill stays where it was.
How MAUs are counted
An MAU is a unique end user of an Ably app in a calendar month, counted once however often they come back. A user is active if they open a realtime connection or make a REST request.
Users are identified by clientId. On MAU pricing, all end-user traffic needs one.
MAUs are counted per app and added up across your account. Development, staging and test apps all count. Servers aren’t counted as MAUs and don’t need a clientId. The messages, connections and bandwidth they generate still count towards your package’s fair usage.
If you’re an existing customer
Nothing changes unless you want it to. You stay on your current package, limits and terms. If you'd like to switch to MAU pricing, first update to the latest Ably SDK and set a clientId on your end-user connections, so your users are counted correctly. Then opt in from your dashboard at any time. If you have a managed contract, talk to your customer success manager.
Read more in the announcement blog post and the migration guide.
The 4.2.0 release moves the Ably Kafka Connector onto Ably Pub/Sub Java v2. It replaces io.ably:ably-java 1.6.0 with io.ably.pubsub:server 2.0.0, so the connector publishes as a server.
It also adds the client.endpoint setting. client.rest.host and client.environment are deprecated and now map to the endpoint.
For the full changelog, please visit the GitHub release page.
The 2.0.0 release gets the CLI ready for MAU pricing. The CLI now connects as a server, which isn't counted as an MAU, and acts as one stable client ID that you can see in the "Using:" banner and choose with --client-id. Previously every command connected as a new random client ID, so a single terminal session could look like dozens of users.
The CLI is now built on @ably/pubsub-server 3.0.0, @ably/chat 2.0.0 and @ably/spaces 0.6.0. ably apps rules create now takes a match expression such as chat:*, working the same way as the rules the dashboard creates, and long-running commands exit with a non-zero code when their connection fails.
Please refer to Client Identity for how the CLI chooses its client ID.
For the full changelog, please visit the GitHub release page.
The 0.11.0 release moves AI Transport onto Ably Pub/Sub JS v3. Create your agent's client from @ably/pubsub-server and your users' clients from @ably/pubsub-device, so each side of the conversation is counted correctly.
It also adds decoders for applications that read the channel through their own Pub/Sub client: createDecoder(codec), or vercelDecoder(), openaiDecoder() and agUiDecoder(), turn the messages you receive into the same deliveries the transport gives.
Every message now carries its codec's name and id, so 0.11.0 doesn't decode messages published by 0.10.0. A 0.10.0 subscriber still decodes what 0.11.0 publishes, so upgrade your subscribers and publishers together.
Please refer to the migration guide for the full details, including a list of all breaking changes and instructions on how to address them.
For the full changelog, please visit the GitHub release page.
The 0.6.0 release moves the Spaces SDK onto Ably Pub/Sub JS v3, which is split by where your code runs: @ably/pubsub-device for a browser or mobile app, and @ably/pubsub-server for your own infrastructure. The Spaces SDK works with a client from either package, so you install the one that matches your side alongside @ably/spaces.
Spaces clients are now created with createSpacesClient(client) instead of new Spaces(client), and the React SpacesProvider is renamed SpacesClientProvider. Node.js 22 or later is required.
Please refer to the upgrade guide for the full details, including a list of all breaking changes and instructions on how to address them.
For the full changelog, please visit the GitHub release page.
The 0.1.0 release moves the Models SDK onto Ably Pub/Sub JS v3. The Models SDK runs on end-user devices, so it works with a client from @ably/pubsub-device, installed alongside @ably-labs/models as a peer dependency.
Models clients are now created with the createModelsClient factory function, the ably option and getter are renamed pubsubClient, and Node.js 22 or later is required.
Please refer to the upgrade guide for the full details, including a list of all breaking changes and instructions on how to address them.
For the full changelog, please visit the GitHub release page.
The 0.4.0 release moves the Chat React UI Kit onto Chat SDK 2.0.0 and Ably Pub/Sub JS v3. It replaces the ably package with @ably/pubsub-device 3.0.0 and requires Node.js 22 or later. The TypingIndicators and RoomInfo components now use currentTypers, replacing the deprecated currentlyTyping.
For the full changelog, please visit the GitHub release page.
The 2.0.0 release moves the Chat SDK onto Ably Pub/Sub Cocoa v2, now published as ably-pubsub-cocoa. It is a device-side SDK, so a chat client built on it tells Ably that it runs on an end user's device.
Create the Pub/Sub client with PubSubDevice.createClient(options:) and the chat client with createChatClient(pubSubClient:clientOptions:), matching the Chat SDKs for other platforms. ChatClient.realtime is renamed pubSubClient, and macOS 12, iOS 15 or tvOS 15 or later is required.
Please refer to the ably-pubsub-cocoa v2 migration guide for the Pub/Sub changes.
For the full changelog, please visit the GitHub release page.
The 2.0.0 release moves the Chat SDK onto Ably Pub/Sub Java v2, which is split by where your code runs. The Chat SDK no longer bundles a Pub/Sub SDK, so you add io.ably.pubsub:device for an Android app or other end-user runtime, or io.ably.pubsub:server for your own infrastructure. The same Chat SDK artifact works with either.
The ChatClient(...) factory is renamed createChatClient(...) and takes a PubSubRealtimeClient, and ChatClient.realtime is renamed pubsubClient.
Please refer to the upgrade guide for the full details, including a list of all breaking changes and instructions on how to address them.
For the full changelog, please visit the GitHub release page.