Skip to content
Choose a tag to compare


Choose a tag to compare



  • Rename getModernOperationVariables to getOperationVariables


  • Added queuePendingOperation to RelayModernMockEnvironment in testing tools. This allows the caller to manually register an operation that should be pending.
  • Optionally output eager es modules (#2781).
  • Expose a way to override isGeneratedFile function via language plugin (#2810).
  • Allow language plugin to specify how generated files should be named (#2866).
  • Allow language plugin to specify how to check for presence of graphql strings (#2811).
  • Setup external config for Relay Compiler.


  • Ensure root record is always created upon store initialization, even before initial query has been processed.
  • Fix disposable of optimistic updates: 87ef4ed
  • Fix various issues in docs.
  • Fix loading external config for Relay Compiler (#2999).


  • DataChecker::check now returns the operation fetch time.
  • Removed getRelayDefaultMissingFieldHandlers.js


  • Fix leaking environments when using Relay Hooks (#3014).
  • Fix support of Fast Refresh when used with Relay Hooks.
  • Fix recycling data for plural fragments; i.e. return an array with the sam object identity if the data hasn’t changed.
  • Add support for batched @stream’ed responses.
  • Internally renamed useLegacyPaginationFragment to usePaginationFragment.
  • Potentially Breaking
    • preloadQuery will error if called during render.
    • Remove new connection model experimental code.
    • We know check for “active” instead of queries in “flight” when determining when to suspend. An operation may be indefinitely in flight (e.g. a live query, or a GraphQL Subscription), but it’s only “active” if it’s actively receiving payloads, e.g. during @streaming or @defer.