Flutter databases – Hive, ObjectBox, sqflite, Isar and Moor (e.g. Drift, floor)
Flutter, the renowned cross-platform mobile framework, has been gaining immense popularity among developers worldwide. In 2024, Flutter had over 1 million monthly active developers, was behind nearly 30% of new iOS apps, and continued to be the most popular framework for cross-platform development. Dart, the programming language behind Flutter, was first released in 2011 and already made it to spot 28 on the Tiobe index as of February 2025.
This growth comes from a strong community, with more than 1,400 contributors, 10,000 package publishers, and over 50,000 available packages. As the Flutter community expands, the demand for efficient Flutter databases is also increasing. Developers now have access to a range of Flutter database options that cater to various needs and preferences.
In this article, we’ll focus specifically on local storage solutions, as these are essential for enabling offline functionality, improving performance, ensuring data persistence, enhancing data privacy and security, and supporting edge computing capabilities. Furthermore, local data storage is needed to promote sustainability. Let’s dive into the current local database landscape for Flutter and compare the most popular options.
Flutter databases / Flutter Dart data persistence
While the database market is huge and dynamic, there are only few options to choose from if you are a Flutter / Dart app developer. Before we dive into the Flutter database options, advantages and disadvantages, we’re taking a very quick look at databases to make sure, we share a common ground.
What is a database?
A database is a piece of software that allows the storage and systematic use of digital information, in other words: data persistence. As opposed to mere caching, data is reliably stored and available to work with unless actively deleted. A database typically allows developers to store, access, search, update, query, and otherwise manipulate data in the database via a developer language or API. These types of operations are done within an application, in the background, typically hidden from end users. Many applications need a database as part of their technology stack. The most typical database operations are CRUD: Create, Read, Update, Delete.
What are the major types of databases?
There are many types of databases. For our purpose, the most important differentiations are non-relational (NoSQL) versus relational databases (SQL), cloud databases versus edge databases, and maybe embedded versus in-memory. However, databases can be further distinguished by additional criteria e.g. the data types they support, or the way they scale – and definitions can vary.
What is an ORM?
An Object relational Mapper (ORM) is not a database. We’re bringing this up mainly, because we see it confused often. It is a layer that sits on top of a database and makes it easier to use. This is typically especially relevant when the database is a relational database (SQL) and the programming language used is object-oriented. As noted above, Dart is an object-oriuented programming language.
The Flutter local data persistence landscape
There are several Flutter databases that provide offline support, offering the ability to store and access data locally even without an internet connection. Here are some of the notable options:
- Hive is a lightweight key-value database written in Dart for Flutter applications, inspired by Bitcask.
- ObjectBox DB is a highly performant lightweight NoSQL database with an integrated Data Sync. It stores objects.
- sqflite is a wrapper around SQLite, which is a relational database without direct support for Dart objects.
- Drift is a reactive persistence library for Flutter and Dart, built ontop of SQLite.
- Floor is another ORM on top of SQLite.
What is the best offline Flutter Dart database?
This of course depends… Make up your own mind with the following comparison matrix as a starting point. Note: With very few options to choose from, the following overview is sometimes a bit like comparing apples 🍎 and pears 🍐.
| Data persistence | Description | Primary Model | Data Sync | Language | License | Fun Fact | "Headquarter" |
| Drift | ORM on top of SQLite | relational | ❌ | SQL | SQLite is public domain, Drift is MIT | Formerly known as Moor | 🇩🇪 |
| Floor | ORM on top of SQLite | relational | ❌ | SQL | SQLite is public domain, floor is Apache 2.0 | Developed by a mobile app agency, not an individual author | 🇳🇱 |
| Isar | Lightweight NoSQL database | NoSQL | ❌ | Dart | Apache 2.0 | Also the author of Hive - both libs are not maintained anymore | 🇩🇪 |
| Hive | Predecessor of Isar | NoSQL | ❌ | Dart | Apache 2.0 | Also the author of Isar - both libs are not maintained anymore | 🇩🇪 |
| ObjectBox | Lightweight NoSQL database with integrated Data Sync | NoSQL | ✅ | Dart | Bindings are Apache 2.0 | It is used in BMW cars 😮 | 🇩🇪 |
| Realm | NoSQL database acquired by Mongo DB in spring 2019, Flutter binding came in 2023, now deprecated | NoSQL | Deprecated, End of life in Sep 2025; closest substitute is ObjectBox | Dart | Apache 2.0 | Originally Realm was developed in Denmark… MongoDB stopped Realm support and the Sync is deprecated | 🇺🇸 |
| Sembast | NoSQL database, fully document-based | NoSQL | ❌ | Dart | BSD-3-Clause | Also the author of SQFlite | 🇫🇷 |
| sqflite | SQLite plugin for Flutter | relational | ❌ | SQL | SQLite is public domain, sqflite lib is MIT | Not an ORM | 🇫🇷 |
