Skip to content

Comparison ​

How firestore_odm compares with the official cloud_firestore_odm and with raw cloud_firestore typed through withConverter. Versions: firestore_odm 5.1, cloud_firestore_odm 1.0.0-dev.88 (its last release), cloud_firestore 6.

firestore_odmcloud_firestore_odmraw cloud_firestore
Last release2026October 2024 (pre-release)current
Works with cloud_firestore 6 / firebase_core 4yesno (cloud_firestore ^5)yes
Works with current analyzer, freezed 3, json_serializableyesno (analyzer <7, freezed_annotation <3)yes
Typed filterswhere(($) => $.age(isGreaterThan: 18))whereAge(isGreaterThan: 18)string field names
OR / AND filterstyped, a | b, a & bnoFilter.or, string field names
Nested field filters and updates$.profile.followerstop-level fields onlystring paths
Typed ordering and cursorsrecord-typed: orderBy(($) => ($.age(), $.name())).startAfter((30, 'Kim'))per-field argumentsuntyped values
Typed full writeset(user), create(user) returns the idadd only; set through .referencevia withConverter
Typed partial updatepatch(($) => [$.name.set('Kim'), $.age.increment(1)])update(name: 'Kim', ageFieldValue: FieldValue.increment(1))Map<String, dynamic>
Aggregates (count, sum, average)typed record: aggregate(($) => (n: $.count(), avg: $.age.average()))nountyped
Transactionstyped get/set/patch/delete, writes deferred after readstransactionGet, transactionUpdateuntyped
Batchestyped set/patch/deletebatchUpdateuntyped
Update or delete every match of a querypatchAll, deleteAll (chunked to 500 writes)noby hand
Subcollectionstyped, odm.usersPosts(userId)typed, ref.doc(id).postsuntyped
Streamsstream of modelssnapshots() of snapshot wrapperssnapshots
Cache or server reads (GetOptions)yesyesyes
Snapshot metadatathrough the native reference (ref, nativeQuery)yesyes
Modelsplain classes, freezed, json_serializablejson_serializable requiredany
GeoPoint, DocumentReference, Blob, Timestamp fieldsstored nativelywith json convertersnative
Firestore Pipelines (Enterprise edition)typed, experimentalnountyped
Flutter widgetuse StreamBuilderFirestoreBuilderuse StreamBuilder
Field validatorsno (validate in the constructor)@Min, @Maxno
Rebuild after editing one of 20 models1.5 s17.3 sno code generation
Migration toolcodemod from cloud_firestore_odm

Code generation and runtime cost are measured in Benchmarks.

Other Firestore packages on pub.dev ​

PackageLatest releasecloud_firestoreWhat it is
firestore_ref0.16 (2026)6typed reference and document helpers; queries use field names
firestorm1.0 (2026)6object mapper for Firestore and Realtime Database, with code generation
dogs_firestore0.3 (2026)5Firestore adapter for the dogs object mapper
flamingo3.0 (2023)4model framework; no release since 2023