title: Firestore onSnapshot - how to tell which individual fields changed?
body: <p>I’m modeling data and have a question about the <code>onSnapshot</code> (web) listener. As pointed out in a couple posts on SO and in the docs, after the initial invocation, the listener only fetches the changed data. I am interested to know what the changed data is. If listening on a document, is it just the field or the entire document that is fetched? </p>
  
  <p>In a scenario where we have a listener on a Document, and the value of a field on that document changes (or a field is added, or removed), is only that field is fetched? In other words, is this similar to placing a <code>child_changed/added/removed</code> listener on a node in the RTDB? </p>
  
  <p>The intent is to determine if I should keep frequently changing Documents, which clients must listen to, in RTDB or Firestore. I prefer not to resend the entire document to the client due to only a field change, if possible.</p>
  
  <p>Example. We have the following document:</p>
  
  <pre><code>rando_id:
    field1
    field2
    field3
  </code></pre>
  
  <p>If <code>field2</code>'s value changes, will only <code>field2</code> be the transmitted data from Firestore DB to the client? The same would apply to adding a <code>field4</code> or removing <code>field1</code>. Would just those fields be sent to the client?</p>