Relay Release Notes - 12.0.0
Commits: v11.0.2...main
About the Release
This is release contains a long list of new fixes and additions to Relay that was added in the last few months: runtime optimizations, react integration updates, logger updates, internal type-safety, documentation updates, and more.
It also contains a few small, but possibly, breaking changes. One of which is related to the Abstract Type Refinement, others to the live query behavior.
The Relay team is continuing work on the new rust-version of the compiler, and VS Code extension. As well as experimenting with the new features: multi-environment runtime support, advanced client-state management APIs. We hope to include these in the upcoming releases.
Thanks to all contributors for your work and support!
Breaking
- Relay Runtime: Promote type refinement to default feature (no flag). In OSS this flag was
false
by default, buttrue
in internal configuration [2732db5]. - useQueryLoader will not cancel network requests, except for live queries [211d6fe].
- useLazyLoadQuery will not cancel network requests, except for live queries [a75da57].
Added
- Add Suspense logging to Relay Network Logger.
- Add log event for when QueryResource suspends.
- Add suspense logging when suspending from containers.
- Add log event for when FragmentResource suspends.
- Website: First draft of Relay Compiler Playground.
- React: Support double invoking effects in QueryRenderer.
- Runtime: Enabled unique subscription root: every response received is now processed in a unique Relay store root.
- Runtime: Enable batched store updates by default.
- Runtime: FragmentResource store revision optimization.
- Add Suspense logging to Relay Network Logger.
- Add execute.* events to the Relay Logger.
- Expose various hooks utils from relay-runtime:
getPaginationMetadata, getPaginationVariables, getRefetchMetadata, getValueAtPath, type Direction
[3b6f70d].
Fixed
- React: Subscribe on commit in pagination container.
- React: Actually subscribe on commit in fragment and refetch containers.
- React: Prevent tearing in refetch container between render and commit.
- React: Flip useTransition tuple.
- React: Update relay useTransition tests.
- Don’t keep unnecessary ref to props in FragmentSpecResolver.
- Fix memory leak in containers [5a0c4c6].
- Fix Relay Dev Tools network events.
- Fix throwing promise from RelayModernFragmentSpecResolver.
- Add improved type safety to useSubscription API.
- OperationTracker now exposes pending operations affecting owner; display name for suspense promises are more accurate.
- Do not re-throw errors for incremental payloads that may invalidate the whole query.
- Runtime: Make RelayPublishQueue.run a no-op if no pending updates.
- Runtime: Ship FragmentResource store revision optimization.
- Check if global exists before calling ErrorUtils (#3465).
- Fix double _publishQueue.run() in OperationExecutor.
- Use the provided requestSubscription fn in useSubscription.
- Code Cleanup: Remove RecordSource/RecordSourceMapImpl indirection.
- Remove duplicated active observable tracking in
_processModuleImportPayload
. - Do not emit extension in compiler includes (#3518).
- Check if global exists before using it (#3525).
- Improve handling of
falsy
conditions and @Skip. - Fix a bug in RelayReplaySubject that caused indefinite suspense in React double invoke.
- Do not read from the store if no onNext callback is provided.
- Make createOperationDescriptor type safe.
- Set unique root ID before processing a non-incremental payload.
- Track store writeEpoch in FragmentResource.
- Update updater docs to include payload.
- Small optimization in RelayPublishQueue [6b95ff8].
- Reduce FragmentResource memory usage [bd35151].
- Avoid calling
environment.lookup
when not needed in QueryResource. - Release redundant temporary retains when the component commits.
- Support batched responses in RelayResponseCache.
- OperationTracker now exposes pending operations affecting owner; display name for suspense promises are more accurate.
- Rename QueryExecutor to OperationExecutor.
- Rename transactionID to networkRequestId in log events.
- Documentation/Website/Typo Fixes: #3439, #3456, #3479, #3492, #3493, 3495 #3517, #3530, #3532, #3535, #3545, #3564, #3566, #3569, #3570, #3576, #3552, #3546, #3550, #3577.
Misc
- Update batching async module scheduling [8e3e210].
- Only batch async module payload if there is more than one pending module payload.
- Add ApplyMutation test for RelayEnvironment.
- Additional testing for
applyMutation
. - CI: remove node 10 and 15, add node 16 (#3466).
- Bump
lodash
from 4.17.20 to 4.17.21 in /packages/babel-plugin-relay (#3482). - Bump
path-parse
from 1.0.6 to 1.0.7 in /packages/babel-plugin-relay (#3559). - Update React flow types.
- Add disallowWarnings(...) to some Relay unit-tests.
- Remove useCustomizedBatch from runtime.