ObjectBox C / C++ Database
This is the ObjectBox documentation for our C and C++ APIs. We strive to provide you with the easiest and fastest solution to store and retrieve data.
Jobs: We're looking for a C++ Developer with a ❤️ for performant code
Are you ready to use ObjectBox? These two pages will get you up to speed:
Alternatively, you can also dive into some examples on GitHub right away.
Your opinion matters to us! To make ObjectBox better for our users, we have set up an Anonymous Feedback Form. Please do fill this in (it only takes 2 minutes). Every response is highly appreciated. To rate this documentation, you can use the "Was this page helpful?" smiley at the end of each page.
Otherwise, feel free to open an issue on GitHub or send us your comments to contact[at]objectbox.io - Thank you! - and if you like what you see, we also appreciate a shoutout :)
Latest Versions (Changelogs)
5.1.0 (2026-01-19)
- Fix for deleting transactions in non-owner 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
- Internal updates
Sync
- New Sync protocol V8: using new clients also require a server update
- Remove-operations with object content for Sync filters (optional setting; sync flag)
- Introduce options based Sync client creation (new C API)
- Add DebugLogTxLogs sync flag to log TX log processing on the client side
- Add SkipInvalidTxOps sync flag to skip invalid operations in a TX log on the client side; errors are logged and the TX is only partially applied.
- Remove superfluous sync listener triggers when sync filters "report updates" (SKIP_TX)
- Sync clients compress earlier: reduces disk storage for outgoing data
- Reworked SSL certificates for Apple platforms
- Removed support for older Sync protocol versions before 2024-09; protocol V5+ is now required
5.0.0 (2025-11-27)
User-Specific Data Sync
- Sync filters: define server-side filter expression to sync individual data for each sync user. This is also known as "user-specific data sync" and requires Sync clients version 5.0.
- Client variables: clients may define key/value pairs that can be used in sync filters
New supported platform: Windows ARM64
- Besides x86 and x64, ObjectBox for Windows now also supports ARM64
Sync
- Sync clients may now provide certificate locations for SSL (TLS) connections
Fixes
- Fixed clearing 1:N backlinks for IDs larger than 32-bit (setting backlink ID to 0 on the "1" side)
- In-memory with WAL file: improved error handling
- Safeguard against undefined behavior by panicking in rare illegal usage patterns that are not recoverable. I.e. deleting a (write) transaction in a non-owner thread cannot be safely handled in any other way.
- Various small improvements and updates under the hood.
Examples
- Make each example self-contained, you can e.g. copy an example's directory as a starting point for your own app
- Add a convenient
build.shscript to each example that works the same way across examples, e.g../build.sh runto build and run the example in one step - Make sources more readable (refactorings, added additional comments)
- The Task sync example moved to ObjectBox Sync Examples
4.3.0 (2025-05-12)
- Windows: msvc runtime is now embedded to avoid incompatible msvcp140.dll (e.g. those shipped with some JDKs)
- External property types (via MongoDB connector): JsonToNative to support sub (embedded/nested) documents/arrays in MongoDB
- External property types (via MongoDB connector): 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 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 will already fail on the client now (to better enforce the limit)
- C++: add missing APIs for JWT token credentials
4.2.0 (2025-03-04)
- Extended the model by external names and types: allows defining a different name for an external database, which ObjectBox syncs with.
This prepares upcoming features for our MongoDB Sync Connector.
4.1.0 (2025-01-28)
- New query conditions for map properties (via flex properties): now supports key/value pairs for inequality conditions (e.g. greater than, less than) for string, integer and floating point values
- Vector search: add "Geo" distance type for longitude/latitude pairs
- Various internal improvements
Sync
- Add JWT authentication
- Sync clients can now send multiple credentials for login
4.0 (2024-11-11)
Note: 4.0.3 the first 4.0.x version working with ObjectBox Generator 4.0 and thus is the first full 4.0 release. For individual changes in the runtime library check the GitHub release notes: 4.0.0, 4.0.1 and 4.0.2.
- CMake stubs to easily integrate with ObjectBox Generator 4.0
- ObjectBox now supports vector search ("vector database") to enable efficient similarity searches.
This is particularly useful for AI/ML/RAG applications, e.g. image, audio, or text similarity.
Other use cases include semantic search or recommendation engines.
See https://docs.objectbox.io/ann-vector-search for details. - Adjusting the version number to match the core version (4.0); we will be aligning on major versions from now on.
- Made closing the store more robust; e.g. it waits for ongoing queries and transactions to finish
(please still ensure to clean up properly on your side, this is an additional safety net) - Made Box API more robust when racing against store closing
- Add "vectorsearch-cities" example
Earlier Versions
Changelogs for versions before 4.0 are now in Earlier Versions.
ObjectBox Generator
Check the ObjectBox Generator releases for details.