Published OnDecember 18, 2025December 18, 2025
Ditto 4.14: Faster Initial Sync, Settable Counters, and Expanded Platform Compatibility
Ditto 4.14 delivers significant performance improvements for initial sync scenarios, introduces settable counters, and expands platform compatibility for older Kotlin versions.
Ditto 4.14 focuses on three critical areas: dramatically faster initial sync for large datasets, settable counters that extend CRDT capabilities beyond simple increment/decrement, and broader platform compatibility through support for Kotlin 1.7.20. This release addresses key customer requirements while improving the developer experience across Android and iOS platforms.
To review the complete list of changes for each SDK see Release Notes.
Major Initial Sync Performance Improvements
Ditto 4.14 introduces intelligent batching of file system writes, delivering substantial performance gains during initial sync scenarios. The optimization becomes increasingly impactful as document counts grow, with the most dramatic improvements at 10,000+ documents.
Performance Results
Benchmarking reveals significant speed improvements across both Android and iOS platforms:
Android (Kotlin) - Samsung Galaxy S22
- 100 documents: 1.7x faster vs 4.13.1
- 10,000 documents: 1.6x faster vs 4.13.1
- 100,000 documents: 2.1x faster vs 4.13.1
- 500,000 documents: 3.2x faster vs 4.13.1
- 1,000,000 documents: 2.4x faster vs 4.13.1

iOS (Swift) - iPhone 15
- 50,000 documents: 1.4x faster
- 100,000 documents: 1.6x faster
- 500,000 documents: 1.9x faster
- 1,000,000 documents: 1.9x faster

Android shows improvements across nearly all document counts, while iOS demonstrates the greatest gains at 50,000+ documents. The performance benefits scale with dataset size, making this particularly valuable for applications syncing large catalogs, inventories, or historical data.
What Changed
Previous versions wrote document updates to disk more frequently, creating significant I/O overhead during large sync operations. Version 4.14 groups multiple document writes into batched operations, reducing file system operations while maintaining consistency guarantees. The optimization scales naturally with document count—the larger your dataset, the greater the benefit.
When This Helps
This optimization significantly improves:
- Initial sync of large datasets (50,000+ documents)
- Onboarding new devices to mesh networks with substantial existing data
- Bulk data imports and migrations
- Mobile devices syncing large catalogs or inventory systems
Actual performance will vary based on your data patterns, document sizes, network conditions, and device characteristics. The benchmarks used documents under 1 KB in a single collection, representing typical production patterns.
DQL Settable Counter Type
Ditto 4.14 introduces COUNTER, a new CRDT type that extends the increment/decrement capabilities of the legacy PN_COUNTER with the ability to explicitly set counter values. While maintaining conflict-free distributed counting, settable counters add a RESTART operation using last-write-wins semantics.
For more full docs see Settable Counters.
Three Operations
The COUNTER type provides:
INCREMENT BY - Add or subtract integer values (same as PN_COUNTER):
UPDATE COLLECTION products (stock_count COUNTER)
APPLY stock_count INCREMENT BY 5
WHERE _id = '123'RESTART WITH - Set the counter to a specific value using last-write-wins:
UPDATE COLLECTION products (stock_count COUNTER)
APPLY stock_count RESTART WITH 100
WHERE _id = '123'RESTART - Reset the counter to zero:
UPDATE COLLECTION products (stock_count COUNTER)
APPLY stock_count RESTART
WHERE _id = '123'Kotlin 1.7.20 Compatibility
The Ditto Kotlin SDK now supports Kotlin 1.7.20 and above, expanding compatibility with older Android projects and reducing upgrade friction for existing applications. This addresses customer requirements for maintaining stable toolchain versions in large enterprise codebases.
Additional Improvements
Beyond the headline features, Ditto 4.14 includes several reliability and stability improvements:
- Enhanced error recovery - Additional mechanisms for document deserialization errors reduce potential crashes and data loss scenarios
- Improved diagnostics - More detailed logging when peers receive data with hash mismatches makes troubleshooting easier
- Bug fixes - Resolved DQL SELECT query deadlocks on indexed collections within explicit transactions, and corrected index path query plan consistency
For a complete breakdown of all platform-specific changes and fixes in 4.14, read the full release notes in the Ditto Portal.
Getting Started
Ditto 4.14 is now available to all users! Start leveraging these powerful new features to enhance your sync performance, query capabilities, and platform integrations.
Explore our release notes for a full breakdown of changes.
New to Ditto? Sign up through the Ditto Portal and start building today.
We want to hear from you!
Your feedback helps us shape the future of Ditto. Try out the new features, and let us know what you think!
💬 Have questions or feedback? Connect with us on LinkedIn, fill out Contact Us Form, or reach out to Ditto’s Customer Support.
Thank you for your continued support—we can’t wait to see how you use Ditto to build the next generation of edge-native applications!




