diff --git a/Changelog.md b/Changelog.md
index 0e6df33906..190699864e 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,6 +1,7 @@
# Change log
### vNext
+* Added `` component [#1520](https://github.com/apollographql/react-apollo/pull/1520)
* HoC `props` result-mapping function now receives prior return value as second argument.
* Fix errorPolicy when 'all' not passing data and errors
diff --git a/package.json b/package.json
index 98040f0f8d..b3f2e06549 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,7 @@
"bundlesize": [
{
"path": "./lib/react-apollo.browser.umd.js",
- "maxSize": "6.5 KB"
+ "maxSize": "7 KB"
}
],
"lint-staged": {
diff --git a/src/Mutation.tsx b/src/Mutation.tsx
new file mode 100644
index 0000000000..c91901518d
--- /dev/null
+++ b/src/Mutation.tsx
@@ -0,0 +1,270 @@
+import * as React from 'react';
+import * as PropTypes from 'prop-types';
+import ApolloClient, { PureQueryOptions, ApolloError } from 'apollo-client';
+import { DataProxy } from 'apollo-cache';
+const invariant = require('invariant');
+import { DocumentNode, GraphQLError } from 'graphql';
+const shallowEqual = require('fbjs/lib/shallowEqual');
+
+import { OperationVariables } from './types';
+import { parser, DocumentType } from './parser';
+
+export interface MutationResult> {
+ data?: TData;
+ error?: ApolloError;
+ loading?: boolean;
+}
+export interface MutationContext {
+ client: ApolloClient