Release notes of react apollo
React integration for Apollo Client
https://www.apollographql.com/docs/react/
⚠️ Deprecation Notice ⚠️
Please note that this is the final version of all React Apollo packages, and that this repository is going to be archived. React Apollo functionality is now directly available from
@apollo/client
>= 3. While using the@apollo/react-X
packages will still work, we recommend using the following imports from@apollo/client
directly instead:
- old:
@apollo/react-components
--> new:@apollo/client/react/components
- old:
@apollo/react-hoc
--> new:@apollo/client/react/hoc
- old:
@apollo/react-ssr
--> new:@apollo/client/react/ssr
- old:
@apollo/react-testing
--> new:@apollo/client/testing
- old:
@apollo/react-hooks
--> new:@apollo/client
React Apollo 4.0.0 is dependent on
@apollo/client
>= 3. If you are usingapollo-client
2.x and are not ready to update to@apollo/client
, please use React Apollo 3.x.The
react-apollo
package has been fully removed. Please use@apollo/client
or@apollo/react-X
packages directly.Due to changes made in Apollo Client, the previous SSR testing pattern of:
return getDataFromTree(app).then(() => { const markup = ReactDOM.renderToString(app); expect(markup).toMatch(/Waldo/); });
will no longer work (
ReactDOM.renderToString(app)
will just return the initial loading state of the component under test). Instead, we can leverage the markup returned whengetDataFromTree
's Promise resolves:return getDataFromTree(app).then((markup) => { expect(markup).toMatch(/Waldo/); });
We are no longer building UMD versions of React Apollo.
- Revert the changes made in #3497, which have lead to problems with
onCompleted
being called more often than necessary.
Make sure SSR is fully disabled when using
ssr: false
andssrMode: true
.Fixed
MockLink
's brokennewData
function handling.Fixed an issue that prevented
networkStatus
from changingready
at the end of pagination.
Calling
startPolling
orstopPolling
after a component has unmounted is now a no-op (instead of throwing an exception). Polling is automatically stopped when a component is unmounted, so it doesn't need to be called manually.Allow
ignoreResults
to be controlled throughgraphql
andwithMutation
options.Be a bit more defensive when it comes to accessing the internal
ObservableQuery
instance, to avoid attempting to use it after a component has unmounted.
A fix has been applied to prevent an unchanging
loading
state when an error occurs after a refetch, that is the same as the previous error.Add back in the removed
ChildDataProps
andChildMutateProps
types.Make sure
onCompleted
is called each time auseLazyQuery
based query completes, after the execution function is called.
Change the default query
data
state from{}
toundefined
. This change aligns all parts of the React Apollo query cycle so thatdata
is alwaysundefined
if there is no data, instead ofdata
being converted into an empty object. This change impacts the initial query response, initial SSR response,data
value when errors occur,data
value when skipping, etc. All of these areas are now aligned to only ever return a value fordata
if there really is a value to return (instead of making it seem like there is one by converting to{}
).
Adds support for the
skip
option when usinguseSubscription
.Makes sure
refetch
,fetchMore
,updateQuery
,startPolling
,stopPolling
, andsubscribeToMore
maintain a stable identity when they're passed back alongside query results.Fixed problematic re-renders that were caused by using
fetchMore.updateQuery
withnotifyOnNetworkStatusChange
set to true. WhennotifyOnNetworkStatusChange
is true, re-renders will now wait untilupdateQuery
has completed, to make sure the updated data is used during the render.Add
client
to theuseMutation
result.Prevent inline
onError
andonCompleted
callbacks from being part of the internal memoization that's used to decide when certain after render units of functionality are run, when usinguseQuery
. This fixes issues related to un-necessary component cleanup, likeerror
disappearing from results when it should be present.useLazyQuery
's execution function can now be called multiple times in a row, and will properly submit network requests each time called, when using a fetch policy ofnetwork-only
.SSR enhancements to support
network-only
andcache-and-network
fetch policies, along with changes to ensure disabled SSR queries are not fired.Remove
void
from theMutationFunction
's returned Promise types.Prevent duplicate
onCompleted
calls during the same query execution cycle.Make sure polling is stopped when a component is unmounted.
Documentation fixes.
Documentation updates.
Dedupe
onError
callback calls and ensurerefetch
setsloading
state properly.Add missing
useLazyQuery
export to thereact-apollo
(all) package.Remove
void
from being one of theMutationTuple
mutate function possible generics. This will make it easier to properly destructure results returned by the mutate function Promise.Export
MockedProviderProps
andMockedProviderState
from@apollo/react-testing
.Add
@types/react
as a peer dep, to address potential TS compilation errors when usingApolloProvider
.Make sure
error
's are maintained after re-renders, when they should be.
This major release includes a large refactoring of the existing React Apollo codebase, to introduce new improvements, changes, features and bug fixes. The biggest new features are:
Provides new
useQuery
,useLazyQuery
,useMutation
,useSubscription
, anduseApolloClient
hooks, following React's Hooks API.Maintains support for React Apollo's
graphql
HOC and render proper components.Introduces a new monorepo structure, with separately published packages, making it easier to use just the parts of React Apollo you're interested in:
@apollo/react-common
@apollo/react-hooks
@apollo/react-components
@apollo/react-hoc
@apollo/react-ssr
@apollo/react-testing
Thorough codebase pruning and cleaning to reduce the overall React Apollo bundle size.
And more!
Consult the Hooks migration guide for more details around upgrading. For more information regarding how to use the new hooks, please consult the updated React Apollo docs (all docs have been updated to be hooks first).
The minimum supported React version is now 16.8.
The
[email protected]
package preserves most of the functionality of[email protected]
by re-exporting existing components and functions from@apollo/react-components
and@apollo/react-hoc
. If you want to use Hooks, Components, or HOC directly, import the new@apollo/react-hooks
,@apollo/react-components
, and/or@apollo/react-hoc
packages instead.React Apollo testing utilities are no longer available as part of the
react-apollo
package. They should now be imported from the new@apollo/react-testing
package.The deprecated
walkTree
function has been removed (9b24d756).The deprecated
GraphqlQueryControls
andMutationFunc
types have been removed (ade881f0).Preact is no longer supported (b742ae63).
Various Typescript type changes. Since we've introduced a third way of managing data with React (Hooks), we had to rework many of the existing exported types to better align with the Hooks way of doing things. Base types are used to hold common properties across Hooks, Components and the
graphql
HOC, and these types are then extended when needed to provide properties that are specific to a certain React paradigm (30edb1b0 andcatchAsyncError
,wrap
, andcompose
utilities have been removed (2c3a262, 7de864e, and e6089a7).Previously,
compose
was imported then exported directly from lodash usingflowRight
. To keep usingcompose
, install thelodash.flowright
package, then update yourcompose
imports as:import compose from 'lodash.flowright';
Render prop components (
Query
,Mutation
andSubscription
) can no longer be extended. In other words, this is no longer possible:class SomeQuery extends Query<SomeData, SomeVariables> {}
All class based render prop components have been converted to functional components, so they could then just wrap their hook based equivalents (
useQuery
,useMutation
,useSubscription
).While we recommend switching over to use the new hooks as soon as possible, if you're looking for a stop gap you can consider typing a
Query
component in a similar fashion, like:export const SomeQuery = () => ( <Query<SomeData, SomeVariables> query={SOME_QUERY} ...> {({ data }) => { return <div> ... things happen... </div>; }} </Query> );
Make sure
MockedProvider
is using the proper CJS/ESM bundle, when referencingApolloProvider
.Adjust the
ApolloContext
definition to play a bit more nicely withReact.createContext
types.The result of a mutation is now made available to the wrapped component, when using the
graphql
HOC.Check equality of stringified variables in the
MockLink
to improve debugging experience used byMockedProvider
.
Removed leftover
[email protected]
peer dep.Stop setting optional input to
null
, when using thegraphql
HOC.Fix typescript error caused by
query
being mandatory in thefetchMore
signature.Fixes an issue that caused the
Query
component to get stuck in an always loading state, caused by receiving an error (meaning subsequent valid responses couldn't be handled). TheQuery
component can now handle an error in a response, then continue to handle a valid response afterwards.Reorder
Subscription
component code to avoid setting state on unmounted component.Fix component stuck in
loading
state fornetwork-only
fetch policy.
Both the
Query
component andgraphql
HOC now accept areturnPartialData
prop. This is an important new feature, that should help address a lot of open Apollo Client / React Apollo issues, so we'll explain it here with an example. Before this release, if you run a query that looks like:const GET_MEMBER = gql` query GetMember($id: ID!) { member(id: $id) { id name } } `;
in one component, the results are cached, then you run a superset query like the following in another component:
const GET_MEMBER_WITH_PLANS = gql` query GetMemberWithPlans($id: ID!) { member(id: $id) { id name plans { id title duration } } } `;
Apollo Client will not re-use the partial data that was cached from the first query, when it preps and displays the second component. It can't find a cache hit for the full second query, so it fires the full query over the network.
With this release, if you set a
returnPartialData
prop totrue
on the second component, thedata
available to that component will be automatically pre-loaded with the parts of the query that can be found in the cache, before the full query is fired over the network. This means you can do things like showing partial data in your components, while the rest of the data is being loaded over the network.
Export the Apollo Context provider (
ApolloContext
).
Documentation updates.
Fixes
Could not find "client" in the context of ApolloConsumer
errors when usingMockedProvider
.Ensure
Query
components using afetchPolicy
ofno-cache
have their data preserved when the components tree is re-rendered.
MockedProvider
now accepts achildProps
prop that can be used to pass props down to a child component.onCompleted
callbacks now use a destructuring-friendly type definition.@connection
directives are now properly stripped fromMockedResponse
's, when usingMockedProvider
.MockedProvider
has been updated to stop setting a defaultresolvers
value of{}
, which means by default Apollo Client 2.5 local resolver functionality is not enabled when mocking withMockedProvider
. This allows@client
fields to be passed through the mocked link chain, like people were used to before AC 2.5. When using this default mode you will see a dev only warning message about this like:Found @client directives in query but no client resolvers were specified. You can now pass apollo-link-state resolvers to the ApolloClient constructor.
This message can be safely ignored. If you want to use
MockedProvider
with AC 2.5's new local resolver functionality, you can pass your local resolver map into theMockedProvider
resolvers
prop.Improvements to the
graphql
HOC generics forfetchMore
andrefetch
.The
ApolloProvider
/ApolloConsumer
implementations have been refactored to use React 16.3's new context API.All
dependencies
anddevDependencies
have been updated to their latest versions, and related Typescript changes have been applied.
Fixed an infinite loop caused by using
setState
in theonError
/onCompleted
callbacks of theQuery
component.Fixed an issue that prevented good results from showing up in a
Query
component, after an error was received, variables were adjusted, and then the good data was fetched.Fixed an issue that prevented
Query
component updates from firing (under certain circumstances) due to the internallastResult
value (that's used to help prevent unnecessary re-renders) not being updated.
Add
examples/rollup
to enable application-level bundle measurement and demonstrate Rollup configuration best practices.Bundle size reductions inspired by
examples/rollup
app.
Export
Context
type fromtypes.ts
instead ofwalkTree.ts
, to reenableimport { Context } from 'react-apollo'
(which has been broken since 2.4.0).
Make sure
MockedProvider
enables Apollo Client 2.5's local state handling, and allow custom / mocked resolvers to be passed in as props, and used with the created testApolloClient
instance.
Ready to be used with Apollo Client 2.5 and its new local state management features, as well as many overall code improvements to help reduce the React Apollo bundle size.
A function can now be set as a
MockedResponse
result
when usingMockedProvider
, such that every time the mocked result is returned, the function is run to calculate the result. This opens up new testing possibilities, like being able to verify if a mocked result was actually requested and received by a test.
Adds a
onSubscriptionComplete
prop to theSubscription
component, that can be passed a callback to be called when the subscription observable is completed.During server-side rendering,
ObservableQuery
objects created in previous rendering passes will now be preserved in later passes (within the samegetDataFromTree
orgetMarkupFromTree
call), so that errors can be handled properly when using theerrorPolicy: "all"
option.
The
walkTree
function has been deprecated, since there's no way to make its behavior consistent with the latest versions of React. To save bundle size,walkTree
is no longer exported fromreact-apollo
, though you can still access it as follows:import { walkTree } from 'react-apollo/walkTree';
Invoke
onCompleted
/onError
even ifMutation
unmounts.
Update the typescript example app to use the raw Query component directly, with generics, to avoid generating the extra object that's created (in the compiled code) when extending the Query component as a class.
Use new
ApolloClient#stop
method to dispose ofMockedProvider
client instance.The
apollo-client
peer dependency version constraint has been updated to require the latest version, 2.4.12. Although this update is recommended, and we believe it is backwards compatible with other [email protected] versions, we decided to bump the minor version ofreact-apollo
(to 2.4.0) because of this newapollo-client
version requirement.
Invoke
onCompleted
/onError
even ifMutation
unmounts.
Drop
react
14.x support, since the 14.x release line is 2 years old now, andreact-apollo
is no longer tested against it.
Add
react-dom
as a peer dependency (since it's used bygetDataFromTree
andrenderToStringWithData
).
This package no longer imports
react-dom/server
unconditionally at the top level, makingreact-apollo
safer to use in environments like React Native that are neither browser-like nor Node-like, and thus struggle to importreact-dom/server
and its dependencies. Additionally, the React Native bundler has been instructed to ignore allreact-dom/server
dependencies withinreact-apollo
, soreact-dom
will not be bundled in React Native apps simply because they importreact-apollo
.
Restore original
getDataFromTree(tree, context)
API, and introduce a new alternative calledgetMarkupFromTree
to enable custom rendering functions:export default function getDataFromTree( tree: React.ReactNode, context: { [key: string]: any } = {}, ) { return getMarkupFromTree({ tree, context, renderFunction: renderToStaticMarkup, }); } export type GetMarkupFromTreeOptions = { tree: React.ReactNode; context?: { [key: string]: any }; renderFunction?: typeof renderToStaticMarkup; }; export function getMarkupFromTree({ tree, context = {}, renderFunction = renderToStaticMarkup, }: GetMarkupFromTreeOptions): Promise<string> {...}
Version 2.3.0 was published incorrectly, breaking nested
react-apollo/...
imports. This problem was fixed in version 2.3.1 by runningnpm publish
from thelib/
directory, as intended.
Reimplement
getDataFromTree
usingReactDOM.renderToStaticMarkup
to make asynchronous server-side rendering compatible with Although the rendering function used bygetDataFromTree
defaults torenderToStaticMarkup
, any suitable rendering function can be passed as the optional second argument togetDataFromTree
, which now returns aPromise<string>
that resolves to The HTML rendered in the final pass, which means callingrenderToString
aftergetDataFromTree
may not be necessary anymore.
Fix
networkStatus
to reflect the loading state correctly for partial refetching.
Make sure the
TVariables
generic is passed toObservableQuery
.
The
Subscription
component now accepts afetchPolicy
prop.
lodash.isequal
was improperly set as a dev dependency forMockLink
/MockedProvider
. It is now a dependency.
Typings: added
context
toMutationOptions
.Typings: more
MutationOptions
changes/fixes.Remove
allowSyntheticDefaultImports
use. Typescript'sallowSyntheticDefaultImports
compiler option is something we'd like to start using, but we jumped the gun a bit by introducing it in https://github.com/apollographql/react-apollo/commit/9a96519d390783dfd9a431dc2dbaa476a24f7b80. Including it means that anyone who wants to use Typescript with React Apollo would have to also include it in their own localtsconfig.json
, to be able to handle default imports properly. This is because we're also using Typescript'ses2015
module
option, which meansallowSyntheticDefaultImports
has to be enabled explicitly. We've switched back to using a combination ofimport * as X
andrequire
syntax, to work with default imports. We'll re-introduceallowSyntheticDefaultImports
use in React Apollo 3.
Replace the
lodash
dependency withlodash.flowright
(since that's the only non-devlodash
function we're dependent on). Devlodash
dependencies have also been updated to use their individual module equivalent.Removed
rollup-plugin-babel-minify
as it's no longer being used.Small
getDataFromTree.ts
logic adjustment to avoid unnecessary calls when a falsyelement
is encountered.graphql
14 updates.All example apps (included in the repo) have been updated to work with the latest version of React Apollo.
Mutation errors are now properly returned as a render prop, when using a default
errorPolicy
ofall
.<Mutation />
refetchQueries
triggered by name (string) will now use the correct variables.Fix
lodash
typings.
- When using
React.createContext
and SSR, we now make sure the context provider value is reset to the previous value it had after its children are walked. - Revert:
When a query failed on the first result, the query resultdata
was being returned asundefined
. This behavior has been changed so thatdata
is returned as an empty object. This makes checking for data (e.g. instead ofdata && data.user
you can just checkdata.user
) and destructring (e.g.{ data: { user } }
) easier. Note: this could potentially hurt applications that are relying on a falsey check ofdata
to see if any query errors have occurred. A better (and supported) way to check for errors is to use the resulterrors
property.
- Revert: "Typescript: use
Partial<TData>
instead ofTData | {}
, for theQueryResult
data
property."
- Improved TypeScript Typings:
Deprecated
MutationFunc
in favor ofMutationFn
. Added missingonCompleted
andonError
callbacks toMutationOpts
. - Added an example app that shows how to test mutations.
- The
<Subscription />
component now allows the registration of a callback function, that will be triggered each time the component receives data. The callbackoptions
object param consists of the current Apollo Client instance inclient
, and the received subscription data insubscriptionData
. - The
graphql
options
object is no longer mutated, when calculating variables from props. This now prevents an issue where components created withgraphql
were not having their query variables updated properly, when props changed. - When a query failed on the first result, the query result
data
was being returned asundefined
. This behavior has been changed so thatdata
is returned as an empty object. This makes checking for data (e.g. instead ofdata && data.user
you can just checkdata.user
) and destructring (e.g.{ data: { user } }
) easier. Note: this could potentially hurt applications that are relying on a falsey check ofdata
to see if any query errors have occurred. A better (and supported) way to check for errors is to use the resulterrors
property. - Allow a custom
cache
object to be passed into the test-utilsMockedProvider
. - Make the
MockedProvider
mocks
prop read only. - Remove duplicate
FetchMoreOptions
andFetchMoreQueryOptions
types, and instead import them from Apollo Client. - Type changes for the
graphql
HOCoptions.skip
property. - Avoid importing
lodash
directly. - When the
Query
skip
prop is set totrue
, make sure the render proploading
param is set tofalse
, since we're not actually loading anything. - No longer building against Node 9
- Make sure
<Subscription />
,<Query />
&<Mutation />
all support using an Apollo Client instance configured in thecontext
or via props. - Typescript: use
Partial<TData>
instead ofTData | {}
, for theQueryResult
data
property. - Adjust
<Query />
onCompleted
andonError
callbacks to be triggered via thecomponentDidUpdate
lifecycle method. This ensures these callbacks can be used when data is fetched over the network, and when data is fetched from the local store (previsouly these callbacks were only being triggered when data was fetched over the network). - Import
lodash/flowRight
using ES import to allow for treeshaking. - Fixed a regression where
variables
passed ingraphql
HOCoptions
were not merged with mutationvariables
. - Added a new
partialRefetch
prop (false
by default). When aQuery
component is mounted, and a mutation is executed that returns the same ID as the mountedQuery
, but has less fields in its result, Apollo Client'sQueryManager
returns the data as an empty Object since a hit can't be found in the cache. This can lead to application errors when the UI elements rendered by the originalQuery
component are expecting certain data values to exist, and they're all of a sudden stripped away. The recommended way to handle this is to use the mutationsupdate
prop to reconcile the mutation result with the data in the cache, getting everything into the expected state. This can definitely be a cumbersome process however, so to help address this thepartialRefetch
prop can be used to automaticallyrefetch
the original query and update the cache.
- Fixed an issue in
getDataFromTree
where queries that threw more than one error had error messages swallowed, and returned an invalid error object with circular references. Multiple errors are now preserved. - Update both the
<Mutation />
component andgraphql
HOC to accept a newawaitRefetchQueries
prop (boolean). When set totrue
, queries specified inrefetchQueries
will be completed before the mutation itself is completed.awaitRefetchQueries
isfalse
by default, which meansrefetchQueries
are usually completed after the mutation has resolved. Relates to Apollo Client. - Typings adjustment: pass
TData
along intoMutationUpdaterFn
when usingMutationOpts
, to ensure that the updater function is properly typed. - Check if queryManager is set before accessing it.
- Added
onCompleted
andonError
props to theQuery
component, than can be used to register callback functions that are to be executed after a query successfully completes, or an error occurs. - Add
UNSAFE_componentWillMount
SSR support. - Clear out scheduler on MockedProvider unmount.
- Addressed deployment issue.
- The
ApolloProvider
children
prop type has been changed fromelement
tonode
, to allow multiple children. - Properly support the new
getDerivedStateFromProps
lifecycle method. lodash
is no longer pinned to version 4.17.10.- README updates to replace
apollo-client-preset
withapollo-boost
. - README updates to fix broken links.
- Project README has been updated to show a
<Query />
example.
- Adjust
getDataFromTree
to properly traverse React 16.3's context API provider/consumer approach. - An
ApolloClient
instance can now be passed into aMutation
component via a prop namedclient
. This prop will override anApolloClient
instance set viacontext
, by theApolloProvider
component. - The
ApolloClient
instance used by a Mutation is now available in that Mutation's result.
- Dependency updates to align with typescript changes made in
apollo-client
2.3.3
- Adds
__typename
for queries made with MockProvider and MockLink
- Fixed issue where refetch was not possible after SSR
- Fixed overly resubscribing from Subscription and allow passing function to determine shouldResubscribe
- Simplified the MockedProvider API #1882
- Fixed test-utils export
- Fix uneccesary rerender on cache hit
- Officially release new components!
- Turn back on TypeScript definitions
- remove .mjs support
- attempt to fix .mjs support for create react app
- Fix default values being set as falsy in options merging
- Remove console.error call for unhandled errors for query-hoc (but keep in place for graphql hoc for backwards compat)
- Ensure context can be passed as props
Added
query
,mutation
, andsubscription
higher order componentsAdded
prop-types
validation to the<Query />
,<Subscription />
and<ApolloConsumer />
component #1587Added
<Mutation />
component #1520Added back in support for browser / main bundles #1578
add component name in unhandled error message #1362
Added notifyOnNetworkStatusChange to QueryOpts and MutationOpts Typesccript definitions #1034
Added variables types with Typescript #997
Address deprecation warnings coming from
graphql-tag
graphql-tag#54Add apollo-client ^0.10.0 to dependency range
Add
react-dom
topeerDependencies
because since React 15.4 it is no longer "secretly" included. (ref: https://github.com/facebook/react/releases/tag/v15.4.0)
bad build
Refactored and removed old
graphql
implementation in favor of new componentsRemoved QueryRecycler!! :yay:
Aded
<Subscription />
to the public APIHoC
props
result-mapping function now receives prior return value as second argument.Rollback importing non esm packages. Fixes the previous broken version #1621
Stricter type checking in the codebase. #1617
Beta release of all 2.1 features!
Resubscribe after error for Query #1580
Change package to produce ES2015 as
module
and commonjs formain
#1576Make
Query
component work withgetDataFromTree
by definingfetchData
[#1579]NEW FEATURES
BREAKING CHANGES [Removal of deprecated code]
- Remove deprecated
operationOptions.options.skip
, useoperationOptions.skip
instead - Remove deprecated
options.updateQueries
, useoptions.update
instead #1485
- Remove deprecated
BREAKING CHANGES [TypeScript and Flow only]
- typescript -
graphql
parameterized types streamlined for a) full typing; and b) ease of use; and c) consistency. New parameterized is:graphql<TProps,TData, TGraphQLVariables, TChildProps>
where none are required and full typing only requires the first three params (TChildProps
can be derived). #1402 - Rename type
ProviderProps
toApolloProviderProps
#1467 - Rename
getDataFromTree
typeQueryResult
toQueryTreeResult
#1467 - Rename type
QueryProps
toGraphqlQueryControls
#1467 #1478
- typescript -
Fixes and Improvements
- Fixed bug where link error prevents future requests
- Fixed stack traces on non chrome browsers #1568
- Fixed bug #1412 where the
MockedProvider
ignored variables when doing matching. This is potentially breaking because tests could break for which the variables don't match #1501 - Update all dependencies, scripts' usage, prettier and typescript setup #1402
- Tests are now linted and verified valid typescript #1402
- Typescript - updated
types
for consistency and potential to pass through all types e.g.TProps, TData, TGraphQLVariables
#1402 - Typescript - added
ChildDataProps
andChildMutateProps
for optional stronger typed usage version ofChildProps
#1402 - Typescript - fix
graphql
HOC inference #1402 - Made prettier solely responsible for formatting, removed all formatting linting rules from tslint #1452
- Convert
Query.test
totsx
and parameterize types forQuery
#1462 - Remove copied
shallowEqual
code and delegate tofbjs
#1465 - Update rollup configurations, refine package exports #1467
- Removed unused gzip script #1468
- Minify umd and ensure umd name consistency #1469
- Converted
test/test-utils/test-utils.test.js
totest/test-utils.test.tsx
#1475 - Updates to
examples/typescript
#1471 - Mutation test cleanup #1480
- Removed react-native from the test suite #1451
- Add
client
toQuery
'sQueryResult
#1488 - Disregard falsy elements when walking tree in SSR #1495
- Removed the key
variables
from the render prop result in the<Query />
#1497 - Added
<Subscription />
component #1483 - Render callback should be typed with TData #1519
rolled back on the lodash-es changes from errors reported on slack
Use lodash-es to allow lodash functions to be used in ES modules #1344
turn back on flow checking
upgraded required apollo-client for bugfix for subscriptions
upgraded flow support to 0.59.0 :tada: #1354
skip null / undefined items on SSR if present #1355
Correctly provide the generic cache type to ApolloProvider #1319
Correctly initializes component state as null (not undefined) #1300
BREAKING: removed cleanupApolloState as it is no longer needed!
Exported getDataFromTree on the client
Removed
redux
from peer dependencies. Issue #1223 PR #1224Support arrays being returned from render in SSR #1158
Support passing an updater function to
setState
in SSR mode #1263upgrade to Apollo Client 2.0
remove direct dependencies on Apollo Client, graphql-tag
Made
OptionProps.data
'sTResult
partial #1231upgrade to react-16
Made
ChildProps.data
non-optional #1143MockNetworkInterface match mock requests regardless of variable order #973
Allow to pass removeTypenames to MockedProvider #1001
Support apollo-client 2.0
Replace string refs with callback refs #908
Feature: Add support for flow typecheck to work out of the box (without any configuration)
Feature: You can now supply a client in options object passed to the
graphql
high oder component. PR #729Feature: Enhanced typescript definitions to allow for more valid type checking of graphql HOC PR #695
Feature: Flow types: PR #695
Feature: Support tree shaking and smaller (marginally) bundles via rollup PR #691
Perf: Removed unneeded usage of shouldComponentUpdate PR #661 inspired by PR #653
Perf: Removed unneeded usage of shouldComponentUpdate in Provider PR #669
Chore: remove unused immutable prop PR #539
Chore: Include React 16 alpha in dependency version range PR #647
Pass cached data to the child component along with the error. PR #548
Switch
graphql-tag
dependency to2.0.0
. This isn't really a breaking change because we only exportgql
fromreact-apollo
.Exposed
createBatchingNetworkInterface
from apollo-client so that it can be imported from react-apollo just likecreateNetworkInterface
. PR #618ApolloProvider now won't put its
store
oncontext
unless it was given. PR #550MockedProvider now accepts a
store
prop to be passed to ApolloProvider so that react-redux store is not overwrittenMake sure that all queries resolve or reject if an error was thrown when server side rendering. PR #488
ApolloProvider now changes its client and store when those props change. PR #479
Update dependency to Apollo Client 1.0.0-rc.1 PR #520
Make sure that the cached rendered element has the correct type before returning it. PR #505
Move constructor initializing of props to componentWillMount. PR #506 (Issue #509).
Make sure ApolloClient and gql are exported from browser bundle PR #501
Make apollo-client and graphql-tag dependencies and re-export them from this package PR #490
Print errors to console if they are not handled by component PR #476
Update Apollo Client to 0.9.0 and bump a lot of other dependencies PR #484
Remove
@types/chai
dev dependency which called a reference to thechai
types in the production build. PR #471Feature: [typescript] Add better typings to graphql HOC Issue #379
Update apollo-client peerDependency to 0.8.0 PR #438
Bug: Issue #404 fix issue with network errors thrown when changing variables.
Feature: Allow access to
withApollo
's wrapped instance thanks to{withRef: true}
option Issue #331.Feature: Add an
alias
option to thegraphql
function to allow customizing the display name of the wrapped component (Issue #354).Chore: PR #403 move react-dom to be an optional dependency for better react-native builds.
Same as 0.8.0, but properly built
Update typings dependency from typed-grapqhl to @types/graphql PR #393
Chore: PR #390 gets rid of warning during queries test.
Chore: PR #391 gets rid of warnings during redux test.
Feature: PR #389 added a shouldResubscribe option to allow subscriptions to automatically resubscribe when props change.
Identical to 0.7.2 because 0.7.3 contained breaking change (updated typings)
Chore: PR #390 gets rid of warning during queries test.
Chore: PR #391 gets rid of warnings during redux test.
Feature: PR #389 added a shouldResubscribe option to allow subscriptions to automatically resubscribe when props change.
Bug: fix issue where changing variables while unskipping didn't result in the variables actually changing - Issue #374
Bug: fix issue with no longer passing errors to components w/ `[email protected]` - Issue #378
// old import { getDataFromTree, renderToStringWithData } from 'react-apollo/server'; // new import { getDataFromTree, renderToStringWithData } from 'react-apollo';
Feature: Better packaging PR #306
Feature: Add networkStatus prop to connected componentsIssue #322
Feature: Pass component display name as watchQuery metadata for experimental devtools PR #363
Feature: Removed use of
createFragment
and bumped AC version PR #357Bug: fix issue with Redux's
connect
and SSR - Issue #350// old -- we attempted to get the state out of your apollo provider for your renderToStringWithData(component).then({ markup, initialState }); // new -- you must get it yourself renderToStringWithData(component).then((markup) => { const initialState = client.store.getState()[client.reduxRootKey]; // ... });
This release refactors the server side rendering and data access code, hopefully making it easier to contribute to in the future and fixing a few bugs along the way:
Bug: Fix bug in SSR in React Production mode Issue #237
Bug: Fix issue fetching multiple levels of queries Issue #250
Bug: Fix issue with Stateless components in SSR Issue #297
Feature: Refactored to collect data in one place Issue 264
Feature: Added test utilities and examples to library.
Bug: Fix issue with usage in TypeScript projects caused by 'compose' re-export. PR #291
Bug: Fix issue with forceFetch during SSR PR #293
Full support for both Apollo Client 0.4.21 and 0.5.0. PR #277
Bug: Fix issue with SSR queries running twice when a mutation wraps a query #274
Bug: Fix issue with changing outer props and not changing variables, ultimately caused by https://github.com/apollostack/apollo-client/pull/694
Bug: Fix and test some subtle bugs around skipping and subscriptions. #260
Feature: Remove nested imports for apollo-client. Making local development eaiser. #234
Feature: Move types to dev deps #251
Feature: New method for skipping queries which bypasses HOC internals #253
Feature: Integrated subscriptions! #256
Feature: Refactor loading state managment to use apollo-client fully. Reduces library size by ~50% #211
Feature: Upgraded to typescript 2.0 #217
Feature: Allow usage of redux key or selector #226
Bug: Passing immutable to ApolloProvider breaks ssr.
renderToStringWithData
fails to reference the right store.Bug: Fixed issue with context in SSR #218
Bug: Fixed lifecycle events for componentWillMount() on the server #205
Bug: Created better reference to updateQuery when bound early. It will also throw if called before it should be.
Bug: Fixed issue with updateQuery not being present during componentWillMount #203
Feature: Allow optional variables by passing null value on behalf of the variable #200
Feature: Added link to recompose to use the
compose
function. This makes it easy to combine multiple queries on a single component. #194// old renderToStringWithData(component).then(markup); // markup had a script tag // new renderToStringWithData(component).then({ markup, initialState }); // markup has not tag, and state is passed
Feature: Removed client as a prop and fixed warnings when not using ApolloProvider #189
Feature: Added updateQuery to data props
Bug: Fixed renderToStringWithData causing react warning #169
Bug: Fixed ssr fragment issue #178
Bug: Fixed loading state for skipped queries #190
Bug: Fixed loading state on remounted component with different variables
Bug: Fixed SSR issue with context #165
Bug: Fixed issue when context changes in parent container not going through to child; #162
Bug: Fixed loading state on remount of forceFetch operations; #161
Bug: Fixed issue with variable merging after fetchMore #150
Feature: Allow options value to be an object instead of a method. #144
Bug: Fixed issue with missing methods on initial props #142
Bug: Fixed oddity with multi nested enhancers on SSR #141
Bug: Fixed issue with variable merging #139
Feature: Support a different store in the tree that is immutable (support immutable redux) #137
Bug: Fixed refetch methods when no result is returned
BREAKING Feature: Brand new API! See the docs for more information;
Bug: Fixed loading state on refetch more when data doesn't change
Feature: added fetchMore #123
Bug: Retain compatibility with version 0.3.0 of Apollo Client via a backcompat shim. #109
Feature: Support 0.4.0 of Apollo Client, and pass through new mutation options #105 #106
Bug: Fixed but where SSR wouldn't get calculated props from redux actions #103
Feature: integrated SSR #83
Feature: added ability to hoist statics on components #99
Bug: Don't strip data away from the component when the query errors #98
Bug: Fixed issue where react native would error on aggressive cloneing of client
Feature: pass through all methods on apollo client
Bug: fixed issue causing errors to be passed to apollo-client #89
Bug: fixed overrendering of components on redux state changes
Bug: fixed bug where SSR would fail due to later updates. This should also prevent unmounted components from throwing errors.
Feature: provide add
watchQuery
to components viaconnect
Bug: Don't use old props on store change change
Bug: Reset loading state when a refetched query has returned
Bug: Loading state is no longer true on uncalled mutations.
Return promise from the refetch method
Bug: Fix bug where state / props weren't accurate when executing mutations.
- Improvement: Increase performance by limiting re-renders and re-execution of queries. Chore: Split tests to make them easier to maintain.
Feature: add
startPolling
andstopPolling
to the prop object for queriesBug: Fix bug where full options were not being passed to watchQuery
Feature: Support 0.3.0 of apollo-client
Feature: Change Provider export to be ApolloProvider and use Provider from react-redux
Feature: Support 0.1.0 and 0.2.0 of apollo-client
Breaking change:
Feature: Remove
result
key in favor of dynamic key matching root fields of the query or mutation. (https://github.com/apollostack/react-apollo/pull/31){ loading: false, result: { posts: [] } }
becomes
{ loading: false, posts: [] }
Bug: Get state directly from redux store internally
Bug: Fix bug with willReceiveProps
Bug: - Adjust loading lifecycle marker to better match the behavior of apollo-client #11
Feature: - Update to support new observable API from apollo-client #9
Initial release. Brings in support for binding GraphQL data to components easily as well as perform mutations.
We didn't track changes before this version.
Improved TS types (even more) in both
Query
component andgraphql
HoC. #1617Improved TypeScript types of Query Component #1581
Improvement: Allow for better typescript usage with improved types #862
Improvement: Reduce re-renders by using forceUpdate instead of setState({ }) PR #775
Improvement: Refactor dataForChild to use bound function to reduce rerenders PR #772
Improvement: don't set the loading state to false if forceFetch is true
Fix errorPolicy when 'all' not passing data and errors
Fix bundles and run test suite on all shippable code
Fix React Component detection bug in
getDataFromTree
#1604fix skip on component update #1330
fix skip on component update.
Fix: ensure
client
option can be used with mutation query #1145fix shallowEqual bug.
Fix: handle calling refetch in child componentDidMount
Fix: ensure options gets up to date props #1025
Fix: ensure queryRecycler exists before using it
Fix: Scope query recyclers by client #876
Fix: fix issue with bad deploy
Fix: fix UMD bundle pointing to apolloClient for some reason
Fix: fix matching types with exports for flow and ts
Fix: Ensure typescript and flow type definitions match in name
Fix: Fix issue where
withRef
-option ofgraphql
did not work when the query was skipped #865Fix: export all types from main type file
Fix: Fix issue around hoisting non react statics for RN #859
Fix: Fix issue where options was called even though skip was present #859
Fix: Fix issue when using flow definitions PR# 787
Fix: Add in missing types for MutationOpts PR #770
Fix: Fix component reference and variable statement for flow types
Fix: Fix compilation of test-utils from move to ES bundles
Fix: Fix bug with sync re-renders and recyled queries PR #740
Fix: Render full markup on the server when using the
cache-and-network
fetchPolicy PR #688Fix: Use
standby
fetchPolicy for recycled queries PR #671Fix: Re-export all Apollo Client exports from react-apollo PR #650
Fix: move prop-types from devDependencies to dependencies PR #656
Fix version lock down for peer dependency version of React. PR #626
Fix: convert deprecated
React.PropTypes
toPropTypes
provided by theprop-types
package. PR #628Fix: Make sure recycled queries are in cache only mode so they do not trigger network requests. PR #531
Fix bug where
options
was mutated causing variables to not update appropriately. PR #537Fix
updateQueries
not running for queries attached to unmounted components. PR #462Fix wrong invariant sanity checks for GraphQL document PR #457