This contains only the most important and/or user-facing changes; for a full changelog, see the commit history.
2.5.0 (2024-11-06)
With this release, ably-js will now expose the new Message
attributes needed to support upcoming features,
such as updates, deletions and annotations in the Ably service.
- Added support for new
Message
attributes. #1888
2.4.1 (2024-10-04)
- Fix
usePresence
hook wasn't leaving presence if component unmounted during channel attaching state #1884
2.4.0 (2024-09-11)
- Add
wsConnectivityCheckUrl
client option #1862 - Push plugin is now available to be loaded via a CDN link #1861
2.3.2 (2024-09-06)
- Fix websocket reconnection can get stuck in a disconnected/connecting loop under specific network conditions #1855
- Fix
fetchRequest
implementation didn't work withcheckConnectivity
#1856
2.3.1 (2024-07-29)
- Export EventEmitter so we can use it in other SDKs #1819
- Fix missing
ablyId
argument touseConnectionStateListener
#1821
2.3.0 (2024-07-10)
With this release, ably-js clients can now be activated as a target for 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
2.2.1 (2024-07-02)
- Fix an occasion whereby a channel would attempt to automatically reattach from an inappropriate state #1802
- Update the type information so that
ErrorInfo
now extends theError
interface #1805
2.2.0 (2024-06-24)
- Add passing a log level as a second parameter to
ClientOptions.logHandler
function #1787 - Fix pings stacking when calling
Connection.ping()
if none ever succeed #1793
2.1.0 (2024-06-03)
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
2.0.4 (2024-05-03)
- Fix invalid
accessToken
when using REST API Client in React Native #1730, #1749 - Fix docstring for
Channels.release
method #1752
2.0.3 (2024-04-18)
- 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
2.0.2 (2024-04-08)
- Fix an issue with realtime connections using the bun runtime #1716
2.0.1 (2024-03-25)
- Fix
Unable to resolve "ably"
in React Native for ably-js v2.0.0 #1711 - Fix
TextEncoder
/TextDecoder
are not defined in React Native for ably-js v2.0.0 #1712
2.0.0 (2024-03-22)
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.
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).
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, 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.
The callbacks API has been entirely removed, and the library now supports promises for all its asynchronous operations by default.
The Types namespace has been removed. All types it contained are now exported at the top level.
- 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.
- 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
- 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
1.2.50 (2024-03-21)
- Add new logging API to
ClientOptions
and add a deprecation warning for the old one #1671 - Add
ClientOptions.maxMessageSize
to the public API #1678 - Add a deprecation warning for the
headers
client option #1681 - Improve deprecation log messages #1683, #1685
- Handle 204 status code in
PaginatedResource
#1631 - Fix typing and deprecation warning for
Crypto.getDefaultParams()
#1693
1.2.49 (2024-02-07)
- [React-Hooks]
usePresence
unsubscribes all listeners on unmount and runPresence.leave
even if connection has been terminated #1610 RealtimeChannels.get()
with options parameter throws an exception when executed during theattaching
state. #1609
1.2.48 (2023-11-20)
- Enable 'derived' options in 'useChannel' hook (by @rustworthy) #1501
- fix: use 'ably' as import path from react-hooks #1509
1.2.47 (2023-11-02)
- fix(react): fix issue where useChannel would error upon router navigation or hmr #1478
1.2.46 (2023-10-24)
- fix: avoid directly exporting Ably.ErrorInfo from promises.js #1463
- fix(react): add missing id param for
useStateErrors
call touseChannelStateListener
#1455 - fix: allow
RealtimePresence#leave
to takePresenceMessage
as argument #1466 - deps: bump ws to 8.14.2 #1467
1.2.45 (2023-09-25)
- remove
AblyProvider
options prop #1446 - fix: throw descriptive error when callbacks used with react #1450
1.2.44 (2023-09-04)
1.2.43 (2023-08-10)
- Add REST APIs for batch publishing, batch presence, and token revocation #1410
- Add support for presence message extras #1418
1.2.42 (2023-07-24)
- Auth: remain connected upon failed authorize unless returning explicit 403 #1385
- Make
Utils#inspectError
usetoString
forError
-like values #1391 - docs: fix description of AuthOptions.token #1368
1.2.41 (2023-06-29)
- add
ChannelStateChange.hasBacklog
and return state change to attach promise/callback #1347 - fix a bug where host fallback was initially skipped after falling back to the base transport #1357
1.2.40 (2023-05-26)
This release adds a new experimental channels.getDerived
method which allows you to create custom realtime data feeds by selectively subscribing to receive only part of the data from the channel. See the announcement post for more information.
- add experimental API to get derived channel #1306
- make
Message.connectionId
optional #1305 - fix misleading stack traces for early-intialised connection errors #1206
- remove
ProtocolMessage.connectionKey
#1218 - fix broken promisification of
Presence.history
signature #1224 - fix issue with query string encoding in react-native websockets #1286
- fix nodejs encryption of
ArrayBuffer
plaintext #1280
1.2.39 (2023-04-13)
- bump got dependency to
^11.8.5
#1189
1.2.38 (2023-04-04)
- retry connection attempt if 'online' event received whilst connecting #1171
- populate invalid state
ErrorInfo.cause
with the currenterrorReason
, if set #1169 - fix: align exposed type of
ErrorInfo
with internal type, extendingError
#1142 - fix: avoid global scope
TextEncoder
access #1157
1.2.37 (2023-02-27)
- make ErrorInfo extend Error #1129
- improve error message for clientId mismatch from user auth provider #1128
- fix: don't send credentials in webworker FetchInit #1132
1.2.36 (2023-02-10)
- fix(Node/http): prevent got from using its own retry mechanism #1122
- deps: update
http-cache-semantics
dependency #1123
1.2.35 (2023-01-30)
- Implement ably-js protocol v2 #1110
- Add global HTTP agent pool (fixes memory leak when creating several rest clients) #1113
1.2.34 (2022-12-13)
- fix incorrect sync event signature in base Transport class (fixes an issue with react-native realtime connections) #1094
1.2.33 (2022-11-11)
- Fix some callback typings #1075
1.2.32 (2022-11-09)
- fix: add EventEmitter.off signature with no args #1073
1.2.31 (2022-11-08)
In the latest release of ably-js, we’ve added jsdoc comments for the public methods and properties provided by the SDK so you can quickly access the descriptions directly in your code editor using Intelligent code completion features like Intellisense in VSCode.
We have also implemented the fetch API as a fallback HTTP transport so that ably-js is now fully functional in a service worker context.
How do I give feedback? This docs update and further planned changes are based on feedback from customers like you. So if you’d like to share any other requests or feedback, please reach out to us and help us make Ably better for everyone.
- Add JSDoc annotations to
ably.d.ts
#897 - Implement fetch as fallback if XHR and JSONP unsupported #1019
- [EDX-158] Generate docs with TypeDoc and upload to sdk.ably.com #1017
- [EDX-149] Add canonical docstring comments #1026
- [EDX-207] Add intro blurb to generated documentation #1055
- Add missing/undocumented docstrings #1064
- fix: stop mutating
Defaults.agent
on client init #1068
1.2.30 (2022-10-05)
- Add
connectivityCheckUrl
anddisableConnectivityCheck
client options #1051 - Fix EventEmitter.once when using array with promises #1046
- Allow null arguments in authCallback #1052
- Move channel state to attaching on new transport reattach when using promises #1053
1.2.29 (2022-08-08)
- Fix upgrade bug that could lead to an indefinitely sync-pending transport #1041
- Always allow event queueing while connecting #1039
1.2.28 (2022-07-28)
- Add clientId to MessageFilter #1032
- Transports: implement timeouts in tryConnect() #1035
- Only log connectionSerial mismatch from channel messages #1036
1.2.27 (2022-07-06)
- Add filtered subscription type to RealtimeChannel #1003
1.2.26 (2022-06-30)
- Improve global object fallback logic (fixes an issue when using the library in some service worker contexts) #1016
- Add backoff and jitter to channel and connection retry strategies #1008
- Bump versions for some underlying dependencies #1010
- Fix a bug with xhr transports for react-native #1007
1.2.25 (2022-06-10)
- Fix a bug in 1.2.23 where Message and PresenceMessage were removed from the public API #1004
1.2.24 (2022-06-09)
- Revert a bug in 1.2.23 where the Crypto interface was removed from the public API
- Revert change to package.json typings field
- Remove sourcemap links from CDN uploads
1.2.23 (2022-06-09)
- Add
Channel.status
method to get channel lifecycle status #985 - Fix bug in compatibility with Salesforce Lightning Components #993
- Revert uploading sourcemaps to the CDN #998
1.2.22 (2022-05-18)
- Fix bug in RealtimeChannel.subscribe promisify when second argument is undefined #984
- Update deprecated NativeScript application settings import #980
1.2.21 (2022-05-05)
- Make
Connection.id
andConnection.key
optional #952 - Remove support for MozWebSocket #954
- Fix a bug with promisified
EventEmitter.whenState
#962 - Update ably.com/documentation urls #964
- Remove console.log statements from msgpack encoder #966
- Fix nativescript bundle #971
1.2.20 (2022-04-06)
- Fix error where calling realtime presence update caused call stack errors #949
- Fix an issue where Ably-Agent headers were encoded incorrectly #950
1.2.19 (2022-04-05)
- Fix error where some promisified REST methods caused call stack errors #943
- Fix wasClean implementation for reactnative websocket transport #946
- Ensure that Ably-Agent is always URI encoded #947
1.2.18 (2022-03-31)
- Convert library source code to TypeScript #762
- Add
realtimeRequestTimeout
to ClientOptions type #934 - Override toJSON for HttpPaginatedResponse #913
- Throw ErrorInfo when invalid key supplied #912
- Remove ErrorReporter #908
- Fix nonsensical error in RealtimePresence.leaveClient when channel state is invalid #911
1.2.17 (2022-01-14)
- Remove NPM preinstall script (this was breaking NPM installs when outside a git repository) #876
1.2.16 (2022-01-14)
- Fix bug where channel rewind would ignore messages after reattaching #873
1.2.15 (2021-11-22)
- Replace deprecated request HTTP module with got #846
- Improve checks for XHRRequest error responses #804
1.2.14 (2021-09-22)
- Add TypeScript support for REST publish parameters #785
- Fix a bug with parsing of authUrl responses #793
1.2.13 (2021-08-03)
- Implement RTL5b and RTL5j cases for detaching from channels in suspended/failed states #784
1.2.12 (2021-08-02)
- Fix channel names as object prototype keys #777
- Add .once method to EventEmitter #779
- Bump ws from 5.2.2 to 5.2.3 #781
- Implement Ably-Agent connection param for ably-js and NodeJS versions #740
1.2.11 (2021-07-20)
- Bind setImmediate to global object in browsers #774
1.2.10 (2021-05-28)
- Add Playwright tests #738
- Improve Mocha tests #739
- Bump grunt from 0.4.5 to 1.3.0 #744
- Add initial typescript toolchain #745
- Update react native usage instructions in README #746
- Webworker support #756
- Use setImmediate if available in browser #757
- Add sourcemap stuff #758
- ably.io -> ably.com #759
- Improve api typings #761
1.2.9 (2021-04-12)
1.2.8 (2021-03-26)
- Fix imports for callbacks.js, promises.js, typings. #730
- Fix request typings #731
- Deprecate bower #733
1.2.7 (2021-03-25)
- Fix faulty import of JSONP transport to React Native and NativeScript #726
- Comet: Raise preconnect event if the server responds with a protocol message #719
1.2.6 (2021-03-04)
- Move null-loader to dev dependencies (note: this release will only affect NPM users so will not be available on cdn.ably.io) #718
1.2.5 (2020-11-04)
- Convert library to ES6 modules #704
1.2.4 (2020-11-04)
- Typings: all ChannelOptions are now optional and other minor improvements #695
1.2.3 (2020-09-30)
- Use environment-specific fallback hosts by default unless overridden (#682)
- Rest: use channels.all not channels.attached; "attached" made no sense for rest channels and was never documented
- Add state check for channels.release() to prevent putting the lib into an inconsistent state
1.2.2 (2020-09-03)
- Auth: fail connection immediately if auth server returns a 403 as a result of an authorize() call or online reauth
1.2.1 (2020-06-09)
Oops! 😊 Fixes an oversight in our 1.2.0 release.
We had
specified
that we would make idempotentRestPublishing
default to true
from version 1.2 (ClientOptions
) but hadn't followed through with this.
That is fixed in this release with
#665
(SimonWoolf).
1.2 (2020-06-08)
Adds the capability to subscribe to a channel in delta mode.
Subscribing to a channel in delta mode enables delta compression. This is a way for a client to subscribe to a channel so that message payloads sent contain only the difference (ie the delta) between the present message and the previous message on the channel.
1.1.25 (2020-05-19)
- EventEmitter.whenState: fix for promises #630
- Typings: re-export Types namespace in 'ably/promises' sub-package #634
- Support promises with PaginatedResult#next() etc. #635
- Reduced npm package size #646
- Update msgpack dependency to version explicitly Apache-2.0 licensed #650
1.1.24 (2020-01-24)
- Minor bug fix to comet transport
- Update ably-common submodule for errors.json parsing fix
1.1.23 (2020-01-08)
- Disable bundling for messages with user-set ids
1.1.22 (2019-10-28)
- Add some missing ClientOptions to typescript type definition file
1.1.21 (2019-10-22)
- BufferUtils overhaul (consistent return type on browsers (ArrayBuffer vs WordArray), hexDecode, support typed arrays, and more
- Add error reporting mechanism
1.1.20 (2019-10-05)
- Fix channel.history with promises bug when using the realtime client
- Auth no way to renew warning: upgrade to error
1.1.19 (2019-10-03)
- Fix EventEmitter.once typings #610
1.1.18 (2019-09-18)
- Fix typings for channel.presence.unsubscribe #608
- Tweak connection code for generic connection issues (80000 -> 80003)
- Make promisified rest.request() easier to use correctly
1.1.17 (2019-09-03)
- Fix TS1036 tslint warning when importing ably/promises
- Add delta generation stats infrastructure
1.1.16 (2019-07-24)
- Fix regression for browser commonjs distribution
- Allow non-ascii clientIds for REST requests
1.1.15 (2019-07-02)
- Fix type definition for realtime presence.get() with the Promise API
1.1.14 (2019-06-25)
- Add check for double-encoded tokens
- Reinstate message suppression based on connectionSerial to ensure no duplicate messages during transport upgrades
- Support running in a webworker context that uses
self
as the global object (thanks to Clifton Hensley for that contribution!)
1.1.13 (2019-06-19)
- Log the content-type of an authUrl response
1.1.12 (2019-06-10)
- Only ever deduplicate messages on the same channel
- Support uncompressed data stats
1.1.11 (2019-05-22)
- Allow token strings (including JWT tokens) up to 128kB
1.1.10 (2019-05-16)
- Fix channel#unsubscribe() throwing an error if called on a failed channel (also removes the optional callback argument to subscribe(), which was undocumented and almost useless anyway since it was only called in the event of a failed channel)
1.1.9 (2019-05-08)
- Auth: fix tokenParams missing from token requests in the event that no authParams are specified
1.1.8 (2019-04-30)
- Auth: if you do multiple concurrent authorize()s, make sure the token from last one wins
- If fallback hosts are enabled and a connection is abruptly disconnected with a 5xx error, retry immediately to a fallback rather than waiting the usual 15s disconnectedRetryTimeout
1.1.7 (2019-03-27)
- Catch common failure mode with poorly-implemented authCallback
- Fix typings of TokenParams.capability
1.1.6 (2019-03-19)
- Improve handling of responso to active traffic management placement constraint error for smooth cluster handover
- Normalise statuscode for 40170-failure to obtain token from client auth callback to 401 per spec
1.1.5 (2019-02-27)
- Only autoremove an expired token if we know the local offset from server time
- Fix tokenParams not being correctly mixed in to authParams in some circumstances
1.1.4 (2019-02-25)
- Support PUSH, PATCH, and DELETE in Rest#request()
- Support arbitrary params for REST publishes
- Fix scope leak issue when using the minified version of the library
1.1.3 (2019-02-11)
- Rewrite typescript typings to satisfy
tsc --strict
- PNRG changes needed for newer versions of react-native
1.1 (2019-02-06)
- Promises support
- Admin api for push notifications
- Many minor bugfixes
1.0.23 (2019-01-21)
- Only make a single token request at a time
- Fix crash with react-native on some Android versions when making REST requests
- Tweak fallback host logic for connected realtime clients making REST requests
1.0.21 (2019-01-07)
- Reinstate 'stop clientId forcing token auth' change (#542)
- Prioritise a tokenParam over an authParam of the same name
- Fix behaviour with multiple concurrent pings in-flight
- Use console.warn (if present) when logging at ERROR level
- Implement client-side-enforced maxMessageSize limit and bundling constraints
- Deduce streaming response from lack of content-length header even if no transfer-encoding
1.0.20 (2018-12-02)
- Temporarily back out of clientId change due to CORS issue
1.0.19 (2018-11-22)
- Expose rest#setLog method to change log level or handler at runtime
- Allow jsonp for REST requests even if allowComet is false
- Expose Rest.Message for node, for consistency with Realtime.Message
- Add updateOnAttached channel option to force 'update' event even if
resumed
is true - Stop a clientId from forcing token auth (#542)
- Fix package bloat through mistaken node_modules_node6 includes (due to npm not correctly parsing .gitignore)
1.0.18 (2018-09-27)
- Fix bug where connectionSerial was not getting reset after a resume failure (#540)
1.0.17 (2018-09-19)
- Give presence.subscribe attach callback the same behaviour as channel.subscribe, for consistency (so it calls back once attached rather than only in the event of an attach error) (#526)
- Handle empty string response from an authUrl or authCallback as a token error
- Upgrade ws module to v5 (nodejs only) (#525)
Note: this release drops support for nodejs versions < 4.5. node v4 versions 4.5 or later are still supported; customers using node v4 are highly encouraged to update to the latest 4.x branch for security reasons
1.0.16 (2018-06-25)
- Ensure a message id is included when serialized (#518)
1.0.15 (2018-06-21)
- Add support for JWT (#511)
- Use https instead of git to pull dependencies (#515)
- Fix compilation issue with Google Closure compiler (#517)
1.0.14 (2018-05-16)
- Avoid xhr with local files on chrome 65+ (#490)
- Update websocket library on node
- Improvements to Rest#request error handling
- Update nodejs supported versions
- TypeScript namespace change (
ablyLib
->Types
-- #492)
1.0.13 (2018-02-01)
- Fix resume regression in 1.0.12
1.0.12 (2018-01-30)
- Fix Typescript definition files (#444)
- Fix sync connection when an upgrade fails (#445)
- Fix encryption on IE9 and IE10 (#453)
- Fix crash on
Logger.LOG_ERROR
(https://github.com/ably/ably-js/pull/439/files) - The
closeOnUnload
option now defaults to true (https://github.com/ably/ably-js/commit/293aed15d7ecaa001a3f834871b78d0403b195d7)
1.0.11 (2017-12-11)
- Allow Message#fromEncoded to take a short-form (key-only) cipherParams (#438)
[note: 1.0.10 skipped due to buggy version on npm used to create package; see npm/npm#18870]
1.0.9 (2017-11-22)
-
Add ability for an auth server to trigger a client to move to the failed state by returning an HTTP 403 #434
-
Enable transient publishes when publish is called on a channel that isn't already attached #430
-
Fix bug where qs params provided in an authUrl were being discarded after first use #433
-
Default to logging timestamps on all platforms
-
Tweak websocket error log levels to avoid logging non-error closes at ERROR level
[note: 1.0.8 was an npm-only release to fix a minor build error in the published artifact]
1.0.7 (2017-10-12)
-
Fix idle timeout bug when timer extended due to positive timeRemaning (if setTimeout is overly eager) #421
-
Fix channel state change log message when error is not an ErrorInfo #420
-
Stop network error trading a token request for a token failing the connection #419
1.0.6 (2017-09-26)
-
Fix issue where presence updates sent immediately after a recover can be ignored #412
-
Fix authMethod being ignored if there are no authParams: #415
-
Combine authParams with querystring params given in an authUrl, rather than replace: #418
1.0.5 (2017-07-04)
-
Fix issue with webpack module resolution: #404
-
Implement Channels#release: #405
-
Fix various bugs with useBinaryProtocol: true #406
1.0.4 (2017-04-24)
-
Have the default logHandler on node log timestamps (#399)
-
Don't require Ably-protocol-level heartbeats by default on node (#398)
-
Cherry-pick syncComplete fn->bool and other changes and fixes from 0.9 branch that didn't make it into 1.0.0
1.0.3 (2017-04-17)
-
Improved NativeScript supprot #392
-
Fix bug in 1.0.2 where channels can never become reattached after a computer goes into sleep mode #396
1.0.2 (2017-03-20)
- Don’t attempt a resume if last known activity was greater than the connectionStateTtl ago #389
1.0.1 (2017-03-13)
-
Only use websocket transport in node unless comet explicitly requested with
transports: ['comet']
ortransports: ['comet', 'web_socket']
#382 -
Fix issue with multiple attaches happening after a failed resume #386
1.0 (2017-03-08)
- Lots of changes; see ably/docs#235 for the most important and/or breaking changes and upgrade notes, or the full Changelog
0.8.42 (2017-02-27)
-
Fix presence issue when receive >9 presence updates from the same connection by backporting 0.9 presence newness algorithm 5ce4fa8
-
Fix on('attached') registration in an on('attached') block firing immediately #364
0.8.41 (2016-10-26)
- Fix occasional anomalously low presence set right after a sync abb03f5
0.8.40 (2016-10-24)
- Fix ‘server’ header CORS warning in chrome for non-ably endpoints #345
0.8.39 (2016-10-21)
- Disable xhr streaming if using cloudflare #342
0.8.38 (2016-10-12)
0.8.37 (2016-09-21)
- Node requests: limit max rest request TCP parallelism to 40 #336
0.8.36 (2016-09-14)
- Backport subscribing with an event array fix from 0.9
0.8.35 (2016-09-12)
- Node: try fallback hosts on ECONNRESET
0.8.34 (2016-09-08)
- Node: keep TCP stream alive between REST requests; update
request
module #331
0.8.33 (2016-08-19)
- Upgrade node websocket library for node 6 compatibility #326
0.8.32 (2016-08-17)
-
Rate-limit autoreconnect attempts to a maximum of 1 per second #322
-
Fix REST fallback host functionality #327
0.8.31 (2016-08-10)
- Add webpack/commonjs support #321
0.8.30 (2016-07-18)
- Fix an issue where channels with large numbers of presence members (>100) could occasionally see a reduced presence set #319
0.8.29 (2016-07-15)
-
Fix an issue where messages retried across a transport upgrade could theoretically lead to duplicate messages #308
-
Fix an issue where a client-detectable auth error on connect could cause the connect attempt to fail after the connect timeout (15s) rather than immediately #314
0.8.28 (2016-07-13)
- Fix an issue where a server-sent channel detached message could cause the channel to go into the failed state #313
0.8.26 (2016-07-11)
0.8.25 (2016-07-06)
No net changes. 0.8.25 reverted a new header addition due to Ably not yet sending the correct access-control-allow-headers
CORS headers for it; 0.8.26 re-adds it.
0.8.24 (2016-07-06)
Biggest changes:
-
Store transport preferences in memory not just localstorage, for node clients #303
-
Fix issues with sync failures leading to lib sticking in the
synchronizing
state #302 -
Add lib version string to connect querystring an as a header for REST #304
0.8.23 (2016-07-01)
Biggest changes:
-
Fix exception on accessing localStorage in Safari in private mode #298
-
Fix bug causing transports to occasionally stick around after they should have been disconnected in some circumstances #296
-
Sacrifice commas to appease IE8 479152f
0.8.22 (2016-06-24)
Biggest changes:
-
Log and emit errors that occur on-connect (resume failures and upgrade failures) #291
-
Rework upgrade flow so that all messages complete on one transport before switching to another, to avoid 'Invalid transport ID' message race condition #291
-
Fix issue #285 where a detach that happens during a presence sync could fail (also #291)
-
Log all connectionDetails on transport active (including the server you're connected to), not just clientId #294
-
Implement
waitForSync
option in (realtime form of)presence.get()
#295
0.8.21 (2016-06-21)
Biggest changes:
- Fix bug where comet transports would occasionally send messages out of order if the sending rate is very high #290
0.8.20 (2016-06-13)
Biggest changes:
-
Rewrite the transport fallback sequence. It now starts with a polling transport (since some proxies break streaming transports) and then tries to upgrade to a websocket and streaming transport in parallel, picking the websocket if possible. It also remembers the best transport that worked (using HTML5 localstorage) and jumps straight to that if it can. #279
-
Fix crypto bug when generating random data in IE 8 and 9 #282
-
Disable JSONP transport when document is undefined, for React Native support #283
-
Clear presence set on detach #287
0.8.19 (2016-05-18)
Biggest changes:
-
Fix connection state race condition when one transport drops while another is pending #274
-
Make LOG_MAJOR log level (i.e. level 3) much more friendly #275
-
A few minor fixes to ErrorInfo #276
0.8.18 (2016-05-09)
Biggest changes:
-
Change default log level to LOG_ERROR c122a1f
-
Add channel#errorReason #267
-
Allow automatic re-authing (eg to use a new token) using auth#authorise() #261
-
Allow ClientOptions#recover to take a callback (so you can decide whether to recover at the time) rather than just a boolean #266
0.8.17 (2016-04-05)
Biggest changes:
-
Don’t activate a transport that isn’t connected #255
-
Don't try host fallbacks for token errors #251
-
Standardise on 'initialize' event spelling #244
-
Stop assuming that connection state won't change during a transport sync #249
-
Don't reject a presence enter for lacking a clientId unless we're absolutely certain we're anonymous #256
0.8.16 (2016-03-01)
Biggest changes:
-
Implement latest version of the crypto spec #240
-
Don't sync an upgrade transport that never got activated #241
0.8.15 (2016-02-11)
Biggest changes:
- Expose presence message action as a string in the API #227
0.8.14 (2016-02-09)
Fixed bugs:
-
Token renewal does not seem to be working #203
-
clientId from token auth is ignored for presence #198
-
IE9 support #196
-
ably-js-browsers failing in mobile safari #164
Closed issues:
-
Proposal for new transport fallback behaviour #217
-
Investigate whether encoding is being set correctly on presence data #200
Merged pull requests:
-
enhance: Off removes all listeners for EventEmitter #227 (mattheworiordan)
-
test(realtime): Testing echoMessages=true and echoMessages=false #226 (alex-georgiou)
-
Safeguard Realtime Constructor #222 (CrowdHailer)
-
Issue205 auth token expires fails #221 (mattheworiordan)
-
Some proposed fixes for "Poor connection never attaches and reports connection to be connected #195" #218 (SimonWoolf)
-
Publish messages serially #215 (mattheworiordan)
-
Adding README instructions for pulling ably-common submodule #214 (alex-georgiou)
-
Token error update #209 (paddybyers)
-
Routable format of connectionKey now applies to all transports #207 (paddybyers)
-
Stop shimming async for requirejs #206 (SimonWoolf)
-
Force token rerequest if realtime indicates token problems #204 (SimonWoolf)
-
Fix presence data not getting encoded #201 (SimonWoolf)
-
Presence: get clientId from Auth, not options directly #199 (SimonWoolf)
-
Tweak xhr error handling #197 (SimonWoolf)
0.8.13 (2016-01-08)
Fixed bugs:
- Connection state incorrectly reported #187
Merged pull requests:
- Fix unsubscribe for all events & listeners #193 (mattheworiordan)
0.8.12 (2015-12-20)
Merged pull requests:
0.8.11 (2015-12-18)
Fixed bugs:
- No internet up test coverage #183
Merged pull requests:
-
Remove presence leaveOnDisconnect test #185 (SimonWoolf)
-
Connectivity check fixes & tests #184 (SimonWoolf)
0.8.10 (2015-12-17)
Implemented enhancements:
- Flexible handling of callback for auth methods #175
Fixed bugs:
- High priority spec incompatibilities #170
Closed issues:
- Xhr connections not starting a /recv request after /connect connection ends #180
Merged pull requests:
-
Fix comet connections not starting a recv after the connect req closes #181 (SimonWoolf)
-
Spec updates and miscellania #177 (SimonWoolf)
0.8.9 (2015-12-04)
Implemented enhancements:
- Spec validation #43
Fixed bugs:
- Highest priority item #172
Merged pull requests:
- Add support for authMethod: POST #173 (SimonWoolf)
0.8.8 (2015-11-20)
Fixed bugs:
-
HTTP requests ignore
tls: false
attribute #166 -
Presence callback error following an immediate disconnect #161
Merged pull requests:
-
REST client: respect tls clientOption #167 (SimonWoolf)
-
Don’t assume a callback exists if error occurs during presence enter/update #162 (SimonWoolf)
-
clientId specs #145 (mattheworiordan)
0.8.7 (2015-11-13)
Merged pull requests:
- Include version and license #159 (mattheworiordan)
0.8.6 (2015-11-12)
Implemented enhancements:
-
Switch arity of auth methods #137
-
PresenceMessage action #45
-
Emit errors #39
-
README to include code examples and follow common format #38
-
Share test app set up & encoding fixture data #34
-
Integrate SauceLabs browser tests into ably-js #31
-
License & CHANGELOG needs to be included #2
Fixed bugs:
-
MsgPack cipher workaround #142
-
Switch arity of auth methods #137
-
connection.close does not always free up resources #136
-
XHR requests timing out leads to connection going into failed state #134
-
connection#ping throws exception if you don't pass it a callback #133
-
Invalid encoding should not result in the data vanishing #121
-
jsonp transport needs to set
envelope=json
param #113 -
Token Params are not being sent through to authUrl #108
-
Channels stay attached even if connection can't be resumed #105
-
Calling channel.presence.enter doesn't attach to the channel if connectino has been closed and reopened #104
-
Authentication etc. failures with comet incorrectly put connection into 'disconnected' state (should be 'failed') #101
-
Connection recovery after connect causing presence to fail #95
-
Exception / error should be shown if trying to publish or modify presence on a closed connection #94
-
Hard coded transport to work around bugs need to be removed #86
-
Ably-js does not call error callback when channel attach fails when using comet transport #81
-
When attach fails with 'superseded transport handle', ably-js retries immediately forever #71
-
iFrame tests are failing in CI #62
-
WsData exception #61
-
Incorrect error shown in clients when account limits are hit #57
-
IFrameTransport errors when connecting with tls: false #55
-
ToJson bug #44
-
No transport handle #40
-
Bug when running
karma
#36 -
Travis CI builds failing consistenly #30
-
Comet transport error #27
-
Test client library with explicit binary protocol in JSBin #18
-
iPad iOS6 timing issues #12
-
Firefox 10 with Windows 7 fails because of incorrect mime type #11
-
Internet Up URL & use of HTTPS #4
Closed issues:
-
requestToken sending key? #157
-
Wrong state change reason with token expiry #149
-
On jsbin, get an exception creating websocket if tls: false #129
-
Auth differences between ably-js and ably-ruby #116
-
ably-js doesn't dispose of the websocket resource if the connection attempt times out #98
-
Use the correct internet-up CDN #42
Merged pull requests:
-
Presence map: normalise enter/update actions to present in #put #152 (SimonWoolf)
-
ably-js-browsers-all #151 (SimonWoolf)
-
Pass on DISCONNECT errs; a few test fixes #150 (SimonWoolf)
-
Allow iframe transport to work with local (file://) pages #148 (SimonWoolf)
-
Connection#ping: allow no callback, return a responseTime, add tests #146 (SimonWoolf)
-
Convert WordArrays to ArrayBuffers when msgpack-encoding #143 (SimonWoolf)
-
NodeCometTransport: clear request timeout on request error #141 (SimonWoolf)
-
Use the correct internet up URL #140 (mattheworiordan)
-
Log protocol messages at micro level #139 (mattheworiordan)
-
Transport failures don’t necessarily imply connection failures #135 (SimonWoolf)
-
Avoid ambiguity in received transport protocol message #132 (mattheworiordan)
-
Various new-upgrade and test fixes #131 (SimonWoolf)
-
Connection state events 3 #130 (SimonWoolf)
-
Presence update when connection closed #128 (SimonWoolf)
-
Tests no force ws; fix failure to callback on presence event causing implicit attach #127 (SimonWoolf)
-
Ensure websocket object is disposed if it fails to connect #125 (SimonWoolf)
-
Add some rest presence tests #124 (SimonWoolf)
-
Invalid encodings #123 (SimonWoolf)
-
Don't process duplicate messages or messages on inactive transports #122 (SimonWoolf)
-
CipherParams conform to latest spec (separate algorithm and keyLength) #120 (SimonWoolf)
-
Use ably-common submodule instead of inline json for test app setup #119 (SimonWoolf)
-
Don’t include timestamp/connectionid in string/json representations of messages #117 (SimonWoolf)
-
If client lib initialized with clientid, use that for auth if no new tokenParams object is supplied #115 (SimonWoolf)
-
JSONP transport: use jsonp envelope #114 (SimonWoolf)
-
Define error codes that result in failed rather than disconnected #112 (SimonWoolf)
-
Explicitly disallow empty string clientIds #111 (SimonWoolf)
-
Allow connection to inherit clientId from connectionDetails #110 (SimonWoolf)
-
Some small connection, channel, and presence fixes #109 (SimonWoolf)
-
Standardise on tabs #107 (SimonWoolf)
0.8.5 (2015-08-20)
Implemented enhancements:
- untilAttach for presence history is missing #93
Closed issues:
-
presence#history only available for rest channels, not realtime ones #84
-
Saucelabs websockets support apparently sucks..? #82
Merged pull requests:
-
support untilAttach for realtime presence history requests #96 (SimonWoolf)
-
Force saucelabs to use varnish rather than squid as a proxy #90 (SimonWoolf)
-
Fix a race condition in realtime publish tests #89 (SimonWoolf)
-
Add grunt release:[releasetype] task #88 (SimonWoolf)
0.8.3 (2015-08-04)
Implemented enhancements:
-
authCallback bug, test coverage & additional type support #72
-
Does not support useTokenAuth client options #70
-
No updateClient method #67
-
createTokenRequest without key option #21
Fixed bugs:
-
attaching and detaching events are not emitted #74
-
attach on a channel for a failed client does not fail the attach #73
-
authCallback bug, test coverage & additional type support #72
-
Does not support useTokenAuth client options #70
-
Calling attach twice on an invalid channels fails #66
-
authUrl tests fail in Firefox #63
-
Better error message for an invalid token from the authUrl or callback #56
-
createTokenRequest without key option #21
Closed issues:
- Various functions require a callback with (err, result) but docs imply should work with just (result) #69
Merged pull requests:
-
Presence history 3 #87 (paddybyers)
-
createTokenRequest tweaks #83 (SimonWoolf)
-
Add tests for authCallback and update its docstring #80 (SimonWoolf)
-
Emit attaching #79 (paddybyers)
-
Support untilAttach param in history requests for realtime channels #78 (paddybyers)
-
Add useTokenAuth option #77 (SimonWoolf)
-
Add Presence#update and Presence#updateClient methods #76 (SimonWoolf)
-
Correct checks for existence of channel name in received message #68 (paddybyers)
-
Auth url fixes2 #65 (paddybyers)
0.8.2 (2015-07-01)
Implemented enhancements:
- Release as a bower module #1
0.8.1 (2015-06-30)
Implemented enhancements:
Fixed bugs:
- Malformed response body from server: Unexpected token X with Comet on Node.js #59
Closed issues:
-
Connection state recovery is intermittent #48
-
Presence#enterClient errors if not supplied with a data param #47
-
No keyName specified #41
Merged pull requests:
-
Throw 411 error for unsupported data types #53 (SimonWoolf)
-
Make sure boolean data is encoded correctly #51 (SimonWoolf)
-
Allow data parameter to be optional for presence#enter and channell#subscribe (2) #50 (SimonWoolf)
0.8 (2015-04-29)
Implemented enhancements:
Fixed bugs:
-
Browser test error: authbase0 - displayError is not defined #35
-
[Object object] in error messages makes it difficult to see what the problem is #24
-
Connection issues #20
-
Time function on Realtime blocks Node from exiting #9
-
iFrame loading #8
0.7.9 (2015-04-03)
0.7.8 (2015-04-03)
0.7.7 (2015-04-03)
0.7.6 (2015-04-03)
Fixed bugs:
- Nodeunit tests in the browser #23
Closed issues:
- TypeError on presence.subscribe() #26
0.7.5 (2015-03-21)
0.7.4 (2015-03-20)
Closed issues:
- Time out tests #15
0.7.3 (2015-03-12)
0.7.2 (2015-03-10)
Fixed bugs:
- Swallowing errors #6
Closed issues:
0.7.1 (2015-02-11)
0.7 (2015-01-12)
0.6.3 (2014-12-09)
0.6.1 (2014-11-27)
0.6 (2014-11-27)
0.5 (2014-01-13)
0.2.1 (2013-04-29)
0.2 (2013-04-17)
0.1.1 (2012-12-05)
0.1 (2012-12-04)
Some sections of this Change Log have been automatically generated by github_changelog_generator