Releases: urql-graphql/urql
v1.6.0
This release comes with stability improvements for the useQuery
and useSubscription
hooks
when using suspense and concurrent mode. They should behave the same as before under normal
circumstances and continue to deliver the correct state on initial mount and updates.
The useQuery
hook may however now trigger suspense updates when its inputs are changing,
as it should, instead of erroneously throwing a promise in useEffect
.
The added stale: boolean
flag on the hooks indicates whether a result is "stale".
useQuery
will expose stale: true
on results that are cached but will be updated
due to the use of cache-and-network
.
We've also made some changes so that client.query()
won't throw a promise, when suspense
mode is activated.
v1.5.1
v1.5.0
This release finally adds shortcuts to imperatively make queries and mutations.
They make it easier to quickly use the client programmatically, either with
a Wonka source-based or Promise-based call.
// Call .query or .mutation which return Source<OperationResult>
const source = client.query(doc, vars);
const source = client.mutation(doc, vars);
// Call .toPromise() on the source to get Promise<OperationResult>
const promise = client.query(doc, vars).toPromise();
const promise = client.mutation(doc, vars).toPromise();
This version also adds a useClient
hook as a shortcut for useContext(Context)
.
We provide a default client that makes requests to /graphql
. Since that has
confused users before, we now log a warning, when it's used.
v1.4.1
This release adds "active teardowns" for operations, which means that an exchange can now send a teardown to cancel ongoing operations. The subscriptionsExchange
for instance now ends ongoing subscriptions proactively if the server says that they've completed! This is also reflected as fetching: false
in the useQuery
and useSubscription
hook.
We've also fixed a small issue with suspense and added all features from useQuery
to useSubscription
! This includes the pause
argument and an executeSubscription
function.
v1.4.0
This release removes all metadata for the @urql/devtools
extension from the core
urql
package. This data will now be generated internally in the devtools exchange
itself. Please also upgrade to the latest @urql/devtools
version if you're using
the extension.
This release has mainly been focused on minor refactors to keep the bundlesize low.
But it also introduces new features, like specifying a default requestPolicy
and
a new polling option on useQuery
!
This release also exports makeResult
and makeErrorResult
, which will reduce the
boilerplate code that you need for custom fetch exchanges.
- Minor bundlesize optimizations and remove
debugExchange
in production (see #375) - ✨ Add
requestPolicy
option toClient
to change the default request policy (see #376) - ⚠ Remove dependency on
graphql-tag
and improveOperation.key
hashing (see #383) - Remove
networkLatency
andsource
metadata from context, and deleteuseDevtoolsContext
(see #387 and #388) - ✨ Add support for polling with
pollInterval
argument touseQuery
, by @mxstbr (see #397) - ⚠ Prevent
__typename
from being added to the toplevel GraphQL documents (see #399) - Add
operationName
field tofetch
request body (see #401)
v1.3.0
This release comes with some important fixes and enhancements, which all address
certain edge-cases when using urql
.
It fixes the cache-and-network
request policy, which wouldn't always work correctly and issue another network request after resolving a response from the default cache. We also had a major bug in React Native environments where responses wouldn't ever be reflected in the useQuery
hook's state. Lastly, you can now use extensions
from your GraphQL servers and modify the OperationContext
from the hooks options.
- ✨ Add support for
extensions
key in GraphQL responses, by @adamscybot (see #355) - ⚠ Fix
cache-and-network
request policy by adding operation flushing to the client (see #356) - Add
fetch
option to the Client so it doesn't have to be polyfilled globally (see #357 and #359) - ⚠ Fix
useImmediateState
for React Native environments (see #358) - ✨ Add
context
option to all hooks to allowOperationContext
to be changed dynamically (see #351) - Add
isClient
option tossrExchange
in casesuspense
is activated on the client-side (see #369)
v1.2.0
A release focused on improving developer experience (in preparation for the
upcoming devtools) as well as minor documentation improvements and bug fixes.
- Add metadata to operation context in development (see #305, #324, #325 and #329)
- Fix minor typename memory leak (see #321)
- Fix types for react subscription components (see #328)
- Fix displayName attributes not populated in examples (see #330)
- Fix error in
collectTypes
method (see #343) - Fix HTTP status bounds check error (see #348)
v1.1.3
v1.1.2
This patch fixes a small bug that usually manifests in development,
where the initial state would be incorrect after a fast response from
the GraphQL API. This used to lock the state into fetching: true
indefinitely in some cases.
v1.1.1
This release comes with two small patches. One being a crticial fix, where cancelled requests would be erroneously deduped, which meant a previously cancelled query would never be fetched.
It also refactors our bundling process to transpile Object.assign
to restore IE11 support and reduce the amount of duplicate helper in our bundles.