The shared core for the highly customizable and versatile GraphQL client
Last release 2 months ago
22 Jun 2026
Release timing varies
gaps range from 2 weeks to 10 months
Most releases are documented
notes for 67 of 106 stable releases
4 versions withdrawn
withdrawn after publishing
7 years old
283 releases · first in 2020
Release timeline
283 releases since 2020Releases
- 6.0.322 Jun 2026
Release notes
Open source → - 6.0.215 Jun 2026
Release notes
Open source →Patch Changes
- Prevent reusal of incoming API data in Graphcache’s produced (“owned”) data. This prevents us from copying the
__typenameand other superfluous fields Submitted by @kitten (See #3165) - ⚠️ Fix regression which caused
@deferdirectives from becoming “sticky” and causing every subsequent cache read to be treated as if the field was deferred Submitted by @kitten (See #3167) - Apply
hasNext: trueand fallthrough logic to cached queries that contain deferred, uncached fields. Deferred query results will now be fetched against the API correctly, even if prior requests have been incomplete Submitted by @kitten (See #3163) - ⚠️ Fix
offlineExchangeduplicating offline mutations in failed queue Submitted by @kitten (See #3158)
Release notes
Open source →Patch Changes
- Prevent
mapExchangefrom forwarding async-mapped operations after their teardown has already been received Submitted by @JoviDeCroock (See #3879) - Unwrap the
payloadproperty inmakeResultso that the first incremental/multipart response is parsed correctly. Previously, transports that wrap each result in apayloadproperty (e.g. Apollo Federation's multipart subscriptions) would have their first response dropped as "No Content", while subsequent responses were handled correctly bymergeResultPatchSubmitted by @JoviDeCroock (See #3881) - Emit terminal subscription results before ending completed subscriptions, preventing teardown races from dropping GraphQL errors Submitted by @JoviDeCroock (See #3885)
- Remove the invalid
exportsfield from the generated subpathpackage.jsonfiles (e.g.@urql/exchange-graphcache/extras,@urql/exchange-graphcache/default-storage,@urql/core/internal,@urql/next/rsc). These targets pointed at the parentdist/directory (../dist/...), which violates the Node.js package-exports spec requirement that everyexportstarget begin with./. Metro (Expo 53 / React Native 0.79) validates this and logged a warning for every affected package. Subpath resolution continues to work:exports-aware bundlers resolve through the rootpackage.json, while legacy resolution relies on themain/module/typesfields that remain in place Submitted by @JoviDeCroock (See #3886)
- Prevent reusal of incoming API data in Graphcache’s produced (“owned”) data. This prevents us from copying the
- 6.0.111 Aug 2025
Release notes
Open source →Patch Changes
- Use nullish coalescing for
preferGetMethodandpreferGetForPersistedQueriesso thatfalseis kept if set Submitted by @dargmuesli (See #3812)
- Use nullish coalescing for
- 6.0.1-canary-cddc86dd6b17faed7fd5c91ccb4b49aa2acdd91e11 Aug 2025pre-release
Nothing published for this version
- 6.0.09 Aug 2025
Release notes
Open source →Major Changes
- Remove dependence on
graphqlpackage and replace it with@0no-co/graphql.web, which reduces the default bundlesize impact ofurqlpackages to a minimum. All types should remain compatible, even if you usegraphqlelsewhere in your app, and if other dependencies are usinggraphqlyou may alias it tographql-web-liteSubmitted by @kitten (See #3097) - Update
OperationResult.hasNextandOperationResult.staleto be required fields. If you have a custom exchange creating results, you'll have to add these fields or use themakeResult,mergeResultPatch, ormakeErrorResulthelpers Submitted by @kitten (See #3061)
Minor Changes
- Update exchanges to drop redundant
sharecalls, since@urql/core’scomposeExchangesutility now automatically does so for us Submitted by @kitten (See #3082)
Patch Changes
- ⚠️ Fix source maps included with recently published packages, which lost their
sourcesContent, including additional source files, and had incorrect paths in some of them Submitted by @kitten (See #3053) - Upgrade to
wonka@^6.3.0Submitted by @kitten (See #3104) - Restore variables correctly on mutations Submitted by @JoviDeCroock (See #3046)
- Use
stringifyDocumentinofflineExchangerather thanprintand serializeoperation.extensionsas needed Submitted by @kitten (See #3094) - Add missing
hasNextandstalepassthroughs on caching exchanges Submitted by @kitten (See #3059) - Add TSDocs for all exchanges, documenting API internals Submitted by @kitten (See #3072)
- Updated dependencies (See #3101, #3033, #3054, #3053, #3060, #3081, #3039, #3104, #3082, #3097, #3061, #3055, #3085, #3079, #3087, #3059, #3055, #3057, #3050, #3062, #3051, #3043, #3063, #3054, #3102, #3097, #3106, #3058, and #3062)
- @urql/[email protected]
- Remove dependence on
- 6.0.0-canary-d3b019d51905c1c8b22be9ea1d9fe9ca4335a46c9 Aug 2025pre-release
Nothing published for this version
- 6.0.0-canary-b981b388ee9ed0066399a632aad6b84559f014a69 Aug 2025pre-release
Nothing published for this version
- 6.0.0-canary-b2d8b993af4abb0ffc5c5284b90aca56c527f04529 Jun 2025pre-release
Nothing published for this version
- 5.3.0-canary-b757332b0d05a9a79fea180dbd6e7942d27419a29 Aug 2025pre-release
Nothing published for this version
- 5.3.0-canary-230febcc145a095d1111a82b5993c3e8ab4b490b9 Aug 2025pre-release
Nothing published for this version
- 5.2.029 Jun 2025
Release notes
Open source →Minor Changes
- export the getOperationName utility function Submitted by @giacomocerquone (See #3785)
Release notes
Open source →Minor Changes
- Add
isOfflineErroroption to theofflineExchangeto allow it to be customized to different conditions to determine whether an operation has failed because of a network error Submitted by @robertherber (See #3020) - Allow
updatesconfig to react to arbitrary type updates other than justMutationandSubscriptionfields. You’ll now be able to write updaters that react to any entity field being written to the cache, which allows for more granular invalidations. Note: If you’ve previously usedupdates.Mutationandupdated.Subscriptionwith a custom schema with custom root names, you‘ll get a warning since you’ll have to update yourupdatesconfig to reflect this. This was a prior implementation mistake! Submitted by @kitten (See #2979)
Patch Changes
- ⚠️ Fix regression which caused partial results, whose refetches were blocked by the looping protection, to not have a
stale: trueflag added to them. This is a regression from https://github.com/urql-graphql/urql/pull/2831 and only applies tocacheExchanges that had theschemaoption set Submitted by @kitten (See #2999) - Add
invariantto data layer that prevents cache writes during cache query operations. This preventscache.writeFragment,cache.updateQuery, andcache.linkfrom being called inresolversfor instance Submitted by @kitten (See #2978) - Updated dependencies (See #3007, #2962, #3007, #3015, and #3022)
- @urql/[email protected]
- 5.2.0-canary-b31d5cbfd18c24789f248c2c0494a693a75b06a929 Jun 2025pre-release
Nothing published for this version
- 5.1.227 Jun 2025
Release notes
Open source →Patch Changes
- Correct typo in cacheHit debug message of the
debugExchangeSubmitted by @jorrit (See #3773) - ⚠️ Fix
fetchSourcenot text-decoding response chunks as streams, which could cause UTF-8 decoding to break Submitted by @i110 (See #3767) - ⚠️ Fix compatibility with Typescript >5.5 (See: https://github.com/0no-co/graphql.web/pull/49) Submitted by @andreisergiu98 (See #3730)
- Change debug log verbosity to
console.debugrather thanconsole.logSubmitted by @kitten (See #3770)
- Correct typo in cacheHit debug message of the
- 5.1.2-canary-92f5c477b6d5de6fa77d6c37aafafff3c306b2933 Apr 2025pre-release
Nothing published for this version
- 5.1.2-canary-53b822bc06e8af454b33cb48e59cb25e15fad2d51 Apr 2025pre-release
Nothing published for this version
- 5.1.2-canary-48f433a4cc61940b94ca49e5735ea56caf3519942 Apr 2025pre-release
Nothing published for this version
- 5.1.13 Mar 2025
- 5.1.1-canary-573944cea80f766668d3b9d8aa1afd2c50d744a43 Mar 2025pre-release
Nothing published for this version
- 5.1.09 Dec 2024
Release notes
Open source →Minor Changes
- Remove
addMetadatatransform where we'd strip out metadata for production environments, this particularly affectsOperationResult.context.metadata.cacheOutcomeSubmitted by @alpavlove (See #3714)
- Remove
- 5.1.0-canary-07397cf11b4b6a64bf8fff9a8ea2e23b81d830679 Dec 2024pre-release
Nothing published for this version
- 5.0.821 Oct 2024
Release notes
Open source →Patch Changes
- ⚠️ Fix
deepMergeregression on array values Submitted by @JoviDeCroock (See #3696)
Release notes
Open source →Patch Changes
- ⚠️ Fix operation being blocked for looping due to it not cancelling the looping protection when a
teardownis received. This bug could be triggered when a shared query operation triggers again and causes a cache miss (e.g. due to an error). The re-execution of the operation would then be blocked as Graphcache considered it a "reexecution loop" rather than a legitimate execution triggered by the UI. (See https://github.com/urql-graphql/urql/pull/2737 for more information), by @kitten (See #2876)
- ⚠️ Fix
- 5.0.8-canary-e452d6f1e21844a19b63cd86e5867cbaeeb7911921 Oct 2024pre-release
Nothing published for this version
- 5.0.719 Oct 2024
Release notes
Open source →Patch Changes
- ⚠️ Fix type-generation, with a change in TS/Rollup the type generation took the paths as src and resolved them into the types dir, by @JoviDeCroock (See #2870)
- Updated dependencies (See #2872, #2870, and #2871)
- @urql/[email protected]
- 5.0.7-canary-36a07165f45ab743e8938ee814378199fbc9cf8919 Oct 2024pre-release
Nothing published for this version
- 5.0.612 Aug 2024
Release notes
Open source →Patch Changes
- Allow empty error messages when re-hydrating GraphQL errors Submitted by @JoviDeCroock (See #3650)
Release notes
Open source →Patch Changes
- Solve issue where partial data could cause loops between related queries, by @JoviDeCroock (See #2831)
- Add skipping of garbage collection runs when the cache is waiting for optimistic, deferred or other results in layers. This means that we only take an opportunity to run garbage collection after results have settled and are hence decreasing the chance of hogging the event loop when a run isn't needed, by @kitten (See #2862)
- ⚠️ Fix a deadlock condition in Graphcache's layers, which is caused by subscriptions (or other deferred layers) starting before one-off mutation layers. This causes the mutation to not be completed, which keeps its data preferred above the deferred layer. That in turn means that layers stop squashing, which causes new results to be missing indefinitely, when they overlap, by @kitten (See #2861)
- Updated dependencies (See #2843, #2847, #2850, and #2846)
- @urql/[email protected]
- 5.0.6-canary-a620d1535 Aug 2024pre-release
Nothing published for this version
- 5.0.529 Jul 2024
Release notes
Open source →Release notes
Open source →Patch Changes
- Set operations when updating the cache with a result, by @JoviDeCroock (See #2782)
- 5.0.5-canary-c73d0e2a29 Jul 2024pre-release
Nothing published for this version
- 5.0.46 Jun 2024
Release notes
Open source →Patch Changes
- Change how we calculate the
OperationKeyto take files into account, before we would encode them tonullresulting in every mutation with the same variables (excluding the files) to have the same key. This resulted in mutations that upload different files at the same time to share a result in GraphCache Submitted by @JoviDeCroock (See #3601)
Release notes
Open source →Patch Changes
- Ensure we aren't eagerly removing layers that are caused by subscriptions, by @JoviDeCroock (See #2771)
- Change how we calculate the
- 5.0.4-canary-ff1fd76a5 Jun 2024pre-release
Nothing published for this version
- 5.0.4-canary-d07602d26 Jun 2024pre-release
Nothing published for this version
- 5.0.4-canary-bf01d6b45 Jun 2024pre-release
Nothing published for this version
- 5.0.4-canary-befdf48d6 Jun 2024pre-release
Nothing published for this version
- 5.0.31 May 2024
Release notes
Open source →Patch Changes
- ⚠️ Fix case where a mutation would also be counted in the loop-protection, this prevented partial queries from initiating refetches, by @JoviDeCroock (See #2761)
- Updated dependencies (See #2758 and #2762)
- @urql/[email protected]
- 5.0.224 Apr 2024
Release notes
Open source →Patch Changes
- ⚠️ Fix issue where a reexecute on an in-flight operation would lead to multiple network-requests. For example, this issue presents itself when Graphcache is concurrently updating multiple, inter-dependent queries with shared entities. One query completing while others are still in-flight may lead to duplicate operations being issued Submitted by @JoviDeCroock (See #3573)
Release notes
Open source →Patch Changes
- Preserve the original
DocumentNodeAST when updating the cache, to prevent results after a network request from differing and breaking referential equality due to added__typenamefields, by @kitten (See #2736) - ⚠️ Fix optimistic mutations containing partial results (
undefinedfields), which previously actually caused a hidden cache miss, which may then affect a subsequent non-optimistic mutation result, by @kitten (See #2740) - Prevent cache misses from causing infinite network requests from being issued, when two operations manipulate each other while experiencing cache misses or are partially uncacheable, by @kitten (See #2737)
- ⚠️ Fix operation identities preventing users from deeply cloning operation contexts. Instead, we now use a client-wide counter (rolling over as needed).
While this changes an internal data structure in
@urql/coreonly, this change also affects theofflineExchangein@urql/exchange-graphcachedue to it relying on the identity being previously an object rather than an integer, by @kitten (See #2732) - ⚠️ Fix referential equality preservation in Graphcache failing after API results, due to a typo writing the API result rather than the updated cache result, by @kitten (See #2741)
- Updated dependencies (See #2691, #2692, and #2732)
- @urql/[email protected]
- 5.0.2-canary-0f3c5c0124 Apr 2024pre-release
Nothing published for this version
- 5.0.118 Apr 2024
Release notes
Open source →Patch Changes
- Use nullish coalescing for
preferGetMethodandpreferGetForPersistedQueriesso thatfalseis kept if set Submitted by @dargmuesli (See #3812) - Updated dependencies (See #3812)
- @urql/[email protected]
- Use nullish coalescing for
- 5.0.1-canary-1805b92018 Apr 2024pre-release
Nothing published for this version
- 5.0.02 Apr 2024
Release notes
Open source →Major Changes
- Goodbye IE11! 👋 This major release removes support for IE11. All code that is shipped will be transpiled much less and will not be ES5-compatible anymore, by @kitten (See #2504)
- Prevent cache-hydration from buffering operations, by @JoviDeCroock (See #2612)
- Implement stricter variables types, which require variables to always be passed and match TypeScript types when the generic is set or inferred. This is a breaking change for TypeScript users potentially, unless all types are adhered to, by @kitten (See #2607)
- Upgrade to Wonka v6 (
wonka@^6.0.0), which has no breaking changes but is built to target ES2015 and comes with other minor improvements. The library has fully been migrated to TypeScript which will hopefully help with making contributions easier!, by @kitten (See #2504)
Minor Changes
- Remove the
babel-plugin-modular-graphqlhelper, this because the graphql package hasn't converted to ESM yet which gives issues in node environments, by @JoviDeCroock (See #2551) - Allow passing in
fragmentNameforwriteandreadoperations, by @JoviDeCroock (See #2609)
Patch Changes
- Graphcache's
optimisticoption now accepts optimistic mutation resolvers that return fields by name rather than alias. Previously, depending on which mutation was run, the optimistic resolvers would read your optimistic data by field alias (i.e. "alias" foralias: idrather than "id"). Instead, optimistic updates now correctly use field names and allow you to also pass resolvers as values on your optimistic config, by @JoviDeCroock (See #2616) - Updated dependencies (See #2551, #2504, #2619, #2607, and #2504)
- @urql/[email protected]
Release notes
Open source →Major Changes
- Remove deprecated
dedupExchangeSubmitted by @JoviDeCroock (See #3520) - Remove deprecated
maskTypenameSubmitted by @JoviDeCroock (See #3520)
Patch Changes
- 5.0.0-canary-fe47189d2 Apr 2024pre-release
Nothing published for this version
- 5.0.0-canary-be9c72ab16 Mar 2024pre-release
Nothing published for this version
- 5.0.0-canary-a938b34227 Mar 2024pre-release
Nothing published for this version
- 5.0.0-canary-a6f516282 Apr 2024pre-release
Nothing published for this version
- 5.0.0-canary-9405b3d82 Apr 2024pre-release
Nothing published for this version
- 5.0.0-canary-6bd4c90f2 Apr 2024pre-release
Nothing published for this version
- 5.0.0-canary-564929ef28 Mar 2024pre-release
Nothing published for this version
- 5.0.0-canary-431b64b422 Mar 2024pre-release
Nothing published for this version
- 5.0.0-canary-3692842e26 Mar 2024pre-release
Nothing published for this version
- 4.3.03 Mar 2024
Release notes
Open source →Minor Changes
- Support Apollo Federation's format for subscription results in
multipart/mixedresponses (result properties essentially are namespaced on apayloadkey) Submitted by @JoviDeCroock (See #3499) - Add support for sending persisted documents. Any
DocumentNodewith no/empty definitions and adocumentIdproperty is considered a persisted document. When this is detected adocumentIdparameter rather than aquerystring is sent to the GraphQL API, similar to Automatic Persisted Queries (APQs). However, APQs are only supported via@urql/exchange-persisted, while support fordocumentIdis now built-in Submitted by @kitten (See #3515)
Patch Changes
- Allow
urlto be a plain, non-URL pathname (i.e./api/graphql) to be used withpreferGetMethodSubmitted by @akrantz01 (See #3514) - Correctly support the
Headersclass being used infetchOptionsSubmitted by @JoviDeCroock (See #3505)
- Support Apollo Federation's format for subscription results in
- 4.3.0-canary-eb1286c72 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-e9b476b62 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-e8e16bba2 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-ceeb73bb2 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-973da7ff2 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-969935c62 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-614c73262 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-56c1544b2 Mar 2024pre-release
Nothing published for this version
- 4.3.0-canary-492af0872 Mar 2024pre-release
Nothing published for this version
- 4.2.4-canary-dc509cc210 Feb 2024pre-release
Nothing published for this version
- 4.2.317 Jan 2024
Release notes
Open source →Patch Changes
- Omit minified files and sourcemaps'
sourcesContentin published packages Submitted by @kitten (See #3755) - Updated dependencies (See #3755)
- @urql/[email protected]
Release notes
Open source →Patch Changes
- Add back our cache-outcome on the document-cache, this was behind a development flag however in our normalized cache we always add it already Submitted by @JoviDeCroock (See #3464)
- Omit minified files and sourcemaps'