Releases: ably/ably-js
v2.3.1
v2.3.0
With this release, ably-js clients can now be activated as a target for web push notifications. See our official docs for instructions on how to start publishing web push notifications using Ably.
- Add support for web push activation #1775
v2.2.1
v2.2.0
v2.1.0
With this release, Ably React Hooks have now moved to the general availability phase and are considered stable. Non-major version changes to the ably
package won't include breaking changes for React Hooks going forward.
All changes:
- Add support for optional multiple recovery scopes via
ClientOptions.recoveryKeyStorageName
#1762 - Add wildcard
*
andprivileged-headers
values forTokenParams.capability
field #1765 - Add support for unique
logHandler
per Ably client by removing the global effects of settinglogHandler
andlogLevel
#1764 - Change
updateStatus
function returned byusePresence
hook to be async #1777 - Fix some of the errors thrown by
ConnectionManager
have misleading stack traces #1760 - Fix
FetchRequest
doesn't properly handle a 204 response #1773 - Fix
Connection closed
errors when usingusePresence
hook #1761 - Fix
Unable to enter presence channel while in suspended state
errors withusePresence
#1781 - Fix
Can't resolve 'ably'
error for environments that don't supportexports
field inpackage.json
yet #1782
v2.0.4
v2.0.3
- Improve error message displayed when trying to use
Ably.Realtime
instance in the Vercel Edge runtime #1736 - Fix to allow
ErrorInfo
export to be accessed as a named export in ESM and when using commonjs interop #1741 - Fix
ReferenceError: self is not defined
error when running Jest tests in React Native using ably-js #1738 - Fix
httpMaxRetryDuration
client option didn't actually limit max elapsed time for rest fallback host retries #1721 - Fix default value for
httpRequestTimeout
client option was wrongly 15 seconds instead of expected 10 seconds #1721
v2.0.2
v2.0.1
v2.0.0
The 2.0.0 release introduces a number of new features and QoL improvements, including a new way to remove bloat and reduce the bundle size of your ably-js client, first-class support for Promises, a more idiomatic approach to using ably-js' React Hooks, enhancements to TypeScript typings, and more.
Below is an overview of the major changes in this release.
Please refer to the ably-js v2 lib migration guide and React Hooks migration guide for the full details, including a list of all breaking changes and instructions on how to address them.
Bundle Size Reduction
The default bundle size for the web has been reduced by ~32% compared to v1 - from 234.11 KiB to 159.32 KiB. When calculated with gzip compression, the reduction is ~30%, from 82.54 KiB to 57.9 KiB.
Additionally, by utilizing the new modular variant of the library (see below) and JavaScript tree shaking, you can create your own minimal useful Realtime
client and achieve a bundle size reduction of ~60.5% compared to v1 - from 234.11 KiB to 92.38 KiB (or ~66% for gzip: from 82.54 KiB to 28.18 KiB).
Modular variant of the library
An ESM variant of the library is now available for browsers (but not for Node.js) via import from ably/modular
. This modular variant of the library supports tree shaking, allowing for a reduction in the Ably bundle size within your application and improving the user experience. It can also be used by Web Workers.
React Hooks changes
React Hooks, exported at ably/react
, now require the new ChannelProvider
component to define the channels you wish to use and the options for them. This addresses the complexities previously encountered with useChannel
and usePresence
hooks when attempting to dynamically change options for a channel and provides a more straightforward approach to set and manage these options.
The functionality of the usePresence
hook has been split into two separate hooks: usePresence
, which is now used only to enter presence, and usePresenceListener
, which is used to listen for presence updates. These new hooks offer better control over the desired presence behavior in your React components.
First-class support for Promises
The callbacks API has been entirely removed, and the library now supports promises for all its asynchronous operations by default.
TypeScript typings
The Types namespace has been removed. All types it contained are now exported at the top level.
Browser and Web Worker bundles
- The browser bundle now relies on the native Web Crypto API instead of CryptoJS. The
ably/build/ably.noencryption
bundle has been removed, as it is no longer necessary. - The browser bundle can now be directly used by Web Workers. The
ably/build/ably-webworker
bundle has been removed, as it is no longer necessary.
Supported platforms changes
- Support for Internet Explorer has been dropped.
- Support for Node.js versions lower than 16 has been dropped. The supported Node.js versions are now 16, 18, and 20.
- The minimum supported versions for major browsers are: Chrome 58, Firefox 52, Edge 79, Safari 11, and Opera 45.
View merged Pull Requests
Breaking Changes
- Add
ChannelProvider
component to React Hooks #1620, #1654 - Add untyped stats API #1522
- Add type definitions for key returned by
generateRandomKey
#1320 - Add mandatory
version
param toRest.request
#1231 - Change
id
field to be namedablyId
in React Hooks #1676 - Change
usePresence
hook to two different hooks: for entering presence and subscribing to presence updates #1674 - Change naming for enum-like namespaces in type declarations and change meaning for public
ChannelModes
type #1601 - Change publishing methods to accept a
Message
-shaped object #1515 - Change
Crypto.generateRandomKey
API to use Promises #1351 - Change
fromEncoded()
andfromEncodedArray()
methods onMessage
andPresenceMessage
to be async #1311 - Remove
XHRStreaming
transport support #1645 - Remove code that's supporting older platforms #1629, #1633, #1641
- Remove
recoveryKey
in favour ofcreateRecoveryKey()
onConnection
#1613 - Remove
any
fromstats()
param type #1561 - Remove the dedicated Web Worker bundle
ably/build/ably-webworker
and add support for usingably
andably/modular
in Web Workers #1550 - Remove false class exports in type declarations #1524
- Remove the
Types
namespace #1518 - Remove
noencryption
variant of the library #1500 - Remove public callbacks API #1358
- Remove CryptoJS library and replace it with the Web Crypto API in web bundle #1299, #1325, #1333
- Remove
ably-commonjs*.js
files #1229 - Remove deprecated APIs #1227
- Remove deprecated
fromEncoded*
type declarations #1222 - Remove deprecated
ClientOptions
parameters #1221 - Remove the
ClientOptions.log
property and replace it with separatelogLevel
andlogHandler
properties #1216 - Remove support for JSONP #1215
- Fix
whenState
inconsistent behavior inConnection
andRealtimeChannel
#1640 - Fix the type definition of
Crypto.getDefaultParams
#1352