diff --git a/package.json b/package.json
index adcdf57a5db50e77d248e1c0fd3cd9051d278aff..c174d5a4ee9575d921cbc27a69456e0abd5c7920 100644
--- a/package.json
+++ b/package.json
@@ -65,10 +65,8 @@
     "webpack-dev-server": "^3.1.7"
   },
   "peerDependencies": {
-    "react": "^0.14 || ^15.0.0 || ^ 16.0.0",
-    "react-dom": "^0.14 || ^15.0.0 || ^ 16.0.0"
+    "react": "^16.0.0",
+    "react-dom": "^16.0.0"
   },
-  "dependencies": {
-    "prop-types": "^15.6.0"
-  }
+  "dependencies": {}
 }
diff --git a/src/index.js b/src/index.js
index 8db02a7c1428eacd6161b1d2d030aea6532acc87..b1d6ec02db412e6f772a6c42c486a7d91b1d60c9 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,6 +1,6 @@
-import MetaTagsContext from './meta_tags_context';
+import MetaTagsContext, {MetaContext} from './meta_tags_context';
 import MetaTags from './meta_tags';
 import ReactTitle from './react_title';
 
 export default MetaTags;
-export {MetaTags, MetaTagsContext, ReactTitle};
+export {MetaContext, MetaTags, MetaTagsContext, ReactTitle};
diff --git a/src/meta_tags.js b/src/meta_tags.js
index ab3c1f099f34a14513559f0a6c734a74c1450a15..ce07ba116bdd8bf4da5666a7c81907903abef3ff 100644
--- a/src/meta_tags.js
+++ b/src/meta_tags.js
@@ -1,14 +1,13 @@
 import React, {Component} from 'react';
-import PropTypes from 'prop-types';
 import ReactDOM from 'react-dom';
 import {getDuplicateTitle, getDuplicateCanonical, getDuplicateMeta, appendChild, removeChild} from './utils';
+import { MetaContext } from './meta_tags_context';
 
 
 /** An wrapper component to wrap element which need to shifted to head **/
 class MetaTags extends Component {
-  static contextTypes = {
-    extract: PropTypes.func
-  };
+  static contextTypes = MetaContext;
+
   componentDidMount() {
     this.temporaryElement = document.createElement('div');
     this.handleChildrens();
diff --git a/src/meta_tags_context.js b/src/meta_tags_context.js
index 008f741b96509a1390637a06fc57cd69790fabc1..64b244dd65d50a0f2ea4b214818779c7c7455e6c 100644
--- a/src/meta_tags_context.js
+++ b/src/meta_tags_context.js
@@ -1,17 +1,24 @@
-import {Component, Children} from 'react';
-import PropTypes from 'prop-types';
+import React, {Component, Children, createContext} from 'react';
+
+const MetaContext = createContext({
+  extract: () => {},
+});
 
 /** context class which passes extract fuunction to MetaTags Component **/
-class MetaTagsContext extends Component {
-  static childContextTypes = {
-    extract: PropTypes.func
-  }
-  getChildContext() {
-    return {extract: this.props.extract};
-  }
+class MetaContextProviderWrapper extends Component {
   render() {
-    return Children.only(this.props.children);
+    return (
+      <MetaContext.Provider
+        value={{
+          extract: this.props.extract,
+        }}
+      >
+        {Children.only(this.props.children)}
+      </MetaContext.Provider>
+    );
   }
 }
 
-export default MetaTagsContext;
+export {MetaContext};
+
+export default MetaContextProviderWrapper;
diff --git a/src/react_title.js b/src/react_title.js
index c4bd75d480cc336774f62386f8402a3b98484edf..44f473fab638e28413d63b3ad2dcbbbe22c95b20 100644
--- a/src/react_title.js
+++ b/src/react_title.js
@@ -1,11 +1,7 @@
 import React, {Component} from 'react';
-import PropTypes from 'prop-types';
 import MetaTags from './meta_tags';
 
 class ReactTitle extends Component {
-  static propTypes = {
-    title: PropTypes.string
-  }
   render() {
     return (<MetaTags>
       <title>