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โ
@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)