All Versions
Latest Version
Avg Release Cycle
62 days
Latest Release
217 days ago

Changelog History
Page 1

  • v0.18.0 Changes

    October 31, 2022
    • Date properties can now be tagged as expiration time; which can be then be easily evicted
    • ๐Ÿ”ง Tree API: various additions and improvements, e.g. OBXTreeOptionFlags to configure the tree behavior
    • ๐Ÿ†• New query condition to match objects that have a given number of relations
    • ๐Ÿ†• New "max data size" store setting
    • Enabled stricter compiler settings
    • โž• Added stacktraces on errors (Linux only; very lightweight as it uses external addr2line or llvm-symbolizer)
    • โž• Added log callback for most important logs
    • Consolidated "user data" passing as the last parameter
    • Various internal improvements


    • โž• Added BoxTypeless, QueryBuilderBase and QueryBase: these can be used without generated code and template types.
    • ๐Ÿ†• New APIs to get the schema IDs for entity types and properties
    • โž• Added two methods to Store to await asynchronous processing
    • โž• Added "internal" namespace so that internal members do not spill into the obx namespace
    • Move more implementations to OBX_CPP_FILE

    ๐Ÿ”€ Sync

    • ๐Ÿ”€ Custom protocols for Sync: plugin your own messaging protocol, which ObjectBox Sync will run on
    • ๐Ÿ‘Œ Improvements to run Sync Server with limited disk space (e.g. on small devices)
    • ๐Ÿ”€ Tree Sync improvements; e.g. consolidate conflicts
    • ๐Ÿ— WebSockets (sync protocol) is now a feature, which can be turned off (special build version)
    • ๐ŸŽ Performance optimizations
  • v0.17.0 Changes

    June 15, 2022
    • โž• Added a "weak store" API providing weak reference for stores (typically used by background threads)
    • โž• Added Store ID API, e.g. getting a store by its ID
    • ๐ŸŽ Various internal improvements including minor optimizations for binary size and performance


    • New "OBX_CPP_FILE" define to place declarations in a single .cpp/.cc file: improves compilation time and results
    • ๐Ÿ†• New "Exception" base class for all thrown exceptions
    • ๐Ÿ‘ Various internal improvements, e.g. a "internal" namespace to better distinguish from userland API
  • v0.16.0 Changes

    May 06, 2022
    • ๐Ÿ‘ Allow UTF-8 for database directories on Windows (available for other platforms before)
    • Various internal improvements


    • Promoted Options to a top level class, as nested classes cannot be declared forward
    • ๐Ÿ†• New #define to disable FlatBuffers includes to simplify new project setup
    • ๐Ÿ‘ป Rename Exception to DbException
    • Minor improvements
  • v0.15.2 Changes

    February 15, 2022
    • โž• Add store cloning
    • ๐Ÿ›  Fix attaching to a reopened store
  • v0.15.1 Changes

    January 25, 2022
    • ๐Ÿ›  Fix non-unique indexes triggering unique constraint violations in corner cases (introduced in 0.15.0)
    • ๐ŸŽ Minor performance improvements with hashed indexes
    • ๐Ÿ’ป Admin UI now supports multiple sessions to the same host using different ports (session ID via HTTP request)

    ๐Ÿ”€ Sync

    • ๐ŸŽ Performance improvements for compression and decompression
  • v0.15.0 Changes

    December 09, 2021
    • ๐Ÿ†• New "Flex" data type that can contain data of various types like integers, floating points, strings, lists and maps
    • ๐Ÿ†• New query conditions for Flex lists to find a specific element
    • ๐Ÿ†• New query conditions for Flex maps to find elements with a specific key or key/value pair
    • New unique on-conflict strategy: replace conflicting objects (OBXPropertyFlags_UNIQUE_ON_CONFLICT_REPLACE)
    • ๐Ÿ†• New functions to attach to existing stores using only the file path (in the same process)
    • New APIs for ObjectBox Admin, the web based UI (formerly known as Object Browser): obx_admin_*
    • ๐ŸŽ Minor performance improvements for indexed access
    • ๐ŸŽ Major performance improvements for tree/GraphQL queries
    • ARM binaries are now built for minimal size reducing the library size significantly
    • New "no_reader_thread_locals" store option
    • ๐Ÿ— Enable debug logging (requires a special build)
    • API: Type for query offsets and limits was changed from uint64_t to size_t
    • API: rarely used obx_txn_mark_success() was removed; use obx_txn_success()
    • API: feature checks consolidated to only use obx_has_feature()
    • Many internal improvements
    • Core version 3.0.1-2021-12-09

    ๐Ÿ”€ Sync

    • ๐Ÿ”€ New API for embedded server mode: obx_sync_server_* (implementation available on request)
  • v0.14.0 Changes

    May 13, 2021
    • change obx_query_prop_count() to respect case-sensitivity setting when counting distinct strings
    • ๐Ÿ”„ change OBXSyncCredentialsType values to start at 1
    • add obx_query_find_first() to get a first object matching the query
    • add obx_query_find_unique() to get the only object matching the query
    • add obx_async_put_object4() accepting a put_mode
    • โšก๏ธ updated ARMv7hf toolchain, now requires GLIBC v2.28 (e.g. Raspbian 10, Ubuntu 20.04)
    • semi-internal Dart APIs: add query streaming and finalizers
  • v0.13.0 Changes

    March 16, 2021
    • โž• add Sync binary library variants for all supported platforms
    • โž• add MacOS universal binary library, supporting Intel x64 and Apple Silicon arm64
    • ๐Ÿ”€ split Sync symbols out of objectbox.h/pp into objectbox-sync.h/pp
    • โž• add Sync server-time getter, listener and local-to-server diff info - to access server time info on clients
    • โž• add Sync heartbeat interval configuration and an option to send one immediately
    • โšก๏ธ semi-internal: update Dart/Flutter SDK to v2.0
  • v0.12.0 Changes

    February 05, 2021
    • โž• add Linux ARMv8 (aarch64) native binary library
    • ๐Ÿ”€ add obx_sync_* APIs (actual functionality is only available in a sync-enabled version; see
    • add obx_has_feature(), and OBXFeature enum: please use these instead of the following, now deprecated functions: obx_supports_bytes_array(), obx_supports_time_series(), and obx_sync_available()
    • โœ‚ add obx_remove_db_files() to delete database files in a given directory
    • add optional OBXEntityFlags_SHARED_GLOBAL_IDS for SYNC_ENABLED entities
    • semi-internal: add custom async callback APIs for Dart/Flutter language binding
  • v0.11.0 Changes

    November 12, 2020
    • โšก๏ธ update CMakeLists.txt to simplify integration for users, e.g. with FetchContent,
      โšก๏ธ see the updated installation docs
    • change cursor and box read functions get/first/current/next void ** argument to const void**
    • ๐Ÿ”„ change multiple query and query builder functions int count argument to size_t count
    • change observer signatures (obx_err return value and size_t count argument)
    • new obx_model_entity_flags()
    • new obx_opt_async_*() to configure async box behavior
    • ๐Ÿ†• new greater-or-equal and less-or-equal query conditions for integers and floats
    • new obx_query_offset_limit() setter for offset and limit in a single call
    • ๐Ÿ”€ new obx_sync_available() to check whether the loaded runtime library supports ObjectBox Sync
    • ๐Ÿ‘• clean up linter warnings in the examples and objectbox.h(pp)

    C++ (only)

    • ๐Ÿ“‡ rename objectbox-cpp.h to objectbox.hpp
    • ๐Ÿ”„ change C++ Store Options to a "builder" pattern and expose all available options
    • ๐Ÿ†• new C++ AsyncBox and Box::async() to expose asynchronous operations