Skip to content

fix(firestore): serverTimestamps implement correct behavior for 'estimate' | 'previous' | 'none'#9018

Draft
russellwheatley wants to merge 5 commits into
mainfrom
issue-9016-firestore
Draft

fix(firestore): serverTimestamps implement correct behavior for 'estimate' | 'previous' | 'none'#9018
russellwheatley wants to merge 5 commits into
mainfrom
issue-9016-firestore

Conversation

@russellwheatley
Copy link
Copy Markdown
Member

@russellwheatley russellwheatley commented May 12, 2026

Description

fixes #9016

Related issues

Release Summary

Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
    • Yes
  • My change supports the following platforms;
    • Android
    • iOS
    • Other (macOS, web)
  • My change includes tests;
    • e2e tests added or updated in packages/\*\*/e2e
    • jest tests added or updated in packages/\*\*/__tests__
  • I have updated TypeScript types that are affected by my change.
  • This is a breaking change;
    • Yes
    • No

Test Plan


Think react-native-firebase is great? Please consider supporting the project with any of the below:

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request adds support for SnapshotOptions.serverTimestamps to the Firestore module in react-native-firebase. By enabling the passing of server timestamp behaviors (estimate, previous, none) from the native side to the JavaScript layer, it allows for more granular control over how document data is retrieved and interpreted. This change includes updates to native serialization logic, TypeScript type definitions, and robust testing to ensure feature parity and correctness across platforms.

Highlights

  • SnapshotOptions Implementation: Implemented support for SnapshotOptions.serverTimestamps in FirestoreDocumentSnapshot.data() and get() methods, allowing developers to control how server timestamps are handled.
  • Native Serialization Updates: Updated Android and iOS native serialization layers to pass estimate, previous, and none server timestamp behaviors to the JavaScript layer.
  • Type and Test Updates: Updated TypeScript definitions, added comprehensive unit tests, and included e2e tests to verify that server timestamp options are correctly passed through converter snapshots.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements support for SnapshotOptions.serverTimestamps in FirestoreDocumentSnapshot.data() and get() methods across Android, iOS, and Web platforms. The changes include updating native serialization logic to provide data for all timestamp behaviors (estimate, previous, and none), modifying the DocumentSnapshot class to handle these options, and updating type definitions. Comprehensive unit, E2E, and type tests have been added to verify the new functionality. I have no feedback to provide.

@russellwheatley russellwheatley changed the title fix(firestore): serverTimestamps implemented TS side fix(firestore): serverTimestamps implement correct behavior for 'estimate' | 'previous' | 'none' May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[🐛] withConverter.fromFirestore + snapshot.data({ serverTimestamps: 'estimate' }) returns null for pending serverTimestamp() fields

1 participant