Relay v21.0
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β
Filename prefix no longer required: Relay no longer requires fragment, query, and mutation names to be prefixed with the name of the file in which they appear. Historically Relay was designed around Meta's internal module resolution system "Haste" which required all modules to have a globally unique filename. Relay required all fragments, queries, and mutations to be prefixed with that filename to make finding definitions easier. However, this requirement provided little value to our open source users and added significant friction, and so the restriction has been removed for non-Haste projects.
@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_typeaccuracy: Selections on abstract types in@raw_response_typeare now correctly typed as optional when the concrete type may not implement the abstract type (PR #4775).- Conflicting
@matchfields: The compiler now properly validates and reports errors for conflicting@matchfields across fragments, preventing silent runtime issues. - Watch mode stability: Numerous incremental compilation fixes improve reliability of
--watchmode, 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
mixedtounknown(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-statssubcommand 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 ofX { ... }(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-importESLint 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
prettycrate 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_referencesto 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
$ValuestoValues(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
mixedtounknownin 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_configin 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
FeatureFlagsto alignFeatureFlags::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_fixin 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-typein 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)








