---
title: Ditto v3 for Swift
slug: v4-4/s4onivzJKwk_muwD5TzUy
docTags: 
createdAt: 2023-08-22T18:47:32.337Z
---

`swift` `ios` `updates` `version` `changelog`&#x20;

***

# DittoSwift Version 3.0.11

:::Changelog{title="Released: Thu Aug 10th 2023, 7:07 am"}
::ChangelogItem{type="improved" description="Changed: Improved clarity of error messages when data on disk cannot be read by this version following a downgrade from a newer version of Ditto. (#9267)"}

::ChangelogItem{type="improved" description="Changed: Print some internal errors in a more human-readable format. (#9495)"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.11'
```
:::

# DittoSwift Version 3.0.10

:::Changelog{title="Released: Fri Jun 30th 2023, 8:25 pm"}
::ChangelogItem{type="fixed" description="Fixed: a potential crash if a document attachment was malformed (#9045)"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.10'
```
:::

# DittoSwift Version 3.0.9

:::Changelog{title="Released: Wed Jun 14th, 2023, 8:23 am"}
::ChangelogItem{type="fixed" description="Fixed: a crash when using the"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.9'
```
:::

# DittoSwift Version 3.0.9-alpha1

:::Changelog{title="Released: Mon May 22nd 2023, 4:34 pm"}
::ChangelogItem{type="improved" description="Synchronized version bump release"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.9-alpha1'
```
:::

# DittoSwift Version 3.0.8

:::Changelog{title="Released: Thu May 18th, 2023, 11:33 pm"}
::ChangelogItem{type="added" description="Added: dSYMs are now bundled inside the XCFramework to improve crash report symbolication."}

::ChangelogItem{type="improved" description="Changed: The dSYMs directory has been removed from the root directory of the CocoaPods artifact since it's no longer required now that dSYMs are bundled inside XCFreameworks."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.8'
```
:::

# DittoSwift Version 3.0.7

:::Changelog{title="Released: Fri Apr 7th, 2023, 9:28 am"}
::ChangelogItem{type="fixed" description="Fixed: Resolved an issue with logging when the stdout is not available."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.7'
```
:::

# DittoSwift Version 3.0.6

:::Changelog{title="Released: Wed Mar 15, 2023, 6:00 pm"}
::ChangelogItem{type="fixed" description="Fixed: Issue where Ditto instance using"}

::ChangelogItem{type="fixed" description="Fixed: Potential crash on Windows and Linux from invoking"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.6'
```
:::

# DittoSwift Version 3.0.5

:::Changelog{title="Released: Tue Feb 28, 2023, 9:31 pm"}
::ChangelogItem{type="improved" description="Changed: some threads spawned by the SDK no longer wait up to 30 seconds before being stopped."}

::ChangelogItem{type="added" description="Changed: added more logging when a peer is unable to connect to another peer because of no overlapping supported protocol versions."}

::ChangelogItem{type="fixed" description="Fixed: replication hanging under some circumstances, especially WebSocket connections to Big Peer"}

::ChangelogItem{type="fixed" description="Fixed: canceling subscriptions for queries with args would not work, the subscription would remain active indefinitely."}

::ChangelogItem{type="fixed" description="Fixed: some memory leaks."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.5'
```
:::

# DittoSwift Version 3.0.4

:::Changelog{title="Released: Fri Jan 27, 2023, 4:10 pm"}
::ChangelogItem{type="improved" description="Changed: Slow or blocked write transactions now log hints showing the waiting and blocking transactions"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.4'
```
:::

# DittoSwift Version 3.0.3

:::Changelog{title="Released: Thu Jan 26, 2023, 6:35 am"}
::ChangelogItem{type="fixed" description="Fixed: an issue that could cause Ditto to hang if more than 500 peers were encountered."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.3'
```
:::

# DittoSwift Version 3.0.3-alpha2

:::Changelog{title="Released: Mon Jan 23, 2023, 10:05 am"}
::ChangelogItem{type="fixed" description="Resolved an issue where presence evictions could deadlock on startup with large numbers of peers"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.3-alpha2'
```
:::

# DittoSwift Version 3.0.2

:::Changelog{title="Released: Fri Jan 20, 2023, 1:20 pm"}
::ChangelogItem{type="fixed" description="Fixed issue preventing clean Ditto shutdown"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.2'
```
:::

# DittoSwift Version 3.0.1

:::Changelog{title="Released: Fri Jan 13, 2023, 6:57 pm"}
::ChangelogItem{type="added" description="Added: DiskUsage class which can be used to monitor disk usage."}

::ChangelogItem{type="added" description="Added: diskUsage property to Ditto class for access to a DiskUsage instance."}

::ChangelogItem{type="added" description="Added: diskUsagePublisher() method to Ditto class, returning a DiskUsagePublisher."}

::ChangelogItem{type="added" description="Added: DiskUsageItem class which contains data about the space used by files in the Ditto working directory."}

::ChangelogItem{type="improved" description="Changed: better readability of data sizes and durations in logs."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.1'
```
:::

# DittoSwift Version 3.0.0

:::Changelog{title="Released: Fri Dec 16, 2022, 5:38 am"}
::ChangelogItem{type="improved" description="Removed: the DittoRGA constructor. You cannot create new RGAs."}

::ChangelogItem{type="improved" description="Removed: the deprecated DittoMutableRGA type. You cannot mutate existing RGAs."}

::ChangelogItem{type="improved" description="Deprecated: DittoDocument.typed<Codable>(as:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoMutableDocument.typed<Codable>(as:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoTypedDocument<Decodable> class."}

::ChangelogItem{type="improved" description="Deprecated: DittoCollection.upsert<Encodable>(_,writeStrategy:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoPendingIDSpecificOperation.update<Codable>(using:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoScopedWriteTransaction.upsert<Codable>(_,writeStrategy:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoWriteTransactionPendingIDSpecificOperation.update<Codable>(using:) method."}

::ChangelogItem{type="improved" description="Removed: observe() and observeWithNextSignal() methods of DittoPendingCollectionsOperation, DittoPendingCursorOperation, and DittoPendingIDSpecificOperation. Please use the corresponding observeLocal(deliverOn:eventHandler:) and observeLocalWithNextSignal(deliverOn:eventHandler:) variants along with a separate call to subscribe() instead. See https://docs.ditto.live/ios/common/concepts/syncing-data#subscribe"}

::ChangelogItem{type="added" description="Added: class DittoPresence as entry point for all of presence functionality, accessible via the newly introduced presence property on the Ditto object."}

::ChangelogItem{type="added" description="Added: struct DittoPresenceGraph and related sub-types DittoAddress, DittoConnection, DittoConnectionType, and DittoPeer."}

::ChangelogItem{type="added" description="Added DittoPresence.GraphPublisher, replaces the now deprecated Ditto.RemotePeersPublisher. You can get a graph publisher via the graphPublisher() on the newly introduced DittoPresence (accessible via newly introduced presence property of Ditto)."}

::ChangelogItem{type="improved" description="Deprecated: methods observePeers() and observePeersV2() of Ditto, please use observe() of DittoPresence instead (accessible via newly introduced presence property of Ditto)."}

::ChangelogItem{type="improved" description="Deprecated: DITRemotePeer, replaced by DITPeer."}

::ChangelogItem{type="improved" description="Deprecated: DITPeersObserver, replaced by DITObserver protocol."}

::ChangelogItem{type="improved" description="Deprecated: DITPeersObserverV2, replaced by DITObserver protocol."}

::ChangelogItem{type="improved" description="Deprecated: Ditto.RemotePeersPublisher and corresponding remotePeersPublisher() method on Ditto. Please use newly introduced DittoPresence.GraphPublisher and method graphPublisher() of DittoPresence instead."}

::ChangelogItem{type="improved" description="Removed: all persistenceDirectory arguments from all of the identity type constructors."}

::ChangelogItem{type="improved" description="Changed: performance improvements."}

::ChangelogItem{type="added" description="Added: disableSyncWithV2 method to Ditto. This allows you to explicitly opt-in to disabling the ability to sync with Ditto peers running any version of the SDK in the v2 series of releases. Assuming this succeeds then this peer will only be able to sync with other peers using SDKs in the v3 series of releases. Note that this disabling of sync spreads to peers that sync with a peer that has disabled, or has (transitively) had disabled, syncing with v2 SDK peers."}

::ChangelogItem{type="improved" description="Improved: reliability if app crashes occur while persisting authentication data."}

::ChangelogItem{type="added" description="Added: statusPublisher() method to DittoAuthenticator."}

::ChangelogItem{type="added" description="Added: DittoAuthenticator.StatusPublisher, a Combine publisher for DittoAuthenticationStatus change events."}

::ChangelogItem{type="improved" description="Improved: log increased detail to help debug blocked write transactions."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.0'
```
:::

# DittoSwift Version 3.0.0-alpha3

:::Changelog{title="Released: Mon Dec 12, 2022, 5:19 am"}
::ChangelogItem{type="improved" description="Synchronized version bump release"}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.0-alpha3'
```
:::

# DittoSwift Version 3.0.0-alpha2

:::Changelog{title="Released: Tue Dec 6, 2022, 8:01 am"}
::ChangelogItem{type="fixed" description="Fixed: Incorrect import of DITAddress.h header in DittoObjC, which was causing an issue in DittoSwift."}

::ChangelogItem{type="improved" description="Improved: reliability if app crashes occur while persisting authentication data."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.0-alpha2'
```
:::

# DittoSwift Version 3.0.0-alpha1

:::Changelog{title="Released: Thu Dec 1, 2022, 12:01 pm"}
::ChangelogItem{type="improved" description="Removed: the DittoRGA constructor. You cannot create new RGAs."}

::ChangelogItem{type="improved" description="Removed: the deprecated DittoMutableRGA type. You cannot mutate existing RGAs."}

::ChangelogItem{type="improved" description="Deprecated: DittoDocument.typed<Codable>(as:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoMutableDocument.typed<Codable>(as:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoTypedDocument<Decodable> class."}

::ChangelogItem{type="improved" description="Deprecated: DittoCollection.upsert<Encodable>(_,writeStrategy:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoPendingIDSpecificOperation.update<Codable>(using:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoScopedWriteTransaction.upsert<Codable>(_,writeStrategy:) method."}

::ChangelogItem{type="improved" description="Deprecated: DittoWriteTransactionPendingIDSpecificOperation.update<Codable>(using:) method."}

::ChangelogItem{type="improved" description="Removed: observe() and observeWithNextSignal() methods of DittoPendingCollectionsOperation, DittoPendingCursorOperation, and DittoPendingIDSpecificOperation. Please use the corresponding observeLocal(deliverOn:eventHandler:) and observeLocalWithNextSignal(deliverOn:eventHandler:) variants along with a separate call to subscribe() instead. See https://docs.ditto.live/ios/common/concepts/syncing-data#subscribe"}

::ChangelogItem{type="added" description="Added: class DittoPresence as entry point for all of presence functionality, accessible via the newly introduced presence property on the Ditto object."}

::ChangelogItem{type="added" description="Added: struct DittoPresenceGraph and related sub-types DittoAddress, DittoConnection, DittoConnectionType, and DittoPeer."}

::ChangelogItem{type="added" description="Added DittoPresence.GraphPublisher, replaces the now deprecated Ditto.RemotePeersPublisher. You can get a graph publisher via the graphPublisher() on the newly introduced DittoPresence (accessible via newly introduced presence property of Ditto)."}

::ChangelogItem{type="improved" description="Deprecated: methods observePeers() and observePeersV2() of Ditto, please use observe() of DittoPresence instead (accessible via newly introduced presence property of Ditto)."}

::ChangelogItem{type="improved" description="Deprecated: DITRemotePeer, replaced by DITPeer."}

::ChangelogItem{type="improved" description="Deprecated: DITPeersObserver, replaced by DITObserver protocol."}

::ChangelogItem{type="improved" description="Deprecated: DITPeersObserverV2, replaced by DITObserver protocol."}

::ChangelogItem{type="improved" description="Deprecated: Ditto.RemotePeersPublisher and corresponding remotePeersPublisher() method on Ditto. Please use newly introduced DittoPresence.GraphPublisher and method graphPublisher() of DittoPresence instead."}

::ChangelogItem{type="improved" description="Removed: all persistenceDirectory arguments from all of the identity type constructors."}

::ChangelogItem{type="improved" description="Changed: performance improvements."}

::ChangelogItem{type="added" description="Added disableSyncWithV2 method to Ditto. This allows you to explicitly opt-in to disabling the ability to sync with Ditto peers running any version of the SDK in the v2 series of releases. Assuming this succeeds then this peer will only be able to sync with other peers using SDKs in the v3 series of releases. Note that this disabling of sync spreads to peers that sync with a peer that has disabled, or has (transitively) had disabled, syncing with v2 SDK peers."}
:::

:::CodeblockTabs
installation

```none
pod 'DittoSwift', '=3.0.0-alpha1'
```
:::

