facebook/relay

Query from useRefetchableFragment is not permanently retained within the component lifecycle

kyle-painter opened this issue · 1 comments

When a refetch query is executed from useRefetchableFragment there is a temporaryRetain of the cache entry, however this is not paired with a corresponding permanentRetain during the components lifecycle.

This means after 5 minutes of idle time the cache entry is cleared, and upon the next render the entry will be read from the store and reinvoke the onComplete callback of any attached observable.

Here is an example reproducing the bug kyle-painter/relay-examples@09965ae. To reproduce:

  1. Press the 'Refetch' button and observe the onComplete alert dialog is shown.
    Kapture 2024-07-01 at 14 49 40

  2. Wait 5 minutes.

  3. Press the 'Rerender' button and observe the onComplete alert dialog is unexpectedly shown again.
    Kapture 2024-07-01 at 14 56 10

Can I take this issue?