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!

Read more
Stories
February 3, 2026
Speed Is Overrated: Why the Fastest QSRs Shouldn't Chase the Timer
by
Ryan Ratner
How can QSRs continue to optimize for speed without it having a negative effect on customer experience? 
Stories
January 26, 2026
Reliability: The Invisible Advantage in Food Service
by
Ryan Ratner
Consumers never think about reliability until it breaks, which is exactly why it's your most important competitive advantage.