NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4398 most downloaded on npm
An exchange for operation retry support in urql
Last release 1 years ago
09 Aug 2025
Release timing varies
gaps range from 9 days to 10 months
Nearly every release is documented
notes for 26 of 26 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
64 releases · first in 2020
One column per quarter.
Implement new authExchange API, which removes the need for an authState (i.e. an internal authentication state) and removes getAuth, replacing it with
authExchange API, which removes the need for an authState (i.e. an internal authentication state) and removes getAuth, replacing it with a separate refreshAuth flow.
The new API requires you to now pass an initializer function. This function receives a utils
object with utils.mutate and utils.appendHeaders utility 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. Its refreshAuth method 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.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);
}
},
};
});
Submitted by @kitten (See #3012)willAuthError not 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 have willAuthError called on them. This can cause an easy mistake where the initial authentication state is never checked to be valid
Submitted by @kitten (See #3017)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)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)babel-plugin-modular-graphql helper, this because the graphql package hasn't converted to ESM yet which gives issues in node environments, by @JoviDeCroock (See #2551)Nothing published for this version
Nothing published for this version
Nothing published for this version
Mark options argument as optional (retryExchange()) Submitted by @jtomaszewski (See #3775)
Omit minified files and sourcemaps' sourcesContent in published packages Submitted by @kitten (See #3755)
Nothing published for this version
Use shallowRef to avoid creating deeply reactive objects for heavy objects Submitted by @negezor (See #3611)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Omit minified files and sourcemaps' sourcesContent in published packages Submitted by @kitten (See #3755)
Fixed the delay amount not increasing as retry count increases Submitted by @DoisKoh (See #3478)
pause argument on useQuery and useSubscription to not be reactive
Submitted by @arkandias (See #3595)Nothing published for this version
Mark @urql/core as a peer dependency as well as a regular dependency Submitted by @kitten (See #3579)
@urql/core as a peer dependency as well as a regular dependency
Submitted by @kitten (See #3579)Omit minified files and sourcemaps' sourcesContent in published packages Submitted by @kitten (See #3755)
CVE-2024-24556, addressing an XSS vulnerability, where @urql/next failed to escape HTML characters in JSON payloads injected into RSC hydration bodies. When an attacker is able to manipulate strings in the JSON response in RSC payloads, this could cause HTML to be evaluated via a typical XSS vulnerability (See GHSA-qhjf-hm5j-335w for details.)
Submitted by @JoviDeCroock (See 4b7011b7)wonka@^6.3.0
Submitted by @kitten (See #3104)Mark @urql/core as a peer dependency as well as a regular dependency Submitted by @kitten (See #3579)
@react-native-community/netinfo to allow v11
Submitted by @albinhubsch (See #3485)nonce prop on DataHydrationContextProvider that passes it onto its script tags' attributes
Submitted by @Enalmada (See #3398)hasNext: true is set, which indicates deferred or streamed results
Submitted by @kitten (See #3103)sourcesContent, including additional source files, and had incorrect paths in some of them
Submitted by @kitten (See #3053)wonka@^6.3.0
Submitted by @kitten (See #3104)urql bindings packages
Submitted by @kitten (See #3079)share calls, since @urql/core’s composeExchanges utility now automatically does so for us
Submitted by @kitten (See #3082)wonka@^6.3.0
Submitted by @kitten (See #3104)share calls, since @urql/core’s composeExchanges utility now automatically does so for us
Submitted by @kitten (See #3082)wonka@^6.3.0
Submitted by @kitten (See #3104)@urql/exchange-multipart-fetch as behaviour has been absorbed into @urql/core. If you're using the multipartFetchExchange, you should now be able to simply remove it
Submitted by @kitten (See #3051)maxDepth and skipType into the populateExchange, these options allow you to specify
the maximum depth a mutation should be populated as well as which types should not be counted towards
this depth
Submitted by @JoviDeCroock (See #3023)Create @urql/next which is a package meant to support Next 13 and the React 18 features contained within. For server components we have @urql/next/rsc
@urql/next which is a package meant to support Next 13 and
the React 18 features contained within.
For server components we have @urql/next/rsc and for client components
just @urql/next
Submitted by @JoviDeCroock (See #3214)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)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)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)babel-plugin-modular-graphql helper, this because the graphql package hasn't converted to ESM yet which gives issues in node environments, by @JoviDeCroock (See #2551)Avoid making the imports of @urql/introspection more specific than they need to be, this because we aren't optimizing for bundle size and in pure node
@urql/introspection more specific than they need to be, this because we aren't optimizing for bundle size and in pure node usage this can confuse Node as import x from 'graphql' won't share the same module scope as import x from 'graphql/x/y.mjs', by @JoviDeCroock (See #2529)⚠️ Fix import of executeSync rather than execute causing an incompatibility when several .mjs imports and a main import { executeSync } from 'graphql'
graphql to include ^16.0.0.
As always when upgrading across many packages of urql, especially including @urql/core we recommend you to deduplicate dependencies after upgrading, using npm dedupe or npx yarn-deduplicate, by @kitten (See #2133)Omit minified files and sourcemaps' sourcesContent in published packages Submitted by @kitten (See #3755)
Mark @urql/core as a peer dependency as well as a regular dependency Submitted by @kitten (See #3579)
retryWith option which allows operations to be updated when a request is being retried, by @kitten (See #1881)Publish with npm provenance Submitted by @kitten (See #3180)
Fix SSR runtime failures caused by importing SolidStart's action API at module load time by reading action from Provider context instead Submitted by
action API at module load time by reading action from Provider context instead
Submitted by @JoviDeCroock (See #3850)createSubscription to use @urql/solid-start context instead of re-exporting the Solid-only implementation from @urql/solid
Submitted by @JoviDeCroock (See #3850)share calls, since @urql/core’s composeExchanges utility now automatically does so for us
Submitted by @kitten (See #3082)wonka@^6.3.0
Submitted by @kitten (See #3104)Operation input argument to the retryIf predicate, so that retrying can be actively avoided for specific types of operations, e.g. mutations or subscriptions, in certain user-defined cases, by @kitten (See #1117)⚠️ Fix the production build overwriting the development build. Specifically in the previous release we mistakenly replaced all development bundles wit
Deprecate the Operation.operationName property in favor of Operation.kind. This name was previously confusing as operationName was effectively referri…
Operation.operationName property in favor of Operation.kind. This name was
previously confusing as operationName was effectively referring to two different things. You can
safely upgrade to this new version, however to mute all deprecation warnings you will have to
upgrade all urql packages you use. If you have custom exchanges that spread operations, please
use the new makeOperation helper
function instead, by @bkonkle (See #1045)Upgrade to a minimum version of wonka@^4.0.14 to work around issues with React Native's minification builds, which use uglify-es and could lead to bro
Add source debug name to all dispatchDebug calls during build time to identify events by which exchange dispatched them, by @JoviDeCroock (See #780)
source debug name to all dispatchDebug calls during build time to identify events by which exchange dispatched them, by @JoviDeCroock (See #780)Add a "./package.json" entry to the package.json's "exports" field for Node 14. This seems to be required by packages like rollup-plugin-svelte to fun
"./package.json" entry to the package.json's "exports" field for Node 14. This seems to be required by packages like rollup-plugin-svelte to function properly, by @JoviDeCroock (See #771)Add debugging events to exchanges that add more detailed information on what is happening internally, which will be displayed by devtools like the urq
Add graphql@^15.0.0 to peer dependency range, by @kitten (See #688)
⚠️ Fix node resolution when using Webpack, which experiences a bug where it only resolves package.json:main instead of module when an .mjs file import
package.json:main instead of module when an .mjs file imports a package, by @JoviDeCroock (See #642)Update graphql-toe and add more detail to README Submitted by @benjie (See #3765)
.mjs files and fails to resolve the new version, please double check your configuration for
Webpack, or similar tools, by @JoviDeCroock (See #637)Omit minified files and sourcemaps' sourcesContent in published packages Submitted by @kitten (See #3755)
hasNext to the query and mutation results
Submitted by @JoviDeCroock (See #3703)Initial release of @urql/solid-start - URQL integration built with SolidStart's native primitives. Get started with:
@urql/solid-start - URQL integration built with SolidStart's native primitives.
Get started with:
createQuery - GraphQL queries using SolidStart's query() and createAsync()createMutation - GraphQL mutations using SolidStart's action() and useAction()createSubscription - Real-time GraphQL subscriptionsProvider and useClient - Context-based client access@solid-primitives/utils - Leverages standard Solid ecosystem utilities
Submitted by @davedbase (See #3837)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →