Sync SDK for iOS

Latest release

The latest release of the Sync SDK for iOS is v0.6. You may download the SDK as a tarfile or wire a dependency with CocoaPods.

source ''

target 'TicTacTwilio' do
   pod 'TwilioSyncClient', '~>0.6.1'

Version History & Changelog

Links are provided to specific patch versions here. We don't recommend using these links unless you have a specific need for a certain patch of a release.

Sync SDK for iOS v0.6.1 (November 22, 2017)


  • Both Sync client creation and updateToken:completion: once again give feedback if the provided token is expired or otherwise invalid.
  • Re-connection to the Sync server will occur faster when bringing the application to the foreground or the device's network connection recovering while in the application.
  • Improved completion handler execution if network connection terminates while an operation is in progress.

Sync SDK for iOS v0.6.0 (September 14, 2017)


  • With the addition of support for iOS 11, we are deprecating support for iOS 8 in Sync iOS 0.6.x.
  • Client creation is now asynchronous, with successful client creations being delivered through the TwilioSyncClient syncClientWithToken:properties:delegate:completion:'s completion method.
  • tokenUpdate: now provides feedback via a completion method of success or failure.
  • Added Steams:
    • New openStreamWithOptions:delegate:completion: method on TwilioSyncClient
    • New TWSStream and TWSStreamMessage objects
    • New TWSStreamDelegate delegate
  • Document Changes:
    • Unused onDocument:remoteErrorOccurred: delegate method removed
    • Redundant data parameter removed from delegate calls, data property is available on document which is passed to delegate method already
    • document property of onDocument:resultErrorOccurred: is no longer flagged as nullable, it will always be presented
  • List Changes:
    • Unused onList:remoteErrorOccurred: delegate method removed
    • Redundant item index parameter removed from delegate calls, index property is available on item which is passed to delegate method already
    • Deleted list item is now passed to onList:remoteItemRemoved: instead of index
    • list property of onList:resultErrorOccurred: is no longer flagged as nullable, it will always be presented
  • Map Changes:
    • Unused onMap:remoteErrorOccurred: delegate method removed
    • Redundant item key parameter removed from delegate calls, key property is available on item which is passed to delegate method already
    • Deleted map item is now passed to onMap:remoteItemRemoved: instead of key
    • map property of onMap:resultErrorOccurred: is no longer flagged as nullable, it will always be presented
  • OpenOptions Changes:
    • Added synchronizationStrategy: declaration, allows specifying of synchronization strategy.
  • Completion blocks now include nullability hints for return values and parameters

Sync SDK for iOS v0.5.0 (June 21, 2017)


  • Introduced TWSTwilioClientCompletion as a parameter to client creation. Clients are no longer created as immediate returns, instead the completion block is called when the client is available and ready for use.
  • updateToken accepts a completion block now to indicate the success or failure of the token update operation.
  • Added optional TWSSynchronizationStrategy (with values TWSSynchronizationStrategyDefault and TWSSynchronizationStrategyAggressive) to TWSOpenOptions.
  • Remotely changed items within Maps no longer are notified via a single set delegate method but instead distinct added and updated delegate methods to convey which operation occurred.
  • Sync SDK log output is now prefixed with TWSY for easier evaluation of logs
  • Deprecation of distinct uniqueName accessor on TWSOpenOptions - the set value will be available via the sidOrUniqueName accessor

Sync SDK for iOS v0.2.0 (March 16, 2017)


  • Resolved potential incompatibility with other Twilio SDKs in the same project
  • Updated framework signing for AppStore compatibility
  • The endpoint_id identifier specified in access tokens is now automatically generated and persisted in the keychain. The following should be observed with this change:
    • endpoint_id is no longer a required identifier in your generated access tokens, you may omit it from this build forward
    • endpoint_id will be ignored if specified with your access token
    • When running in the iOS simulator only, the automatically generated endpoint_id may not persist between runs to the simulator keychain without this [work-around]
  • If a client is initially created with an invalid access token, creation will fail and nil will be returned for the client instance
  • Added new error callback to SyncClient: - (void)syncClient:(nonnull TwilioSyncClient *)client errorReceived:(nonnull TWSError *)error; will be called in case of client failures, for example when using an invalid access token.
  • Security enhancements

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.