Skip to content

Releases: ably/ably-pubsub-js

v2.29.0

Choose a tag to compare

@VeskeR VeskeR released this 23 Sep 14:22
acd5af4

Full Changelog: 2.28.0...2.29.0

What's Changed

  • Add PresenceMessage.memberKey, the key that uniquely identifies a presence member by its connectionId and clientId #2302
  • Respond to server PING protocol messages with a PONG, and request heartbeats=bounce in browsers, React Native and NativeScript. Liveness is now confirmed by the SDK itself rather than by the underlying WebSocket, which can keep answering ping frames while the app is suspended #2307
  • Fix IPv6 hosts missing their square brackets in constructed URIs #2300
  • Reject annotation publish and delete calls that are missing a type #2299
  • LiveObjects: fail a pending get() sync wait when the channel enters DETACHED, SUSPENDED or FAILED, rather than waiting indefinitely #2284
  • LiveObjects: suppress update events for no-op diffs, and skip the sync wait when resolving an empty synthetic list #2288
  • LiveObjects: report error 92000 with HTTP status 400 rather than 500 #2290

v2.28.0

Choose a tag to compare

@SimonWoolf SimonWoolf released this 24 Aug 13:00
25058b0

Full Changelog: 2.27.0...2.28.0

What's Changed

  • Roll out e2e encryption of data payloads on annotations. They were previously a message type whose publish path deliberately did not apply the channel's encryption (and were documented accordingly), but the reasons for this no longer apply, so there is no reason now not to enable e2e encryption on annotation payloads. #2277

v2.27.0

Choose a tag to compare

@VeskeR VeskeR released this 10 Aug 17:38
c3d0605

Full Changelog: 2.26.0...2.27.0

What's Changed

  • Fall back to the base transport when a proxy rejects the WebSocket handshake outright, rather than reporting disconnected after exhausting every host #2285
  • Move connection resumability decisions from the client to the server: Connection#id, Connection#key and a channel's channelSerial are retained through SUSPENDED, and reconnection always attempts a resume. Connection#createRecoveryKey() consequently returns a recovery key in SUSPENDED, where it previously returned null #2273
  • Fix a resumed attach advancing the channel's attach serial, which broke the contiguity of untilAttach history with the realtime message stream #2276
  • Fix stale presence members surviving when a new presence sync replaces one still in progress #2261
  • Expand the docstrings on Auth, RealtimeChannel, RealtimePresence, RealtimeAnnotations and RestAnnotations to cover prerequisites, side effects and failure modes, and link the REST Channel and Presence members to their reference pages #2242 #2243 #2244 #2245 #2282

v2.26.0

Choose a tag to compare

@ttypic ttypic released this 23 Jul 17:14
bbf10f6

Full Changelog

What's Changed

  • Add push.updateToken() to update the device's push token on React Native after the underlying push platform rotates it, keeping the device registration in sync with Ably #2267
  • Add a useObject React hook for subscribing to LiveObjects state #2259
  • PathObject.instance() method now returns undefined only if nothing exists at that path. It wraps whatever value resolves there: a LiveMap, a LiveCounter, or a primitive value. A primitive-backed Instance is read-only: it has no id and exposes the primitive via value().

v2.25.0

Choose a tag to compare

@ttypic ttypic released this 17 Jul 14:45
dfa453a

Full Changelog

What's Changed

  • Add push notification support for React Native via the new ably/react-native-push plugin. Adds an asynchronous client.getDevice() and deprecates the synchronous client.device() #2262
  • Surface previously silent failures when channel modes are missing: presence.get() without the presence_subscribe mode and channel.subscribe() without the subscribe mode now log an error, or throw when the new strictMode client option is enabled #2236

v2.24.0

Choose a tag to compare

@ttypic ttypic released this 09 Jul 09:53
a398ce3

What's Changed

  • Add iOS Live Activity support via APNs broadcast channels: push.admin.createApnsBroadcast and push.admin.liveActivity (start/update/end) #2253
  • Fix: use error code 40106 for missing credentials #2254

v2.23.0

Choose a tag to compare

@VeskeR VeskeR released this 19 Jun 14:03
13bd25d

Full Changelog: 2.22.1...2.23.0

What's Changed

  • Allow omitting channelName in the React channel hooks to use the nearest ChannelProvider #2248
  • Fix presence auto-reenter causing "Unable to perform operation on channel" NACKs after reconnecting from a transient disconnect; presence operations are now queued at the channel level until the channel next re-attaches #2241

v2.22.1

Choose a tag to compare

@VeskeR VeskeR released this 08 Jun 16:33
2a0eae5

Full Changelog: 2.22.0...2.22.1

What's Changed

  • Fix v1-callback deprecated overloads breaking mock assignment by changing return type from never to void #2239

v2.22.0

Choose a tag to compare

@VeskeR VeskeR released this 05 Jun 16:59
402e5e1

Full Changelog: 2.21.0...2.22.0

What's Changed

  • Make agent channel option additive in React hooks #2237
  • Add missing RestAnnotation#delete typings #2218
  • Throw on legacy v1 ably/promises and ably/callbacks imports #2227
  • Mark v1 callback API as deprecated and throw on v1 callback shapes #2226
  • Mark public ObjectMessage.id and .timestamp as optional #2230
  • Change channels#release semantics to implicit detach rather than error on unexpected channel state #2190
  • Bump ws to 8.20.1 to resolve security advisory #2225

v2.21.0

Choose a tag to compare

@VeskeR VeskeR released this 19 Mar 11:56
17be43e

Full Changelog: 2.20.0...2.21.0

What's Changed

New features

  • Add LiveObjects REST client: channel.object is now available on REST channel instances, exposing get() to read object state, publish() to send object operations, and generateObjectId() to create object IDs on the client side for atomic batch operations with cross-references between newly created objects #2109