From 2ee81c21e1f5589084022201483e387aa74406df Mon Sep 17 00:00:00 2001 From: Tyler Dixon Date: Wed, 8 Jul 2026 14:40:13 -0700 Subject: [PATCH 1/2] fix: update useFirestoreDocData return type to include undefined MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docData() from rxfire returns Observable because a Firestore document may not exist. The previous ObservableStatus return type was a lie — callers would get undefined at runtime with no type-level warning. Fixes #577 --- src/firestore.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/firestore.tsx b/src/firestore.tsx index 95f42431..136d34e0 100644 --- a/src/firestore.tsx +++ b/src/firestore.tsx @@ -59,7 +59,7 @@ export function useFirestoreDocOnce(ref: DocumentReference, /** * Subscribe to Firestore Document changes and unwrap the document into a plain object */ -export function useFirestoreDocData(ref: DocumentReference, options?: ReactFireOptions): ObservableStatus { +export function useFirestoreDocData(ref: DocumentReference, options?: ReactFireOptions): ObservableStatus { const idField = options ? checkIdField(options) : 'NO_ID_FIELD'; const observableId = `firestore:docData:${ref.firestore.app.name}:${ref.path}:idField=${idField}`; @@ -71,7 +71,7 @@ export function useFirestoreDocData(ref: DocumentReference, opti /** * Get a Firestore document, unwrap the document into a plain object, and don't subscribe to changes */ -export function useFirestoreDocDataOnce(ref: DocumentReference, options?: ReactFireOptions): ObservableStatus { +export function useFirestoreDocDataOnce(ref: DocumentReference, options?: ReactFireOptions): ObservableStatus { const idField = options ? checkIdField(options) : 'NO_ID_FIELD'; const observableId = `firestore:docDataOnce:${ref.firestore.app.name}:${ref.path}:idField=${idField}`; From 2bdb63ab586ed60cdeca9f4a06fec48cc8306a04 Mon Sep 17 00:00:00 2001 From: Tyler Dixon Date: Thu, 9 Jul 2026 14:32:58 -0700 Subject: [PATCH 2/2] docs: regenerate API reference after ObservableStatus type fix --- docs/reference/functions/useFirestoreDocData.md | 4 ++-- docs/reference/functions/useFirestoreDocDataOnce.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/reference/functions/useFirestoreDocData.md b/docs/reference/functions/useFirestoreDocData.md index 51f11060..1267c3da 100644 --- a/docs/reference/functions/useFirestoreDocData.md +++ b/docs/reference/functions/useFirestoreDocData.md @@ -6,7 +6,7 @@ # Function: useFirestoreDocData() -> **useFirestoreDocData**\<`T`\>(`ref`, `options?`): [`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T`\> +> **useFirestoreDocData**\<`T`\>(`ref`, `options?`): [`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T` \| `undefined`\> Defined in: [src/firestore.tsx:62](https://github.com/FirebaseExtended/reactfire/blob/main/src/firestore.tsx#L62) @@ -30,4 +30,4 @@ Subscribe to Firestore Document changes and unwrap the document into a plain obj ## Returns -[`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T`\> +[`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T` \| `undefined`\> diff --git a/docs/reference/functions/useFirestoreDocDataOnce.md b/docs/reference/functions/useFirestoreDocDataOnce.md index b3a075cc..db47124e 100644 --- a/docs/reference/functions/useFirestoreDocDataOnce.md +++ b/docs/reference/functions/useFirestoreDocDataOnce.md @@ -6,7 +6,7 @@ # Function: useFirestoreDocDataOnce() -> **useFirestoreDocDataOnce**\<`T`\>(`ref`, `options?`): [`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T`\> +> **useFirestoreDocDataOnce**\<`T`\>(`ref`, `options?`): [`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T` \| `undefined`\> Defined in: [src/firestore.tsx:74](https://github.com/FirebaseExtended/reactfire/blob/main/src/firestore.tsx#L74) @@ -30,4 +30,4 @@ Get a Firestore document, unwrap the document into a plain object, and don't sub ## Returns -[`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T`\> +[`ObservableStatus`](../type-aliases/ObservableStatus.md)\<`T` \| `undefined`\>