# Changelog: Twilio Sync JavaScript SDK

> \[!CAUTION]
>
> **Versions 2.x and below are End-of-Life as of July 16, 2023**.
>
> **Functionality will cease to work properly for these versions.** Please upgrade to the latest version. See: [Versioning and Support Lifecycle](/docs/sync/versioning-and-support-lifecycle).

## Latest release: 3.x

During development, we recommend that you consume the libraries linked below in this section. These will automatically receive API-compatible improvements and bug fixes as we release them.

This release provides all the latest features of Twilio Sync in a single package. It is available on our CDN in [full source](https://media.twiliocdn.com/sdk/js/sync/v3.1/twilio-sync.js) and [minified](https://media.twiliocdn.com/sdk/js/sync/v3.2/twilio-sync.min.js) variants. The [latest documentation](https://media.twiliocdn.com/sdk/js/sync/latest/docs) is available too.

Sync is also [published via NPM](https://www.npmjs.com/package/twilio-sync), for use from within a browserified/web-packed code base. Use `npm install --save twilio-sync` to install the latest version.

## Version history and changelog

You will find links to specific patch versions below. We recommend using these links for production deployments together with resource integrity checks to avoid accidental security issues.

### Sync SDK for JavaScript 3.3.9 *(September 29, 2025)*

#### Changes

* Fixed pagination when using decreasing order for lists and maps

#### Links

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.3.9/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.3.9: `sha256-/2IJQtPDKLRwaDHnzc20GA8TLnLI5k5dZbOwUFqR/vk=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.3.9/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.3.9: `sha256-kVAH02tZ4R6bGi/To85EzZs2nxTZKzUGkoIA68wuWRs=`
* [npm](https://www.npmjs.com/package/twilio-sync/v/3.3.9) Sync node.js SDK package
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.3.9/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.3.9/twilio-sync.min.js"
  integrity="sha256-kVAH02tZ4R6bGi/To85EzZs2nxTZKzUGkoIA68wuWRs="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.3/twilio-sync.min.js"></script>
```

### Sync SDK for JavaScript 3.3.8 *(July 29, 2025)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.3.7 *(March 14, 2025)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.3.6 *(February 18, 2025)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.3.5 *(August 8, 2024)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.3.3 *(June 29, 2023)*

#### Changes

* Improve caching of Map and List items.

#### Links

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.3.3/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.3.3: `sha256-oObltVynqz080xP0RageLJL+ER8YxuxbM2vNxiIXZB8=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.3.3/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.3.3: `sha256-dz7+xOkKoNfCt26B8gNpaJEINEj/uS9875D5CGT0GMY=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.3.3/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.3.3/twilio-sync.min.js"
  integrity="sha256-dz7+xOkKoNfCt26B8gNpaJEINEj/uS9875D5CGT0GMY="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.3/twilio-sync.min.js"></script>
```

### Sync SDK for JavaScript 3.3.2 *(April 25, 2023)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.3.1 *(March 21, 2023)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.3.0 *(February 22, 2023)*

Internal release only for Conversations. No changes.

### Sync SDK for JavaScript 3.2.2 *(September 22, 2022)*

#### Changes \[#changes-2]

* Internal dependencies update.

#### Links \[#links-2]

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.2.2/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.2.2: `sha256-JOuqOoGoPQg23LqcaaeU2HndvzZLnd8zb7euvc/Y+ks=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.2.2/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.2.2: `sha256-2C+eHlUZrxhV/UR+DOrKT89SvvRKWgvHn5hJPrUXcOg=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.2.2/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.2.2/twilio-sync.min.js"
  integrity="sha256-2C+eHlUZrxhV/UR+DOrKT89SvvRKWgvHn5hJPrUXcOg="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.2/twilio-sync.min.js"></script>
```

### Sync SDK for JavaScript 3.1.0 *(March 3, 2022)*

#### Changes \[#changes-3]

* Improve initialization time for instances with many sync entities.

#### Links \[#links-3]

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.1.0/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.1.0: `sha256-JICkcwEiYrwB5mvDJPUaIEdXVIbSPQdyrXdEXg52/KM=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.1.0/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.1.0: `sha256-DDFF+/Gwdi6qvGG/UJUtYa11+zt6sHDM84Ieg7t2/O0=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.1.0/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.1.0/twilio-sync.min.js"
  integrity="sha256-DDFF+/Gwdi6qvGG/UJUtYa11+zt6sHDM84Ieg7t2/O0="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.1/twilio-sync.min.js"></script>
```

### Sync SDK for JavaScript 3.0.6 *(November 25, 2021)*

#### Changes \[#changes-4]

* Remove the post-install script, which was known to cause installation problems.
* Fix argument typing for Sync maps.
* Bump Node required version to current LTS (14).

#### Links \[#links-4]

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.6/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.0.6: `sha256-yR8MMXeSjlx8ZNVa6MSkgfVGhuDpsHL8b1bYj1PhDRQ=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.6/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.0.6: `sha256-EAQOpK8jvEQFOKfEVoTwyZD+Zg84X4ubsa0G6Q2QrvI=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.6/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.0.6/twilio-sync.min.js"
  integrity="sha256-EAQOpK8jvEQFOKfEVoTwyZD+Zg84X4ubsa0G6Q2QrvI="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.0/twilio-sync.min.js"></script>
```

***

***

***

### Sync SDK for JavaScript 3.0.5 *(October 19, 2021)*

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.5/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.0.5: `sha256-3MjDCDOWsJnwzmcFQgbc/GnxhH2sl7r8hWo4lPGVmqY=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.5/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.0.5: `sha256-M715lCHKKLJrBCtSpsjvP4hInafwt8ZXbJfXR7RlwdQ=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.5/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.0.5/twilio-sync.min.js"
  integrity="sha256-M715lCHKKLJrBCtSpsjvP4hInafwt8ZXbJfXR7RlwdQ="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.0/twilio-sync.min.js"></script>
```

#### Changes \[#changes-5]

* Default exports removed — they didn't work in the previous versions either.
* Fixed polyfilling issues for IE11.
* Fixed type resolution issues on Angular.
* Fixed initialization problems on React Native.

***

### Sync SDK for JavaScript 3.0.1 *(July 22, 2021)*

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.1/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.0.1: `sha256-89ZueJ3POPtrp17bnpX0nQEEzB5Enu/16ais0WLP4g4=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.1/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.0.1: `sha256-V+3gBmUUB90uAwluzE5PEUip/165AsEUxPLXPK8qWxw=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.1/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.0.1/twilio-sync.min.js"
  integrity="sha256-V+3gBmUUB90uAwluzE5PEUip/165AsEUxPLXPK8qWxw="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.0/twilio-sync.min.js"></script>
```

#### Changes \[#changes-6]

* Fixes for exports that broke when adding the new build pipeline.

**Note** These changes are minimal and require only some textual replacement. The new build pipeline might have caused some side-effects, though, especially for customers migrating from 2.x. Please evaluate this new version before deploying to production, and open support tickets if you detect any inconsistencies.

***

### Sync SDK for JavaScript 3.0.0 *(July 16, 2021)* Deprecated, use 3.0.1

* [Non-minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.0/twilio-sync.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for non-minified version 3.0.0: `sha256-CRHpV7OuDzfqdL91MXlEKkBLlpsWFHozBoyvWNG6mQM=`
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.0/twilio-sync.min.js) Sync SDK bundled for browsers, hosted on Twilio CDN.
  * SHA-256 for minified version 3.0.0: `sha256-I0M5Rlc2nP5g3hG8HoJ/Mfz9qKdlrG5Y6lFjOc8y94Q=`
* [npm](https://www.npmjs.com/package/twilio-sync) Sync node.js SDK package. Built with LTS (14.17.3) version of node.js.
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/3.0.0/docs)

**Secure browser script link** (recommended for production deployments)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/releases/3.0.0/twilio-sync.min.js"
  integrity="sha256-I0M5Rlc2nP5g3hG8HoJ/Mfz9qKdlrG5Y6lFjOc8y94Q="
  crossorigin="anonymous"></script>
```

**Non-secure browser script link** (recommended only for development)

```html
<script src="https://media.twiliocdn.com/sdk/js/sync/v3.0/twilio-sync.min.js"></script>
```

#### Breaking Changes

* New `Rollup`-based build, removing dependency on `Gulp`, which produces a more optimized package and resolves some build pipeline vulnerabilities.
* New documentation based on `TypeDoc`.
* Stronger type checks in the sources.
* New import paths for types (import from the bundle directly, not from lib).
* New names for imported types. See the documentation for details of the renames.

**Note** These changes are minimal and require only some textual replacement. The new build pipeline might have caused some side-effects, though, especially for customers migrating from 2.x. Please evaluate this new version before deploying to production, and open support tickets if you detect any inconsistencies.

***

### Sync SDK for JavaScript 2.0.1 *(March 8, 2021)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/2.0.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/2.0.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/2.0.1/docs)

#### Changes \[#changes-7]

* Reverted the change that required the argument of `InstantQuery.search` to be a non-empty string. It now accepts any string.

***

### Sync SDK for JavaScript 2.0.0 *(February 17, 2021)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/2.0.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/2.0.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/2.0.0/docs)

#### Changes \[#changes-8]

* **Breaking** Stream's `value` field was renamed `data`.
* Added startup registrations to allow subscribing to events during Twilsock connection, without using `twilio-notifications.js` dependency.
* Reduces Sync dependencies, improves startup time.
* Added runtime validation for `InstantQuery.search`, now the parameter is validated to be a non-empty string before making a call to the back-end.
* Connection will not automatically start if you pass your own instance of Twilsock via options. Nothing changes if you simply create SyncClient with default options - it will work as usual.

***

### Sync SDK for JavaScript 1.0.0 *(January 18, 2021)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/1.0.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/1.0.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/1.0.0/docs)

#### Changes \[#changes-9]

* The getter for the data of `Document` was renamed from `Document.value` to `Document.data`.
* The getters for the data of `ListItem` and `MapItem` were renamed from `ListItem.value`/`MapItem.value` to `ListItem.data`/`MapItem.data`.
* The `itemUpdated` events for `Map` and `List` now expose the value `previousItemData`, which is a snapshot of the previous data of the item.
* The `itemRemoved` events for `Map` and `List` had their `value` property renamed `previousItemData`.
* The `previousItemData` value for `itemRemoved` events (for `Map` and `List`) is now also available to local users upon removal.
* The `updated` and `removed` events for `Document` now expose the value `previousData`, which is a snapshot of the previous data of the document.
* Documentation improvements.

***

### Sync SDK for JavaScript 0.13.0 *(December 9, 2020)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.13.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.13.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.13.0/docs)

#### Changes \[#changes-10]

* Internal changes and bug fixes.

***

### Sync SDK for JavaScript 0.12.4 *(October 16, 2020)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.4/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.4/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.4/docs)

#### Changes \[#changes-11]

* Dependency bumps.

***

### Sync SDK for JavaScript 0.12.3 *(October 6, 2020)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.3/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.3/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.3/docs)

#### Changes \[#changes-12]

* Dependency bumps.

***

### Sync SDK for JavaScript 0.12.2 *(April 27, 2020)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.2/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.2/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.2/docs)

#### Changes \[#changes-13]

* Connection errors are reported with more details about what actually happened.
* SDK type is now filled as "sync" to be compatible with mobile SDKs.

***

### Sync SDK for JavaScript 0.12.1 *(April 16, 2020)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.1/docs)

#### Changes \[#changes-14]

* Logger name is now set to `"twilio-sync"`.
* Client metadata now gets filled if not provided by the user application to the Sync SDK.
* Added validation to the `id` attribute in OpenOptions to be a string.
* Added validation to `ttl` attribute in OpenOptions to be a number.

***

### Sync SDK for JavaScript 0.12.0 *(January 21, 2020)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.12.0/docs)

#### Changes \[#changes-15]

* LiveQuery can now automatically restore current state of the record set after being offline for a short period of time. It's an internal functional change which requires no special adoption (no API compatibility issue whatsoever), but it might affect network traffic due to LiveQuery now fetching updates which could have happened while SDK was offline.

***

### Sync SDK for JavaScript 0.11.5 *(November 21, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.5/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.5/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.5/docs)

#### Changes \[#changes-16]

* Deleted legacy code to make event handling more clean and consistent with iOS and Android SDKs, a non-functional change.

***

### Sync SDK for JavaScript 0.11.4 *(September 12, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.4/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.4/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.4/docs)

#### Changes \[#changes-17]

* Fixed issues appearing in restrictive browser environments, enabling SDK operation without session storage.

***

### Sync SDK for JavaScript 0.11.2 *(June 20, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.2/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.2/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.2/docs)

#### Changes \[#changes-18]

* Introduced `connectionError` event.
* Fixed a bug, where recovery after partial network degradations did not result in the websocket reconnect.

***

### Sync SDK for JavaScript 0.11.1 *(May 21, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.1/docs)

#### Changes \[#changes-19]

* Removed a redundant external dependency (`backoff` package) and replaced it with `operation-retrier` package, reducing the SDK footprint.
* Fixed a bug, where the timed out requests were retried excessively, generating additional network traffic.

***

### Sync SDK for JavaScript 0.11.0 *(May 10, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.11.0/docs)

#### Changes \[#changes-20]

* New `close` method has been introduced on every Sync primitive (Document, List, Map, Stream, LiveQuery). It can be called at any time to denote that the work on the Sync entity is concluded. Copies of the same Sync entity are reference counted and can be "closed" independently of one another. "Closed" Sync object accepts neither mutation operations nor service events. Once the last copy is closed, SDK unsubscribes from further service events pertaining to this Sync entity, which eventually stops the physical inflow of updates over the network.

***

### Sync SDK for JavaScript 0.10.4 *(April 19, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.10.4/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.10.4/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.10.4/docs)

#### Changes \[#changes-21]

* This release mostly contains cosmetic changes (internal non-functional modifications) and cleanup activities:
  * Removed two external dependencies: `karibu` and `rfc6902`.
  * Deleted legacy code, also reshuffled build scripts and code structure, a non-functional change.
  * Cleaned up documentation — no more references to private constructors.
  * Moved LiveQuery language documentation to a web page, hence a new link in Sync Client documentation that now points to it.

***

### Sync SDK for JavaScript 0.10.2 *(March 29, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.10.2/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.10.2/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.10.2/docs)

#### Changes \[#changes-22]

* This release includes numerous bugfixes for the LiveQuery/InstantQuery objects that drive Flex:
  * Improved error reporting in case of incorrect query expression syntax.
  * Improved query parsing logic.
  * Reduced SDK size by moving some key functionality to the backend.
  * Integrated an updated version of websocket (Twilsock) library containing a fix for dropping timed out requests.

***

### Sync SDK for JavaScript 0.9.2 *(February 15, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.9.2/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.9.2/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.9.2/docs)

#### Changes \[#changes-23]

* This release includes numerous bugfixes for the LiveQuery / InstantQuery objects that drive Flex:
* Improved error reporting and handling in case of incorrect query expression syntax.
* Added validation of `indexName` parameter passed to constructors.
* Improved query parsing logic to detect invalid syntax better.
* Minor updates to documentation.

***

### Sync SDK for JavaScript 0.9.1 *(January 7, 2019)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.9.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.9.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.9.1/docs)

#### Changes \[#changes-24]

* Added `Client.liveQuery()` method to fetch a record set and subscribe to it using an SQL-like syntax, receiving updates matching this query in the future.
* Added `Client.instantQuery()` method to fetch a record set without subscribing to it.

**Note** These functions are only accessible to Flex developers, cannot be used on a regular Sync service instances.

***

### Sync SDK for JavaScript 0.8.6 *(December 7, 2018)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.6/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.6/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.6/docs)

#### Changes \[#changes-25]

* Fixed a connectivity bug that caused unhandled promise rejections.

***

### Sync SDK for JavaScript 0.8.5 *(October 17, 2018)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.5/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.5/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.5/docs)

#### Changes \[#changes-26]

* Integrating an updated version of websocket (`Twilsock`) library containing several fixes for reconnect issues on iOS.

***

### Sync SDK for JavaScript 0.8.4 *(July 6, 2018)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.4/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.4/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.4/docs)

#### Changes \[#changes-27]

* Fixed a syntax error which was causing applications with JS Sync SDK to crash in mobile browsers.

***

### Sync SDK for JavaScript 0.8.3 *(June 25, 2018)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.3/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.3/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.3/docs)

#### Changes \[#changes-28]

* Improve diagnostics, start adding timestamps to log lines.
* Fix a transport bug where some of early requests could fail when sent before SDK initialization completes.

***

### Sync SDK for JavaScript 0.8.1 *(May 21, 2018)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.8.1/docs)

#### Changes \[#changes-29]

* Dramatically improved bandwidth use compared with previous versions ("Pre-authenticated Twilsock").
* Knock-on performance improvements from more efficient bandwidth usage.
* Removed HTTP fallback; all traffic is now directed over the websocket.
* Introduced simplified terminal URL configuration. For traffic shaping, you can now control websocket termination with a stanza like the below:

```javascript
let sync = new SyncClient(token, {
    twilsock: { uri: 'wss://mycustomproxy.org/v3/wsconnect' }
});
```

* Default logging level has been reduced to "silent". Override by supplying the logLevel option, e.g.

```javascript
let sync = new SyncClient(token, { logLevel: 'debug' });
```

***

### Sync SDK for JavaScript 0.7.4 *(January 16, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.4/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.4/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.4/docs)

#### Changes \[#changes-30]

* Exposed `dateUpdated` attribute in Documents, Lists, Maps, and update it in browser session cache timely.

***

### Sync SDK for JavaScript 0.7.2 *(January 9, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.2/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.2/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.2/docs)

#### Changes \[#changes-31]

* Fixed Map `itemRemoved` event payload for local events.
* Improved SyncError exception description and logging.

***

### Sync SDK for JavaScript 0.7.1 *(December 21, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.1/docs)

#### Changes \[#changes-32]

* This release included only minor internal improvements and documentation clarifications.

***

### Sync SDK for JavaScript 0.7.0 *(November 27, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.0/docs)

#### Changes \[#changes-33]

This release introduces some backwards incompatible changes. Please refer to more detailed [release notes to help with migrating](/docs/sync/javascript-sdk-07-release-notes).

* Provided more control over how SDK handles object opening and creation, via OpenOptions parameter.
* Enabled configuring automatic garbage collection via [TTL parameters](https://media.twiliocdn.com/sdk/js/sync/releases/0.7.0/docs/Map.html#setTtl__anchor) for objects and collection items.
* Removed document.get() method, use document.value instead.
* Simplified emitted events, by combining local and remote events under the same name, differentiated by isLocal flag.
* Renamed `collectionRemoved` event to `removed`.
* Started automatically merging multiple state update events into single one, if they occur rapidly.
* Fixed requested page size validation on the client side.
* Made object subscription cancellation handling more robust.
* Enabled returning `null` from mutator functions, gracefully abandoning data change operations.

***

### Sync SDK for JavaScript 0.6.0 *(September 15, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.6.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.6.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.6.0/docs)

#### Changes \[#changes-34]

This release adds **support for [Message Streams](/docs/sync)** with the [`Stream`](https://media.twiliocdn.com/sdk/js/sync/releases/0.6.0/docs/Stream.html) class.

***

### Sync SDK for JavaScript 0.5.10 *(August 21, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.10/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.10/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.10/docs)

#### Changes \[#changes-35]

* This release extends and improves on the API documentation of Sync Objects and the events they fire.

***

### Sync SDK for JavaScript 0.5.9 *(July 31, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.9/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.9/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.9/docs)

#### Changes \[#changes-36]

* `itemRemovedRemotely` events now include the body of the removed item.
* Internal improvements for resiliency.

***

### Sync SDK for JavaScript 0.5.8 *(June 19, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.8/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.8/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.8/docs)

#### Changes \[#changes-37]

* An item-caching bug was fixed, in which the Sync SDK would diverge on very volatile objects
* Internal retry handling was tweaked

***

### Sync SDK for JavaScript 0.5.7 *(May 31, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.7/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.7/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.7/docs)

#### Changes \[#changes-38]

* This release corrects a variety of issues in the `.mutate()` If-Match concurrency update functions. If you're using this feature on any Sync object this release is *critical*.

***

### Sync SDK for JavaScript 0.5.6 *(May 15, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.6/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.6/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.6/docs)

#### Changes \[#changes-39]

* This release corrects handling of non-alphanumeric map UniqueNames and map keys.

***

### Sync SDK for JavaScript 0.5.5 *(May 12, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.5/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.5/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.5/docs)

#### Changes \[#changes-40]

* This release includes improvements to connection recovery.

***

### Sync SDK for JavaScript 0.5.4 *(May 24, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.5/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.5/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.5/docs)

#### Changes \[#changes-41]

* This release includes improvements to performance over weak connections.

***

### Sync SDK for JavaScript 0.5.3 *(March 24, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.3/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.3/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.3/docs)

#### Improvements

* You can now disable the Sync SDK's use of the session cache it with the below incantation. This may be useful if you need to conserve space.

```javascript
new Twilio.Sync.Client(/* token */, { Sync: { enableSessionStorage: false } })
```

#### Bug Fixes

* Documents reverted to an old state if a browser tab was refreshed or clicked-through.
* An object deleted on one SDK could somehow still be reconstituted on another client.
* Map and List items were sometimes not properly deleted among collaborating Sync clients.

***

### Sync SDK for JavaScript 0.5.1 *(March 17, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.1/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.1/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.1/docs)

#### Changes \[#changes-42]

* This patch release fixes a bug in which the *automated session cache* became unreasonably stale, yielding extraneous `update` events on new page-loads. The cache should now be neatly updated on each page-load.

***

### Sync SDK for JavaScript 0.5.0 *(March 16, 2017)*

* [Full Source](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.0/twilio-sync.js)
* [Minified](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.0/twilio-sync.min.js)
* [Documentation](https://media.twiliocdn.com/sdk/js/sync/releases/0.5.0/docs)

#### New Features

* **Automatic Session Cache** This change brings *dramatic speed increases* for Sync re-initialization across page loads (e.g. if your user clicks through a link), particularly with many objects in play. No API change required.
* **Connection Recovery Efficiency** If the Twilsock connection should rupture, recovery of state upon reconnect is now *dramatically more efficient.* To a lesser extent, the same benefit should apply to cold starts (those not benefiting from the session cache), especially with many objects in play.
* **Token `endpoint_id` no longer required** It is no longer necessary to provide an `endpoint_id` field when minting your access tokens; Sync will automatically fingerprint a new endpoint in each browser tab. This change is backwards compatible: if you don't revise your backend code, the endpoint ID will simply be ignored.
* **Token Refresh Improved** Updating the token in your running Sync SDK will no longer cause a reconnect; the same connection will persist. Reachability webhooks, accordingly, will not fire on token refreshes.

#### Bug Fixes \[#bug-fixes-2]

* A vexing bug rarely observed in Edge and Internet Explorer in which sync initialization failed silently has been squashed.
* Handling of retries in the face of rate-limiting (HTTP 429) or overloads (HTTP 503) has been significantly improved.

***

### Sync SDK for JavaScript 0.3.0 *(Oct 25, 2016)*

* [js](https://media.twiliocdn.com/sdk/js/sync/v0.3/twilio-sync.js)
* [min](https://media.twiliocdn.com/sdk/js/sync/v0.3/twilio-sync.min.js)
* [docs](https://media.twiliocdn.com/sdk/js/sync/v0.3/docs)

#### New Features \[#new-features-2]

**Breaking Change:** Sync client constructor now expects the token directly, not an AccessManager. Example:

```bash
syncClient = new Twilio.Sync.Client(tokenResponse.token);
```

* Removes: AccessManager requirement. AccessManager is now only required for token lifecycle management, not for Sync client initialization.

#### Bug Fixes \[#bug-fixes-3]

* Fixed bug where local connection state not always firing on connection state changes

***

### Sync SDK for JavaScript 0.2.6 *(Aug 15, 2016)*

* [js](https://media.twiliocdn.com/sdk/js/sync/releases/0.2.6/twilio-sync.js)
* [min](https://media.twiliocdn.com/sdk/js/sync/releases/0.2.6/twilio-sync.min.js)
* [docs](https://media.twiliocdn.com/sdk/js/sync/releases/0.2.6/docs/)

#### New Features \[#new-features-3]

* Adds `update` method to documents, lists and maps. Method allows for convenient updating of specific keys in the JSON data stored in Sync.
