github facebook/relay v21.0.0

2 hours ago

Relay v21.0.0 brings first-party TypeScript support, modernized Flow type generation, new error handling capabilities, and experimental React Server Components support. This release contains several breaking changes -- please read the migration notes below carefully.

Upgrading

TypeScript users: First-party .d.ts type definitions are now shipped directly in relay-runtime and react-relay. You no longer need @types/relay-runtime from DefinitelyTyped. Node.js ESM named imports (e.g. import { fetchQuery } from 'relay-runtime') now work correctly in .mjs files. Thank you to everyone who contributed to the DefinitelyTyped type definitions over the years — your work kept the Relay TypeScript community going, and it served as a valuable reference for these first-party types.

Flow users -- action required: Generated types now use modern Flow syntax. (expr: Type) casts are replaced with (expr as Type) (requires Flow >= 0.250.0), $ReadOnlyArray becomes ReadonlyArray, mixed becomes unknown, and $NonMaybeType becomes NonNullable. After upgrading, you must re-run the Relay compiler to regenerate all artifacts.

@live_query removed: The @live_query directive has been removed. Migrate to @client_polling(interval: ...) for polling behavior, or @live for server-pushed updates.

Relay Resolvers -- new syntax required: The enable_legacy_verbose_resolver_syntax flag has been removed. The legacy verbose docblock syntax (@onType, @onInterface, @fieldName, @edgeTo) no longer works. In addition, we've replaced the generic @RelayResolver tag with more specific @relayField and @relayType tags. The Relay compiler can automatically migrate you to this new syntax via the relay-compiler codemod fix-all command. If you're not ready to migrate, you can enable the allow_legacy_relay_resolver_tag feature flag in your compiler config file.

@oneOf inputs: @oneOf input types now generate a stricter discriminated union type that only permits one property at a time, instead of an object with all optional fields. This catches bugs at compile time where multiple fields were incorrectly set simultaneously. You can opt out via oneOfType: "relaxed" in compiler config if needed.

New Features

@catch expansion: @catch now works on @connection fields and client edge fields, letting you gracefully handle field errors in pagination and client-edge scenarios instead of throwing.

@alias on fragment definitions: The @alias directive now works on fragment definitions (not just inline fragments).

New compiler CLI tools: Two experimental subcommands are available: experimental-regenerate-sub-schema replaces the currently configured schema file with the portion of the provided "full schema" and experimental-compare-document-ir compares intermediate representations (IR) of documents passed and outputs selections that exists in left but not in right.

React Server Components (Experimental): A new react-relay/rsc_EXPERIMENTAL entry point provides an experimental API for fetching GraphQL in server components: serverFetchQuery for server-side data fetching, serverReadFragment for reading fragment data on the server, and serverPreloadQuery + useQueryFromServer for preloading data on the server and hydrating the client store. These APIs are experimental and are likely to change in upcoming versions.

Notable Bug Fixes

  • Large schema crash fixed: A stack overflow when printing schemas with very large types (1000+ fields) has been fixed with iterative drop logic.
  • @raw_response_type accuracy: Selections on abstract types in @raw_response_type are now correctly typed as optional when the concrete type may not implement the abstract type (PR #4775).
  • Conflicting @match fields: The compiler now properly validates and reports errors for conflicting @match fields across fragments, preventing silent runtime issues.
  • Watch mode stability: Numerous incremental compilation fixes improve reliability of --watch mode, including cross-project fragment crash resolution and proper detection of schema field changes.

Breaking Changes

  • Remove @live_query directive support from Relay compiler (commit)
  • Deprecate polling_interval on @live_query in Relay compiler (commit)
  • @OneOf input objects stricter typegen (#5108) (commit)
  • Remove Node interface restriction for mixed interface server types (commit)
  • Flip casting syntax feature flag default (commit)
  • Eliminate legacy casting syntax in relay (commit)
  • Remove enable_legacy_verbose_resolver_syntax feature flag (commit)
  • Delete readonly_array_for_flow flag from the rust code (commit)
  • Change mixed to unknown (commit)
  • Change $NonMaybeType to NonNullable (commit)
  • Remove unused TPreloadParams generic from PreloadProps<> (commit)
  • Remove the relay/typeInformation LSP command (commit)
  • Remove unused initialization params from lsp (commit)

Added

  • Add missing TS type declarations for RelayFeatureFlags and Store log option (commit)
  • Support named exports with nodejs ESM (#5162) (commit)
  • Add TypeScript type defs to react-relay (commit)
  • Add TypeScript type defs to relay-runtime (commit)
  • Make resolversSchemaModule path optional to allow skipping map file generation (commit)
  • Add emit_nogrep_annotation feature flag for incremental @nogrep removal (commit)
  • Support @catch directive on client edge fields (commit)
  • Add query-stats subcommand for per-operation fragment usage analysis (commit)
  • Add find_subset_violations binary for schema subset checking (commit)
  • Add Relay compiler command to dump artifact map (commit)
  • Support @LiVe on Conditions (Relay + mobile) (commit)
  • Add experimental command to OSS the Relay compiler to update schema to be the used subset of a larger schema (commit)
  • Add feature flag and codegen for ReadonlyArray (commit)
  • Support @catch on @connection (commit)

Bug Fixes

  • Fix RequiredDirectiveArgAdded description message in find_subset_violations (commit)
  • Fix incremental bug: multi-project cross-fragment crash in CommonJS mode (commit)
  • Fix SchemaSet partitioning enum values + more (commit)
  • Don't emit has_s2c_resolvers flag for Query-rooted resolvers (commit)
  • Fix typos in set_exclude comments (commit)
  • Clear is_building in incremental build loop when no pending changes (commit)
  • Fix SchemaSet::exclude to preserve type definitions when other is an extension (commit)
  • Clear daemon artifact cache on watch loop restart after rebase (commit)
  • Fix bug with conflicting @match fields (commit)
  • Report all fragment validation errors instead of stopping at first (commit)
  • Fix stack overflow in RcDoc Drop for large single-type definitions (commit)
  • Fix raw response with selections on abstract type (#4775) (commit)
  • Fix codemod to collect errors from both Flow-based and docblock parsing paths (commit)
  • Fix exclude_schema to also remove fields from client extension types (commit)
  • Fix query-stats -p flag not filtering projects and optimize stats computation (commit)
  • Fix incremental build missing field return type changes (commit)
  • Do not add empty Query after fixing all types (commit)
  • Fix Diagnostic JSON serialization panic caused by typetag/serde tag collision (commit)
  • Fix vulerability issue on fbsource/xplat/js/RKJSModules/Libraries/Relay/oss/github/website/yarn.lock @pnpm/npm-conf (commit)
  • Fix stack overflow in graphql-merge-sdl for large schemas (commit)
  • Fix Flow tabs to use @relayfield for field resolvers (commit)
  • Fix wrong description for strong_id__ flatbuffer field (commit)
  • Fix infinite recursion in InexactObject::Ord::cmp (commit)
  • Fix ProjectFixture to discard preamble before first separator (commit)
  • Fix catch and alias directive not working together (commit)
  • Fix incremental build missing mutation field return type changes (commit)
  • Fix for incremental_delete_fragment_used_by_relay_resolver (commit)
  • Fix for delete_match_removes_normalization (commit)
  • Fix @refetchable preferFetchable boolean value being ignored (commit)
  • Fix wrong directive name in duplicate label error for @stream (commit)
  • Fix is_sub_range flawed multi-line range comparison (commit)
  • Fix schema cache not invalidated on base project schema changes (commit)
  • Fix wrong error location for missing parameter type annotation (commit)
  • Fix wrong dispatch in default_transform_variable_definitions (commit)
  • Fix fragment name typo in docs (#5194) (commit)
  • Fix new flow casting syntax codegen bug (commit)
  • Fix new flow casting syntax codegen bug (commit)
  • Fix infinite loop when extracting bare graphql token (commit)
  • Fix new flow casting syntax codegen bug (commit)
  • Fix set_exclude to preserve empty types not in exclusion set (commit)
  • Fix typo in loading experience section (#5133) (commit)
  • Fix GraphQL lexer crash on emoji (#5172) (commit)
  • Fix resolversSchemaModule codegen for @gqlField property lookups (commit)
  • Fix useMutation Activity compatibility (commit)
  • Fix subschema extraction to include all input fields for inline objects (commit)
  • Fix directive comparison to ignore source byte positions (commit)
  • Fix typos and grammatical errors in blog posts and specs (commit)
  • Fix typos and grammatical errors in debugging, tutorial, getting-started (commit)
  • Fix typos and grammatical errors in guides (commit)
  • Fix typos and grammatical errors in guided-tour (commit)
  • Fix typos and grammatical errors in api-reference (commit)
  • Fix trunk: update flow-bin 0.298 in yarn.lock (commit)
  • Fix abstract field argument merging (commit)
  • Fix types with original definition (commit)
  • Fix update-cargo-lock workflow by upgrading create-pull-request action (#5141) (commit)
  • Fix enum-in-InputObject detection in incremental builds (commit)
  • Fix bug where subschema extraction would fail if Query type was omitted (commit)
  • Fix panic when source directory contents match excludes (commit)
  • Fix home dark theme code highlight (#5094) (commit)
  • Fix trusted publishing by adding required OIDC permissions (#5122) (commit)
  • Fix trusted publishing Node.js compatibility (#5117) (commit)
  • Fix Rust build in CI (#5100) (commit)
  • Fix infinite suspense on client only query when there is missing data (commit)
  • Fix an incremental mode bug with resolvers on abstract types (commit)
  • Fix OSS flow error (commit)
  • Fix useFragment w <Activity> a->b->a mutation edge case (commit)
  • Fix for weak resolver GC bug (commit)
  • Fix printing repeatable for directive definitions (commit)

Improvements

  • Expose ToSetDefinition trait and set_type_from_definition (commit)
  • Split location-based info from is-present/extension info (commit)
  • Detect external modifications to generated artifacts (commit)
  • Surface compiler crashes to meerkat clients (commit)
  • Use watchman clock to synchronize file subscription and write events (commit)
  • Round-trip extension-only types as extend X { ... } instead of X { ... } (commit)
  • Clarify how to construct SchemaSet from base + extension SDL sources (commit)
  • Add S2C execution to Scope: handleS2CExecutions, readInto, createRootFragmentNode (commit)
  • Phase 3: @defer/@stream support in NormalizationEngine (commit)
  • Add a directives function for TypeSystemDefinition (commit)
  • Phase 1+2: Hoist normalization to network layer — infrastructure + initial responses (commit)
  • Emit has_s2c_resolvers on operations with S2C resolvers (commit)
  • Add SetEnumValue and SetArgumentValue wrappers for enum values and directive arguments (commit)
  • Add SetDirectiveValue to wrap directive values with definition metadata (commit)
  • Support multiple source locations in SchemaDefinitionItem (commit)
  • Add base_restricted_directives to find_subset_violations (commit)
  • Add base_restricted_directives to SafeExclusionOptions (commit)
  • Add field-level directive validation and rename InconsistentTypeDirectiveUse (commit)
  • Refactor exclude_directives to accept SafeExclusionOptions (commit)
  • Use imports instead of qualified types in find_subset_violations (commit)
  • Add CLI arg, comments, and tests for subset_directives in find_subset_violations (commit)
  • Use CanHaveDirectives trait in walk_type_directive_violations (commit)
  • Include full directive definition in subset violation error message (commit)
  • Add default schema definition for scalars in BUILTIN_SCALAR_SET (commit)
  • Add source control update simulation to daemon integration test infrastructure (commit)
  • Support directive subset matching in schema set exclusion (commit)
  • Merge directive arguments in schema-set when existing directive has none (commit)
  • Include fragment_arguments in normalization AST for exec-time resolvers (commit)
  • Update schema set merging to return errors instead of panicking (commit)
  • Update schema_set public functions to return DiagnosticsResult (commit)
  • Update print_base_and_client_definitions to return a Diagnostic result (commit)
  • Log suspense in Relay hooks (commit)
  • Make watchman globs include dot files by default for excludes (commit)
  • Consistently sort used schema directives (commit)
  • Add write_artifacts sub-timers to commit_project telemetry (commit)
  • Upgrade minimatch to 3.1.4 to fix CVE-2026-27903/27904 (commit)
  • Add source locations to subset violations (commit)
  • Xplat/js: Auto-fix react-prefer-namespace-import ESLint Rule (commit)
  • Add Flow type annotation to @gqlField property accessor lambdas (commit)
  • Gate @RelayResolver usage behind allow_legacy_relay_resolver_tag in relay-schema-generation (commit)
  • Add parse_docblock_with_offset to docblock-syntax (commit)
  • Sort docblock test output by SDL instead of debug IR (commit)
  • Optimize client_extensions transform — 89% faster via PointerAddress cache (commit)
  • Add server_object_operations field to ClientEdgeMetadataDirective (commit)
  • Add test cases for mixed interface client edges (commit)
  • Upgrade minimatch 3.1.2 → 3.1.4 (CVE-2026-27903, CVE-2026-27904) (commit)
  • Rename build_schema_with_extensions to build_schema_with_extensions_parallel (commit)
  • Update @live_query(polling_interval:) to @client_polling(interval:) in Relay tests (commit)
  • Add serverObjectOperations to ReaderClientEdgeToClientObject Flow type (commit)
  • Add Bicycle type to test schema (commit)
  • Replace flatbuffer schema support with compact schema in relay compiler (commit)
  • Create new_flow_casting_syntax_require_cond flag to gate new casting syntax for requireCond (commit)
  • Back out "Deploy 0.305.0 to xplat" (commit)
  • Add compact binary schema serialization format (commit)
  • Update platform010 & platform010-aarch64 symlinks (take 2) (commit)
  • Add pretty crate for document-based formatting (commit)
  • Simplify prettier GraphQL printers by extracting shared utilities (commit)
  • Preserve block string syntax in Rust GraphQL AST printer (commit)
  • Expand SDL prettier comparison tests to cover all definition types (commit)
  • Log when in daemon incremental build (commit)
  • Implement field-level directive line-breaking (commit)
  • Add docblock IR overlay to FlatBuffer schema (commit)
  • Add log file to daemon to help with debugging (commit)
  • Add prettier_common module for shared formatting utilities (commit)
  • Update platform010 & platform010-aarch64 symlinks (commit)
  • Static doc for the CLI subcommand (commit)
  • Flatbuffer schema tracking in CompilerState (commit)
  • Support diffing SDLSchemas (commit)
  • Relay Flatbuffer SchemaLocation (commit)
  • Properly gate use_new_flow_casting_syntax flag (commit)
  • Allow InputObjectRemoved to be incremental. (commit)
  • Allow ObjectRemoved to be incremental. (commit)
  • Add CLI tool for formatting GraphQL files (commit)
  • Add fragment-level directive line-breaking support (commit)
  • FlatBuffer schema: preserve directives on argument definitions (commit)
  • Add missing hyper-util features to third-party Cargo.toml for OSS builds (commit)
  • TransformTypeParamBound codemod 5/9 (commit)
  • Make module name prefix validation opt-in for non-Haste projects (#5200) (commit)
  • TransformTypeParamBound codemod 4/9 (commit)
  • S3: Prefetch Eden hash map (commit)
  • Fbsource//xplat/js/RKJSModules/Libraries/Relay:Relay (commit)
  • Add actionable guidance to plugin-socket dependency and field argument conflict error messages (commit)
  • Add Buck target for relay-compiler-playground WASM build (commit)
  • Avoid redundant cloning of executable definition ASTs (commit)
  • Update to hyper 1 (commit)
  • Add prettier executable and document printers (commit)
  • Implement prettier-compatible SDL printer (commit)
  • Unbreak tests (commit)
  • Replace RwLock with DashMap in flatten transform caches (commit)
  • Relax compiler validation for S2C edges in exec time resolvers (commit)
  • Avoid querying artifact file hash map when zero artifacts. (commit)
  • Parallelize source hashing and schema change dependency analysis (commit)
  • Parallelize schema parsing for current/previous in detect_changes. (commit)
  • Classify unsafe ObjectAdded as SafeWithIncrementalBuild (commit)
  • Reuse built schema in schema_change_safety (commit)
  • Classify InputObjectChanged as SafeWithIncrementalBuild (commit)
  • Skip redundant base-project schema safety check (commit)
  • Add builtin_scalars module with BUILTIN_SCALAR_SET and helper functions (commit)
  • Initial CLI tooling for updating allowlist without manual changes (commit)
  • Print errors to client (split) (commit)
  • Extract diagnostic formatting into reusable functions (split) (commit)
  • Migrate test projects from @RelayResolver to @relayType/@relayfield (commit)
  • Print project stats to the client (commit)
  • Add @relayType and @relayfield docblock tags for Relay Resolvers (#5179) (commit)
  • Refactor integration test output to always use ++ or xx for changes (commit)
  • Load FlatBuffer schemas in Relay compiler with SDL fallback (commit)
  • Implement FlatBuffer getter methods (commit)
  • Add FlatBuffer output format to schema-extend binary (commit)
  • Keep locations spec-sorted in print_schema (commit)
  • Use Schema Coordinate for argument errors (commit)
  • Keep locations sorted when translating to SDL definition (commit)
  • Add more Relay timing events (commit)
  • Add fix for @module incremental deletion bug (commit)
  • Raise log version requirement to 0.4.29 (commit)
  • Add field-granular subscription notifications for client:root (commit)
  • Add repro test for @module incremental deletion bug (commit)
  • Add an option to generate flow code with new casting syntax (commit)
  • Upgrading petgraph to 0.8 (commit)
  • Add test fixture for empty nested input subschema extraction (commit)
  • Integrate with the Relay compiler (commit)
  • Faster comparisons (commit)
  • Deletion integration tests (commit)
  • Run full build alongside incremental build to catch incremental bugs (commit)
  • Expose diff tool as binary command (commit)
  • Copy IR diff core logic and tests to relay crates (commit)
  • Add crate for parsing + printing Schema Coordinates (commit)
  • Support @__metadata directive on fragments (commit)
  • Add Test file source for injecting file change notifications (commit)
  • Refactor relay_resolvers into module directory (commit)
  • Refactor shadow_resolvers to use get_resolver_info helper (commit)
  • Codex -> CodeHub in relay LSP (commit)
  • Restrict npm publish job to main branch and version tags (#5156) (commit)
  • Update platform010 & platform010-aarch64 symlinks (commit)
  • Update platform010 & platform010-aarch64 symlinks (commit)
  • Add BuildStatus to detect if build is ongoing before writing files (commit)
  • Visit refetchable fragment directive arguments when doing dependnecy tracking (commit)
  • Regression test for S615905 (commit)
  • Add incremental build support to compiler integration tests (commit)
  • Add file changes support to ProjectFixture (commit)
  • Deprecate legacy verbose resolver syntax (commit)
  • Validate that returnFragment is a valid, unused fragment name (commit)
  • Rand: Upgrade 0.8 to 0.9, take 2, batch 2/N (commit)
  • Stub out transform for shadow resolvers (commit)
  • Add docblock tag for @returnFragment (name can change later) (commit)
  • Add compiler feature flag for shadow resolvers (commit)
  • Add feature flag to enable legacy verbose syntax (commit)
  • Fix: print enum value directives (commit)
  • Sort directives and arguments in schema-print for stable output (commit)
  • Rule that uses the allowlist for client schema (commit)
  • Transform another round of xplat (commit)
  • Introduce set_remove_defined_references to remove Set contents from a given exclusionary schema (commit)
  • SchemaSet => AST is better sorted (commit)
  • Update EntryPoint type to support nullable PreloadedQuery (commit)
  • Transform all remaining utility types (commit)
  • Rand: Upgrade 0.8 to 0.9, batch 17/N (commit)
  • Update eslint-plugin-react to 7.37.5 (commit)
  • Daily arc lint --take PRETTIERJAVASCRIPT (commit)
  • SchemaSetSyntaxVisitor => SyntaxVisitor (commit)
  • ProgramWithDependencies: allow sig and def (commit)
  • Do not use dep IR to build program (commit)
  • Add test case demonstrating enum-in-InputObject bug (commit)
  • Refactor subschema extration to enable writing tests (commit)
  • Transform $Values to Values (commit)
  • Add Claude command to automate fixing github ci (#5129) (commit)
  • Improve validation of config paths (commit)
  • Make single project excludes consistent with multi-project excludes (commit)
  • Capture config validation errors in integration tests (commit)
  • Regression tests for issues that cause the compiler to panic (commit)
  • Stop using fb-only markers in delete mode (example) (commit)
  • Update declare functions to have named params in xplat/js (commit)
  • Transform $ReadOnlyArray to ReadonlyArray 10/n (commit)
  • Transform $ReadOnly to Readonly 22/n (commit)
  • Add vultureHash to metadata's Flow type (commit)
  • Transform mixed to unknown in xplat/js (commit)
  • Transform $NonMaybeTypes to NonNullable (commit)
  • Normalize path separators in artifact map debug output (commit)
  • Include seen directives when extracting used schema (commit)
  • Update MockPayloadGenerator tests to acknowledge invalid payload warnings (#5107) (commit)
  • RFC: usePreloadedQuery accepts a nullable query ref: returns null if ref is null (commit)
  • Add logging for DataChecker missing data events (commit)
  • Transform mixed to unknown in xplat/js (commit)
  • Transform mixed to unknown in xplat/js (commit)
  • Include artifact map in integration test output (commit)
  • Get an fb version of our integration tests wired up (commit)
  • Add workflow for updating yarn.lock (#5124) (commit)
  • Transform all Flow legacy utility types ($NonMaybeType) to TypeScript-style types in xplat/js (commit)
  • Prevent internal component usage from being exported to Github (commit)
  • Configure permissions for cargo lock updater action (#5123) (commit)
  • Something is broken in the implementing objects stuff (commit)
  • Enable trusted publishing (#5116) (commit)
  • Resolve symlinks in relay compiler when looking for the full schema's relative path (commit)
  • Duplicate lookup_field function implementation in GraphQL build infra (commit)
  • Support fixme fat interface (commit)
  • Add visitors for TypeSystemDefinition (commit)
  • Implement a GraphQL AST visitor (commit)
  • Allow missing fields from defer payloads (#5083) (commit)
  • Support @client_polling(interval: x) for client polling live query on Relay (commit)
  • Save the diagnostic error sources with rust class type at runtime (commit)
  • Omit enum value descriptions in touch_enum_value (commit)
  • Preserve and print descriptions in schema merging (commit)
  • Add description field support to type definitions (commit)
  • Ensure explicitly used default values are collected (commit)
  • Added event and operation to other log (commit)
  • Move UsedSchemaCollectionOptions into standalone file (commit)
  • Update schema_set_collector.rs to have touch methods to be public (commit)
  • Refactor ir_collector.rs by moving SchemaSet touching function into standalone file (commit)
  • Add timer for e2e validate + transform (commit)
  • Automatically sync server/allowlist-defined types to Type Model Config via recreation (commit)
  • Log event for reader reading fragment spreads in lookup (commit)
  • Make RelayResolver parser support ReadonlyArray (commit)
  • Run codemod in xplat js for $ReadOnlySet (commit)
  • Force all relay codegen output to be ReadonlyArray (commit)
  • Make it easier to get directives on SetType (commit)
  • Add support for @alias on fragment definitions (commit)
  • Migrate program_with_dependencies and schema_set to relay/oss/crates (commit)
  • Upgrade json5 2.2.1 in xplat/js/RKJSModules/Libraries/Relay/oss/github/yark.lock (commit)
  • Improve EntryPoint typing (commit)
  • Add an option to skip notify in read time batch upddate (commit)
  • Mark TEntryPointParams as input position (contravariance) (commit)
  • Have update-cargo-lock open PRs as relay-bot to bypass CLA requirements (#5097) (commit)
  • Upgrade loader-utils (#5096) (commit)
  • Allow @required nesting with DANGEROUSLY_THROW_ON_SEMANTICALLY_NULLABLE_FIELD (commit)
  • Flow | Fix Me - Remove usages of unreachable-code (commit)
  • Migrate usePreloadedQuery-react-double-effects to RTL (commit)
  • Migrate usePaginationFragmentCatch-test to RTL (commit)
  • Migrate useLazyLoadQueryNode-react-double-effects to RTL (commit)
  • Migrate useFragmentNode-react-double-effects to RTL (commit)
  • Migrate useEntryPointLoader-react-double-effects to RTL (commit)
  • Migrate useQueryLoader-react-double-effects to RTL (commit)
  • Migrate useSubscription-test to testing-library/react (commit)
  • Migrate useSubscribeToInvalidationState-test to testing-library/react (commit)
  • Migrate useStaticFragmentNodeWarning-test to testing-library/react (commit)
  • Migrate useQueryLoader-multiple-calls-test to testing-library/react (commit)
  • Migrate usePreloadedQuery-provided-variables-test to testing-library/react (commit)
  • Migrate usePrefetchableForwardPaginationFragment-test to testing-library/react (commit)
  • Migrate useMutation-fast-refresh-test to testing-library/react (commit)
  • Migrate useLazyLoadQueryNode-fast-refresh-test to testing-library/react (commit)
  • Migrate useIsParentQueryActive-test to testing-library/react (commit)
  • Migrate useFragment_nullability-test to testing-library/react (commit)
  • Migrate useFragmentNode-required-test to testing-library/react (commit)
  • Migrate useFragment-with-required-test to testing-library/react (commit)
  • Migrate useFragment-WithOperationTrackerSuspense-test to testing-library/react (commit)
  • Migrate useBlockingPaginationFragment-test to testing-library/react (commit)
  • Migrate MatchContainer-test to testing-library/react (commit)
  • Migrate LazyLoadEntryPointContainer_DEEPRECATED-test to testing-library/react (commit)
  • Migrate EntrypointContainer-test to testing-library/react (commit)
  • Update rustfmt in Relay OSS toolchain (commit)
  • Update rayon 1.9.0 -> 1.11.0 (commit)
  • Correctly handle mixed server and client query but when server request is skipped (commit)
  • Rustfmt update (commit)
  • Upgrade @babel/traverse (#5093) (commit)
  • Add logging for when fetchQuery uses store-or-network fetch policy (commit)
  • Experiment to optimize notify (commit)
  • Support handling request state on empty exec time response (commit)
  • Compiler feature flag to disallow required(action: THROW) on semantically nullable fields (commit)
  • Removing the check for client edges when using exec time resolver. Checking for plural edges (commit)
  • "fix-all" codemod (commit)
  • Filter out relay resolvers from store when serializing to JSON (#5085) (commit)
  • Add substring filter (commit)
  • Update relay type-information command to directly return formatted string (commit)
  • Removing the check for client edges when using exec time resolver (commit)
  • Allow dead_code lint (commit)
  • Add validation for using client to server/server to client edges under exec time queries (commit)
  • Make shutdown helpers public (commit)
  • Avoid reporting root resolver metadata directive as a conflict with @relay(mask: false) (commit)
  • Repro issue with using @relay(mask: false) on resolver root fragment (commit)
  • Allow resolver fragment spreads with @inline and @relay(mask: false) (commit)
  • Allow using @throwOnFieldError without @catch on client schema extension interface fields if all implementors are resolvers (commit)
  • Adopt modern flow casting syntax in relay (commit)
  • Allow building IR with non-overlapping abstract type spreads (commit)
  • Add NoInfer to more relay APIs that accepts TVariables (commit)
  • Clean up GK killswitch for resolver normalization bug (commit)
  • Upgrade vsce (commit)
  • Scaffold FB-only codemod for directive injection (commit)
  • Turn on react.ref_as_prop=experimental.store_ref_in_props_but_remove_ref_in_react_element_config in fbsource (commit)
  • Add support for union extensions (commit)
  • Pre-suppress errors for improved typing of Array.{includes,indexOf,lastIndexOf} in xplat (commit)
  • Regression test for missing validation on conflicting 3D modules (commit)
  • Make ref prop optional in xplat: 1/n (commit)
  • Update crate tempfile 3.15 -> 3.22 (commit)
  • Add enableForOfflineCacheJob for CometPrefetchableEntryPoint (commit)
  • Update rustfm version (commit)
  • Adds TRenders to InternalEntryPointRepresentation (commit)
  • Fix: attempt 2 to fix useQueryLoader-live-query-test.js (#5073) (commit)
  • Add type information daemon to LSP (commit)
  • Use tokio for TaskQueue (commit)
  • Suppress lint warning about unequal enum sizes (commit)
  • Fix(common): manual impl Default for FeatureFlags to align FeatureFlags::default() with Serde per-field default (#5064) (commit)
  • Disable test in oss (commit)
  • Fix: disable activity mode in useQueryLoader-live-query-test.js to fix the test and unblock release (#5068) (commit)
  • Add missing closing parenthesis in code block on "Arrays and Lists" page (#5066) (commit)
  • Add a use experimental argument on @exec_time_resolvers (commit)
  • Process abstract type key on resolver fragments (commit)
  • Add GK to gate resolver noramalizaiton bug fix (commit)
  • Enable Activity compat by default (commit)
  • Cleanup codeless suppressions in xplat/js (commit)
  • Support partial @live-ness on Relay by generating LQ metadata on allowed non-root fields (commit)
  • Apply lint fixes (commit)
  • Turn on experimental.natural_inference.local_object_literals.followup_fix in xplat (commit)
  • Add copyright header to .graphql file (commit)
  • Feat(woovi): replace entria to woovi (entria is now Woovi) (#4243) (commit)
  • Add error code to suppression to unbreak relay oss CI (commit)
  • Turn on flags that will be on by default in 0.281 in oss projects (commit)
  • Check FORCE_NO_WATCHMAN env var before invoking watchman (#5061) (commit)
  • Regression test for abstract root fragment (commit)
  • Make relay_lsp::server public (commit)
  • Wrap lsp work loop in spawn_blocking (commit)
  • Edition 2024 cleanup: rename expr_2021 -> expr (commit)
  • Add missing generated tests (#5058) (commit)
  • Update graphql-subscriptions.md for fixing deduplicate phrase (#5054) (commit)
  • Unit test repro for S490791 (commit)
  • Update tokio 1.46-1 -> 1.47.1 and tokio-openssl 1.6.1 -> 1.6.5 (#5055) (commit)
  • Migrate to suppression with error code in relay (commit)
  • Re-land: [rust-1.89.0] update platform010 & platform010-aarch64 symlinks (commit)
  • Turn on null strict comparison check for xplat js (commit)
  • Back out "update platform010 & platform010-aarch64 symlinks" (commit)
  • Update platform010 & platform010-aarch64 symlinks (commit)
  • Pre-Suppress errors for xplat/js for general strict comparison in non-generated files (commit)
  • Standardize subtyping error code into incompatible-type in relay (commit)
  • Apply lint fixes (commit)
  • Add raw-value feature to serde-json (commit)

Documentation Improvements

  • Fix incorrect note block in client-schema-extensions.mdx (#5215) (commit)
  • Fix typo in Vite plugin link in babel-plugin docs (#5198) (commit)
  • Remove TypeScript type installation instructions from Relay docs (commit)
  • Add markdown-driven e2e test suite (#5205) (commit)
  • Include docs in NPM package for LLM/agent access (#5237) (commit)
  • Remove code sample for doc comparison docs (commit)
  • Update Relay Resolver docs to use @relayType/@relayfield syntax (commit)
  • Fix typos and grammatical errors in community, glossary, and root docs (commit)
  • Update Relay Config Documentation Clarity (commit)
  • Use docusaurus/faster to build Relay docs (commit)
  • Docusaurus v3 upgrade: Upgrade Docusaurus and React (commit)
  • Fix bugs found by upgrading to Docusaurus v3 (commit)
  • Chore(docs): fix some small typos in CONTRIBUTING.md (#5104) (commit)
  • Docusaurus v3 upgrade: Rename all .md files to .mdx files (commit)
  • Docusaurus v3 upgrade: Remove references to internal FB components from versioned docs (commit)
  • Developer Fills Relay Glossary TODO Using Multiple Guides (commit)
  • Developer Fills TODO Items in Project Glossary Documentation (commit)
  • Developer Fills TODO Item in Relay Glossary Documentation (commit)
  • Developer Fills Documentation Gaps in Relay Website Files (commit)
  • Developer Completes Relay Glossary TODO Using Reference Guides (commit)
  • Developer Fills Relay Glossary TODO Using Multiple Guides (commit)
  • Developer Completes Relay Glossary TODO Using Previous Guides (commit)
  • Fix: typo in Babel plugin documentation (#5080) (commit)
  • Edit the Relay 3D docs and release externally (commit)
  • Delete the unused "Guided Tour" introduction (commit)
    • add more definitions to glossary (commit)
    • even more definitions to glossary (commit)
    • add optimistic update definitions to glossary (commit)
  • Rewrite the pagination docs and remove pagination from the tutorial (commit)
  • Delete the Fetching Data "Introduction" from the Relay docs (commit)
  • Create "Best Practices" section of Relay docs (commit)
  • Add basic mutations and updaters docs to replace the tutorial page (commit)
    • add scalar and root field definitions to glossary (sustainability week) (commit)
  • Document that @catch and @throwOnFieldError are document local (commit)
  • Fix double slash links (#5049) (commit)

Miscellaneous

  • Clean up new_flow_casting_syntax and new_flow_casting_syntax_require_cond feature flags (commit)
  • Remove @nogrep from test-project generated artifacts (commit)
  • Remove @nogrep annotation from generated output (commit)

Experimental Changes

  • Add serverPreloadQuery and useQueryFromServer to rsc_EXPERIMENTAL (commit)
  • Add serverReadFragment to rsc_EXPERIMENTAL (commit)
  • Experimental serverFetchQuery for data fetching in RSC (commit)
  • Add useMutationAction_EXPERIMENTAL (commit)
  • Experimental notify batching (commit)
  • Add flow type for use_experimental_provider (commit)

Don't miss a new relay release

NewReleases is sending notifications on new releases.