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
Nearly every release is documented
notes for 56 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
7 years old
283 releases · first in 2020
Release timeline
283 releases since 2020Releases
- 2.6.09 Jul 2022
- 2.5.024 May 2022
Release notes
Open source →Minor Changes
- Add
Acceptheader to GraphQL HTTP requests. This complies to the specification but doesn't go as far as sendingContent-Typewhich would throw a lot of APIs off. Instead, we'll now be sending an accept header forapplication/graphql+json, application/jsonto indicate that we comply with the GraphQL over HTTP protocol. This also fixes headers merging to allow overridingAcceptandContent-Typeregardless of the user options' casing, by @kitten (See #2457)
Patch Changes
- Support aborting in
withPromisecases, by @JoviDeCroock (See #2446) - Passthrough responses with content type of
text/*as error messages, by @kitten (See #2456)
- Add
- 2.4.47 Apr 2022
Release notes
Open source →Patch Changes
- cut off
urlwhen using the GET method at 2048 characters (lowest url-size coming from chromium), by @JoviDeCroock (See #2384) - ⚠️ Fix issue where a synchronous
toPromise()return would not result in the stream tearing down, by @JoviDeCroock (See #2386)
- cut off
- 2.4.325 Feb 2022
Release notes
Open source →Patch Changes
- Prevent ignored characters in GraphQL queries from being replaced inside strings and block strings. Previously we accepted sanitizing strings via regular expressions causing duplicate hashes as acceptable, since it'd only be caused when a string wasn't extracted into variables. This is fixed now however, by @kitten (See #2295)
- 2.4.218 Feb 2022
Release notes
Open source →Patch Changes
- Undo logic to catch errors from incremental fetching and forking the response stream, introduce logic to detect results, by @JoviDeCroock (See #2287)
- 2.4.131 Jan 2022
- 2.4.030 Jan 2022
Nothing published for this version
- 2.3.69 Dec 2021
Nothing published for this version
- 2.3.510 Nov 2021
Nothing published for this version
- 2.3.427 Oct 2021
Nothing published for this version
- 2.3.323 Sept 2021
Nothing published for this version
- 2.3.222 Sept 2021
Nothing published for this version
- 2.3.124 Aug 2021
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]
- Omit minified files and sourcemaps'
- 2.3.017 Aug 2021
- 2.3.0-defer.012 Aug 2021pre-release
Nothing published for this version
- 2.2.012 Aug 2021
Additional notes
Open source →Minor Changes
- Update exchanges to drop redundant
sharecalls, since@urql/core’scomposeExchangesutility now automatically does so for us Submitted by @kitten (See #3082) - Remove
getOperationNameexport from@urql/coreSubmitted by @kitten (See #3062)
Patch Changes
- Upgrade to
wonka@^6.3.0Submitted by @kitten (See #3104) - 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]
- Update exchanges to drop redundant
- 2.1.64 Aug 2021
Release notes
Open source →Patch Changes
authExchange()will now block and pass on errors if the initialization function passed to it fails, and will retry indefinitely. It’ll also output a warning for these cases, as the initialization function (i.e.authExchange(async (utils) => { /*...*/ })) is not expected to reject/throw Submitted by @kitten (See #3343)
- 2.1.56 Jul 2021
- 2.1.423 Jun 2021
- 2.1.33 Jun 2021
Release notes
Open source → - 2.1.213 May 2021
Release notes
Open source → - 2.1.19 May 2021
Release notes
Open source →Patch Changes
- ⚠️ Fix operations created by
utilities.mutate()erroneously being retried and sent again like a regular operation Submitted by @JoviDeCroock (See #3164)
Additional notes
Open source →Patch Changes
- Stop
useQueryfrom re-executing (and hitting the network) during SSR hydration when it's awaited for Suspense. Awaiting the query subscribed to the operation a second time, which re-dispatched it after thessrExchangeresult had already been consumed, triggering a redundant network request even withstaleWhileRevalidate: false. The awaited promise now resolves with the already-settled result instead of re-subscribing Submitted by @JoviDeCroock (See #3884) - ⚠️ Fix
await useQuery()in Vue to wait on the composable's existing reactive state instead of creating an additional query source subscription Submitted by @JoviDeCroock (See #3890) - Updated dependencies (See #3879, #3881, #3885, and #3886)
- @urql/[email protected]
Additional 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]
- ⚠️ Fix operations created by
- 2.1.07 May 2021
Release notes
Open source →Minor Changes
- Add
minimumTimetorefocusExchangeto throttle query reexecution Submitted by @ThaUnknown (See #3825)
Additional notes
Open source →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) - Avoid infinite loop when
didAuthErrorkeeps returning true Submitted by @JoviDeCroock (See #3112) - 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]
Additional notes
Open source →Minor Changes
- The
contextoption, which may be set to a context value or a function returning a context, can now return aPromiseand will be correctly resolved and awaited, by @YutaUra (See #2806)
Patch Changes
- End iterator when teardown functions runs, previously it waited for one extra call to next, then ended the iterator, by @danielkaxis (See #2803)
- Updated dependencies (See #2843, #2847, #2850, and #2846)
- @urql/[email protected]
Additional notes
Open source →Minor Changes
- Adds enableForMutation option for exchange-persisted-fetch to enable persisted operations for mutations, by @geekuillaume (See #2951)
Additional notes
Open source →Minor Changes
- Optional custom injection key support for
provideClient,install,useClient, anduseClientHandle. Multiple clients can be provided and consumed under different keys; default key remains'$urql'for backward compatibility Submitted by @albertcito (See #3858)
- Add
- 2.0.010 Feb 2021
Release notes
Open source →Major Changes
- Implement new
authExchangeAPI, which removes the need for anauthState(i.e. an internal authentication state) and removesgetAuth, replacing it with a separaterefreshAuthflow. The new API requires you to now pass an initializer function. This function receives autilsobject withutils.mutateandutils.appendHeadersutility methods. It must return the configuration object, wrapped in a promise, and this configuration is similar to what we had before, if you're migrating to this. ItsrefreshAuthmethod is now only called after authentication errors occur and not on initialization. Instead, it's now recommended that you write your initialization logic in-line.
Submitted by @kitten (See #3012)authExchange(async utils => { let token = localStorage.getItem('token'); let refreshToken = localStorage.getItem('refreshToken'); return { addAuthToOperation(operation) { return utils.appendHeaders(operation, { Authorization: `Bearer ${token}`, }); }, didAuthError(error) { return error.graphQLErrors.some( e => e.extensions?.code === 'FORBIDDEN' ); }, async refreshAuth() { const result = await utils.mutate(REFRESH, { token }); if (result.data?.refreshLogin) { token = result.data.refreshLogin.token; refreshToken = result.data.refreshLogin.refreshToken; localStorage.setItem('token', token); localStorage.setItem('refreshToken', refreshToken); } }, }; });
Patch Changes
- ⚠️ Fix
willAuthErrornot being called for operations that are waiting on the authentication state to update. This can actually lead to a common issue where operations that came in during the authentication initialization (on startup) will never havewillAuthErrorcalled on them. This can cause an easy mistake where the initial authentication state is never checked to be valid Submitted by @kitten (See #3017) - Updated dependencies (See #3007, #2962, #3007, #3015, and #3022)
- @urql/[email protected]
Additional 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)
- 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)
Additional 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)
- 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)
Patch Changes
Additional 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)
- 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)
Patch Changes
- ⚠️ fix return for context function argument, by @JoviDeCroock (See #2583)
- Updated dependencies (See #2551, #2504, #2619, #2607, and #2504)
- @urql/[email protected]
Additional notes
Open source →Major Changes
- Reimplement Svelte with functional-only API. We've gotten plenty of feedback and issues from the Svelte community about our prior Svelte bindings. These bindings favoured a Store singleton to read and write to, and a separate signal to start an operation. Svelte usually however calls for a lot more flexibility, so we're returning the API to a functional-only API again that serves to only create stores, which is more similar to the original implementation, by @jonathanstanley (See #2370)
Patch Changes
- Updated dependencies (See #2446, #2456, and #2457)
- @urql/[email protected]
- Implement new
- 1.16.224 Jan 2021
Nothing published for this version
- 1.16.111 Dec 2020
Nothing published for this version
- 1.16.03 Dec 2020
Nothing published for this version
- 1.15.224 Nov 2020
Nothing published for this version
- 1.15.18 Nov 2020
Nothing published for this version
- 1.15.06 Nov 2020
Nothing published for this version
- 1.14.129 Oct 2020
Nothing published for this version
- 1.14.029 Oct 2020
Nothing published for this version
- 1.13.129 Sept 2020
Nothing published for this version
- 1.13.08 Sept 2020
Nothing published for this version
- 1.12.329 Jul 2020
Nothing published for this version
- 1.12.230 Jun 2020
Nothing published for this version
- 1.12.117 Jun 2020
Nothing published for this version
- 1.12.010 Jun 2020
Nothing published for this version
- 1.11.812 May 2020
Nothing published for this version
- 1.11.729 Apr 2020
Nothing published for this version
- 1.11.629 Apr 2020
Nothing published for this version
- 1.11.522 Apr 2020
Nothing published for this version
- 1.11.421 Apr 2020
Nothing published for this version
- 1.11.321 Apr 2020withdrawn: Broken Build for @urql/core/internal
Nothing published for this version
- 1.11.221 Apr 2020withdrawn: Broken Build for @urql/core/internal
Nothing published for this version
- 1.11.121 Apr 2020withdrawn: Broken build related to @urql/core/internal imports
Nothing published for this version
- 1.11.020 Apr 2020withdrawn: Broken build related to @urql/core/internal imports
Nothing published for this version
- 1.11.0-debug.026 Mar 2020pre-release
Nothing published for this version
- 1.10.916 Apr 2020
Nothing published for this version
- 1.10.89 Apr 2020
Nothing published for this version
- 1.10.725 Mar 2020
Nothing published for this version
- 1.10.624 Mar 2020
Nothing published for this version
- 1.10.522 Mar 2020
Nothing published for this version
- 1.10.419 Mar 2020
Nothing published for this version
- 1.10.318 Mar 2020
Nothing published for this version
- 1.10.217 Mar 2020
Nothing published for this version
- 1.10.112 Mar 2020
Nothing published for this version
- 1.10.012 Mar 2020
Nothing published for this version
- 1.9.27 Mar 2020
Nothing published for this version
- 1.9.16 Mar 2020
Nothing published for this version