All Versions
38
Latest Version
Avg Release Cycle
120 days
Latest Release
35 days ago

Changelog History
Page 1

  • v5.4.2 Changes

    May 06, 2026
    • ⚡️ Update Android and JVM libraries to database version 5.3.2-2026-05-05
      • Fixed a corner case with "unique replace on conflict" and absent (e.g. null) sync clock value
      • Internal fixes and improvements
  • v5.4.1 Changes

    March 30, 2026
    • ⚡️ Update Android and JVM libraries to database version 5.3.1-2026-03-26

    🔀 Sync

    • 🚑 Critical fix for sync clock property handling
  • v5.4.0 Changes

    March 24, 2026
    • ⚡️ Update Android and JVM libraries to database version 5.3.0-2026-03-23
    • Admin: Status tab "Count and Sizes" and "System and Info" improved

    🔀 Sync

    • Customizable conflict resolution via the new annotations @SyncClock and @SyncPrecedence (see docs for details)
    • 🛠 Fix bad Sync client state after multiple full sync messages were interrupted
    • 🛠 Fix adding indexes to Sync types
  • v5.3.0 Changes

    March 11, 2026
    • 🔌 Gradle plugin: to apply the plugin, it is no longer necessary to add a manual mapping of the plugin ID in your projects Gradle settings file. This was resolved by publishing Gradle plugin marker artifacts. #960
    • 🔌 Gradle plugin: it is no longer necessary to apply the plugin after the dependencies block when manually including ObjectBox dependencies.
    • ⚡️ Update database libraries for Android and JVM to database version 5.2.0-next-2026-03-10
    • 🐎 (Minor) performance improvements of HNSW vector search on Linux ARM targets

    🔀 Sync

    • 🔀 Sync protocol version 10
    • ⚡️ SyncClient: support updating filter variables. After login, stage updates using put and remove, then schedule to send them to the server with applyFilterVariables().
    • ⚡️ Update client sync filters variables when online
    • Clients report errors to the server

    Migration instructions

    ⬇️ Drop the Gradle plugin ID mapping

    If your settings.gradle.kts or settings.gradle file contains lines similar to:

    pluginManagement {
        repositories {
            mavenCentral()
        }
    
        resolutionStrategy {
            eachPlugin {if(requested.id.id=="io.objectbox") {
                    useModule("io.objectbox:objectbox-gradle-plugin:${requested.version}")
                }
            }
        }
    }
    

    ⚡️ Update them to remove the plugin mapping configuration:

    pluginManagement {
        repositories {
            mavenCentral()
        }
    }
    
    🔌 Apply the plugin using plugins syntax

    🏗 If your build scripts are applying the plugin after the dependencies block similar to:

    dependencies {// ... }apply(plugin="io.objectbox")
    

    🔄 Change them to apply the plugin using plugins syntax:

    plugins {
        id("io.objectbox")
    }
    
    dependencies {// ... }
    
  • v5.2.0 Changes

    February 17, 2026
    • 🔌 The ObjectBox Gradle plugin requires JDK 11 and Android Gradle Plugin 8.1 or newer.
    • ⚡️ Update database libraries for Android and JVM to database version 5.1.1-pre-2026-02-16.
    • Admin: new "Counts and Sizes" view (via Status page) to give an overview over all types their object counts and sizes
    • 💻 Admin: fix reload via browser to stay on the page
    • Admin: schema view to display flags as text
    • Admin: refresh button for the data view

    🔀 Sync

    • ➕ Add simplified Sync.client(boxStore) helper method. Move URL and credentials options to builder, add variants that accept multiple URLs and credentials. Deprecate the existing helper methods.
    • ➕ Add Sync client builder option to configure Sync behavior using SyncFlags.
  • v5.1.0 Changes

    January 26, 2026
    • ➕ Add ObjectBoxThreadPoolExecutor, a default implementation of a ThreadPoolExecutor that properly cleans up thread-local Box resources.
    • ➕ Add methods newCachedThreadPoolExecutor() and newFixedThreadPoolExecutor() to BoxStore to help create instances of ObjectBoxThreadPoolExecutor for common uses.
    • ➕ Add methods newCachedThreadPoolDispatcher() and newFixedThreadPoolDispatcher() to the Kotlin extension functions for BoxStore to help create common coroutine dispatchers backed by an ObjectBoxThreadPoolExecutor.
    • 👕 BoxStore.runInTx and callInTx close a write cursor even if the runnable or callable throws. This would previously result in cursor not closed warnings when the cursor was closed by the finalizer daemon.
    • BoxStore no longer gets stuck while closing when deleting transactions created in other threads with open relation cursors.
    • 🔧 Admin: the Schema view now shows if external name of types and properties if configured.
    • Admin: the Schema view now shows the type as text (e.g. "String") instead of the internal type ID.

    🔀 Sync

    • 🆕 New Sync protocol V8: using new clients also requires a server update
    • ✂ Remove superfluous sync listener triggers when sync filters "report updates" (SKIP_TX)
    • 🔀 Sync clients compress earlier: reduces disk storage for outgoing data
    • Reworked certificates for Apple platforms
    • ✂ Removed support for older Sync protocol versions before 2024-09; protocol V5+ is now required.
  • v5.0 Changes

    September 30, 2025

    🔀 Sync

    ⚡️ Regular updates

    • ⚡️ Update runtime libraries for Android and JVM to database version 5.0.0-2025-09-27.

      • Android: Prior to Android 8.0, don't crash when inserting objects with string lists whose size exceeds the local
        reference table size. #1215
      • ToOne relations: when deleting an object with an ID larger than the maximum 32-bit unsigned integer
        (4_294_967_295) that is used as the target object of a ToOne, correctly re-set the target ID of the ToOne to
        0. objectbox-dart#740
    • 🛠 Fix a race condition with a closing store and still active transactions that kept the store from closing.
      For Android this may fix some rare ANR issues.

    • When re-creating a BoxStore for the same directory and close() wasn't called on the previous instance, don't throw
      an "Another BoxStore is still open for this directory" exception. Note that calling close() is recommended before
      creating a new instance. #1201

    • 🏗 When using BoxStoreBuilder.buildDefault(), don't leak the Store when setting it as default fails.

    • 🖨 To help diagnose, print stacks of all threads in the internal thread pool if shutting it down takes too long when
      closing BoxStore.

    • ✂ Remove deprecated APIs:

      • Query.setParameters methods that set a single parameter, use the setParameter methods instead.
      • Box.removeByKeys, use Box.removeByIds instead.
      • BoxStore.sizeOnDisk, use getDbSize or getDbSizeOnDisk instead which properly handle in-memory databases.
      • BoxStoreBuilder.debugTransactions, use debugFlags(DebugFlags.LOG_TRANSACTIONS_READ | DebugFlags.LOG_TRANSACTIONS_WRITE) instead.
      • SyncServerBuilder peer configuration options, use the clusterPeer options instead.
      • io.objectbox.DebugFlags, use io.objectbox.config.DebugFlags instead.
      • ValidateOnOpenMode constants, use ValidateOnOpenModePages instead.
      • DAOcompat compatibility query methods. Use the regular query API instead.
  • v4.3.1 Changes

    August 12, 2025
    • Requires at least Kotlin compiler and standard library 1.7.
    • Data Observers: closing a Query now waits on a running publisher to finish its query, preventing a VM crash. #1147
    • ⚡️ Update database libraries for Android and JVM to version 4.3.1 (include database version 4.3.1-2025-08-02).
  • v4.3.0 Changes

    May 13, 2025
    • 👍 Basic support for boolean array properties (boolean[] in Java or BooleanArray in Kotlin).
    • 🏁 The Windows database library now statically links the MSVC runtime to avoid crashes in incompatible msvcp140.dll
      shipped with some JDKs.
    • 🔀 External property types (via MongoDB connector):

      • add JSON_TO_NATIVE to support sub (embedded/nested) documents/arrays in MongoDB
      • support ID mapping to UUIDs (v4 and v7)
    • Admin: add class and dependency diagrams to the schema page (view and download).

    • Admin: improved data view for large vectors by displaying only the first elements and the full vector in a dialog.

    • Admin: detects images stored as bytes and shows them as such (PNG, GIF, JPEG, SVG, WEBP).

    🔀 Sync

    • ➕ Add "Log Events" for important server events, which can be viewed on a new Admin page.
    • Detect and ignore changes for objects that were put but were unchanged.
    • The limit for message size was raised to 32 MB.
    • 👍 Transactions above the message size limit now already fail on the client (to better enforce the limit).
  • v4.2.0 Changes

    March 05, 2025
    • ➕ Add new query conditions equalKeyValue, greaterKeyValue, lessKeyValue, lessOrEqualKeyValue, and
      📄 greaterOrEqualKeyValue that are helpful to write complex queries for string maps.
      👍 These methods support String, long and double data types for the values in the string map.
    • 🗄 Deprecate the containsKeyValue condition, use the new equalKeyValue condition instead.
    • 🏗 Android: to build, at least Android Plugin 8.0 and Gradle 8.0 are required.