diff --git a/docs/src/app/app.native.js b/docs/src/app/app.native.js
index cf63fbdda63bc7..a470d8651926b2 100644
--- a/docs/src/app/app.native.js
+++ b/docs/src/app/app.native.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react-native';
+import React, {Component} from 'react-native';
+import PropTypes from 'prop-types';
const {
Platform,
diff --git a/docs/src/app/components/AppNavDrawer.js b/docs/src/app/components/AppNavDrawer.js
index f291b4252a1e3d..0e1835a6fe861a 100644
--- a/docs/src/app/components/AppNavDrawer.js
+++ b/docs/src/app/components/AppNavDrawer.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Drawer from 'material-ui/Drawer';
import {List, ListItem, makeSelectable} from 'material-ui/List';
import Divider from 'material-ui/Divider';
diff --git a/docs/src/app/components/CodeExample/CodeBlock.js b/docs/src/app/components/CodeExample/CodeBlock.js
index 9331ff3cdbfff6..e352ebf1aea0e1 100644
--- a/docs/src/app/components/CodeExample/CodeBlock.js
+++ b/docs/src/app/components/CodeExample/CodeBlock.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import MarkdownElement from '../MarkdownElement';
import transitions from 'material-ui/styles/transitions';
import CodeBlockTitle from './CodeBlockTitle';
diff --git a/docs/src/app/components/CodeExample/CodeBlockTitle.js b/docs/src/app/components/CodeExample/CodeBlockTitle.js
index 45de0e28985cd9..0633129824bcff 100644
--- a/docs/src/app/components/CodeExample/CodeBlockTitle.js
+++ b/docs/src/app/components/CodeExample/CodeBlockTitle.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import IconButton from 'material-ui/IconButton';
import CodeIcon from 'material-ui/svg-icons/action/code';
import {Toolbar, ToolbarGroup, ToolbarTitle} from 'material-ui/Toolbar';
diff --git a/docs/src/app/components/CodeExample/index.js b/docs/src/app/components/CodeExample/index.js
index e4047ce0e2af74..bf5f0fb7fa1b74 100644
--- a/docs/src/app/components/CodeExample/index.js
+++ b/docs/src/app/components/CodeExample/index.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {parse} from 'react-docgen';
import CodeBlock from './CodeBlock';
import ClearFix from 'material-ui/internal/ClearFix';
@@ -10,7 +11,7 @@ class CodeExample extends Component {
code: PropTypes.string.isRequired,
component: PropTypes.bool,
description: PropTypes.string,
- exampleBlockStyle: React.PropTypes.object,
+ exampleBlockStyle: PropTypes.object,
layoutSideBySide: PropTypes.bool,
title: PropTypes.string,
};
diff --git a/docs/src/app/components/FullWidthSection.js b/docs/src/app/components/FullWidthSection.js
index 5ee72853d03a30..816e9d62b05a68 100644
--- a/docs/src/app/components/FullWidthSection.js
+++ b/docs/src/app/components/FullWidthSection.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ClearFix from 'material-ui/internal/ClearFix';
import spacing from 'material-ui/styles/spacing';
import withWidth, {SMALL, LARGE} from 'material-ui/utils/withWidth';
diff --git a/docs/src/app/components/MarkdownElement.js b/docs/src/app/components/MarkdownElement.js
index 4665b9e894e0dc..50844249f6bd9c 100644
--- a/docs/src/app/components/MarkdownElement.js
+++ b/docs/src/app/components/MarkdownElement.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import marked from 'marked';
require('./mui-github-markdown.css');
diff --git a/docs/src/app/components/Master.js b/docs/src/app/components/Master.js
index 5074b00566ed54..4e03b811015dde 100644
--- a/docs/src/app/components/Master.js
+++ b/docs/src/app/components/Master.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Title from 'react-title-component';
import AppBar from 'material-ui/AppBar';
import IconButton from 'material-ui/IconButton';
diff --git a/docs/src/app/components/MobileTearSheet.js b/docs/src/app/components/MobileTearSheet.js
index 04e2c67aa8b7ab..531994e522108a 100644
--- a/docs/src/app/components/MobileTearSheet.js
+++ b/docs/src/app/components/MobileTearSheet.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
class MobileTearSheet extends Component {
diff --git a/docs/src/app/components/PropTypeDescription.js b/docs/src/app/components/PropTypeDescription.js
index d84bddf34c7490..2afde2072e2e7a 100644
--- a/docs/src/app/components/PropTypeDescription.js
+++ b/docs/src/app/components/PropTypeDescription.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {parse} from 'react-docgen';
import {parse as parseDoctrine} from 'doctrine';
import MarkdownElement from './MarkdownElement';
diff --git a/docs/src/app/components/pages/Home.js b/docs/src/app/components/pages/Home.js
index 83e374f22b3957..c71e8ca23d4b35 100644
--- a/docs/src/app/components/pages/Home.js
+++ b/docs/src/app/components/pages/Home.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import HomeFeature from './HomeFeature';
import FullWidthSection from '../FullWidthSection';
import RaisedButton from 'material-ui/RaisedButton';
diff --git a/docs/src/app/components/pages/HomeFeature.js b/docs/src/app/components/pages/HomeFeature.js
index 682248d7dfba1e..d52dbd18aba190 100644
--- a/docs/src/app/components/pages/HomeFeature.js
+++ b/docs/src/app/components/pages/HomeFeature.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {Link} from 'react-router';
import withWidth, {MEDIUM, LARGE} from 'material-ui/utils/withWidth';
import spacing from 'material-ui/styles/spacing';
diff --git a/docs/src/app/components/pages/components/List/ExampleSelectable.js b/docs/src/app/components/pages/components/List/ExampleSelectable.js
index fde27b87ed116c..7888c5390e409c 100644
--- a/docs/src/app/components/pages/components/List/ExampleSelectable.js
+++ b/docs/src/app/components/pages/components/List/ExampleSelectable.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import MobileTearSheet from '../../../MobileTearSheet';
import {List, ListItem, makeSelectable} from 'material-ui/List';
import Avatar from 'material-ui/Avatar';
diff --git a/docs/src/app/components/pages/customization/Colors.js b/docs/src/app/components/pages/customization/Colors.js
index afc6206593f6ce..c2a838456e1702 100644
--- a/docs/src/app/components/pages/customization/Colors.js
+++ b/docs/src/app/components/pages/customization/Colors.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Title from 'react-title-component';
import withWidth, {MEDIUM, LARGE} from 'material-ui/utils/withWidth';
import ClearFix from 'material-ui/internal/ClearFix';
diff --git a/docs/src/app/components/pages/customization/Themes.js b/docs/src/app/components/pages/customization/Themes.js
index d25d6bd4d3880b..ead5e18afdad8c 100644
--- a/docs/src/app/components/pages/customization/Themes.js
+++ b/docs/src/app/components/pages/customization/Themes.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Title from 'react-title-component';
import MarkdownElement from '../../MarkdownElement';
import muiThemeable from 'material-ui/styles/muiThemeable';
diff --git a/package.json b/package.json
index fa2776c8021b33..ec1da038ddfa92 100644
--- a/package.json
+++ b/package.json
@@ -51,6 +51,7 @@
"keycode": "^2.1.8",
"lodash.merge": "^4.6.0",
"lodash.throttle": "^4.1.1",
+ "prop-types": "^15.5.7",
"react-addons-create-fragment": "^15.4.0",
"react-addons-transition-group": "^15.4.0",
"react-event-listener": "^0.4.5",
@@ -76,8 +77,9 @@
"babel-preset-stage-1": "^6.24.1",
"chai": "^3.5.0",
"coveralls": "^2.13.0",
+ "create-react-class": "^15.5.0",
"cross-env": "^4.0.0",
- "enzyme": "^2.8.0",
+ "enzyme": "^2.8.1",
"eslint": "^3.19.0",
"eslint-find-rules": "^1.14.3",
"eslint-plugin-babel": "^4.1.1",
@@ -101,9 +103,9 @@
"mocha": "^3.1.2",
"nodemon": "^1.11.0",
"phantomjs-prebuilt": "^2.1.14",
- "react": "^15.4.2",
- "react-addons-test-utils": "^15.4.2",
- "react-dom": "^15.4.2",
+ "react": "^15.5.0",
+ "react-dom": "^15.5.0",
+ "react-test-renderer": "^15.5.0",
"react-tap-event-plugin": "^2.0.0",
"recursive-readdir-sync": "^1.0.6",
"rimraf": "^2.6.1",
diff --git a/src/AppBar/AppBar.js b/src/AppBar/AppBar.js
index ce1747359e75fd..9a41e1b5140709 100644
--- a/src/AppBar/AppBar.js
+++ b/src/AppBar/AppBar.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes, cloneElement} from 'react';
+import React, {Component, cloneElement} from 'react';
+import PropTypes from 'prop-types';
import IconButton from '../IconButton';
import NavigationMenu from '../svg-icons/navigation/menu';
import Paper from '../Paper';
diff --git a/src/AutoComplete/AutoComplete.js b/src/AutoComplete/AutoComplete.js
index 576c717b91b34e..841062425ee633 100644
--- a/src/AutoComplete/AutoComplete.js
+++ b/src/AutoComplete/AutoComplete.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import keycode from 'keycode';
import TextField from '../TextField';
diff --git a/src/Avatar/Avatar.js b/src/Avatar/Avatar.js
index 1bcf187183601f..ce159236a1b53e 100644
--- a/src/Avatar/Avatar.js
+++ b/src/Avatar/Avatar.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {
diff --git a/src/Badge/Badge.js b/src/Badge/Badge.js
index 70f5a59bf744a5..6facb0d04ba87f 100644
--- a/src/Badge/Badge.js
+++ b/src/Badge/Badge.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {primary, secondary} = props;
diff --git a/src/BottomNavigation/BottomNavigation.js b/src/BottomNavigation/BottomNavigation.js
index 705ebfa897c94f..ee6ed78a169757 100644
--- a/src/BottomNavigation/BottomNavigation.js
+++ b/src/BottomNavigation/BottomNavigation.js
@@ -1,4 +1,5 @@
-import React, {PropTypes, Children, cloneElement} from 'react';
+import React, {Children, cloneElement} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {
diff --git a/src/BottomNavigation/BottomNavigationItem.js b/src/BottomNavigation/BottomNavigationItem.js
index 3b3a9879e565ee..2ab55f534d43e3 100644
--- a/src/BottomNavigation/BottomNavigationItem.js
+++ b/src/BottomNavigation/BottomNavigationItem.js
@@ -1,4 +1,5 @@
-import React, {PropTypes, cloneElement} from 'react';
+import React, {cloneElement} from 'react';
+import PropTypes from 'prop-types';
import EnhancedButton from '../internal/EnhancedButton';
function getStyles(props, context) {
diff --git a/src/Card/Card.js b/src/Card/Card.js
index 3c397d3244a5d5..a98a837a231975 100644
--- a/src/Card/Card.js
+++ b/src/Card/Card.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Paper from '../Paper';
import CardExpandable from './CardExpandable';
diff --git a/src/Card/CardActions.js b/src/Card/CardActions.js
index 11b57dbb8fdcc2..6412207e96a32b 100644
--- a/src/Card/CardActions.js
+++ b/src/Card/CardActions.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles() {
return {
diff --git a/src/Card/CardExpandable.js b/src/Card/CardExpandable.js
index 438af552b76946..303cc781bbd88a 100644
--- a/src/Card/CardExpandable.js
+++ b/src/Card/CardExpandable.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import OpenIcon from '../svg-icons/hardware/keyboard-arrow-up';
import CloseIcon from '../svg-icons/hardware/keyboard-arrow-down';
import IconButton from '../IconButton';
diff --git a/src/Card/CardHeader.js b/src/Card/CardHeader.js
index 42f95dd95beefb..29a051c535231b 100644
--- a/src/Card/CardHeader.js
+++ b/src/Card/CardHeader.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes, isValidElement} from 'react';
+import React, {Component, isValidElement} from 'react';
+import PropTypes from 'prop-types';
import Avatar from '../Avatar';
function getStyles(props, context) {
diff --git a/src/Card/CardMedia.js b/src/Card/CardMedia.js
index 9a86ee3858b8a9..9d785b3d531cf7 100644
--- a/src/Card/CardMedia.js
+++ b/src/Card/CardMedia.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {cardMedia} = context.muiTheme;
diff --git a/src/Card/CardText.js b/src/Card/CardText.js
index 9625034db90833..913f3e4cd19b41 100644
--- a/src/Card/CardText.js
+++ b/src/Card/CardText.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {cardText} = context.muiTheme;
diff --git a/src/Card/CardTitle.js b/src/Card/CardTitle.js
index 0429bfe7f83eaf..20118306c12add 100644
--- a/src/Card/CardTitle.js
+++ b/src/Card/CardTitle.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {card} = context.muiTheme;
diff --git a/src/Checkbox/Checkbox.js b/src/Checkbox/Checkbox.js
index 74637b6dd02b3a..b9cb1431b03955 100644
--- a/src/Checkbox/Checkbox.js
+++ b/src/Checkbox/Checkbox.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EnhancedSwitch from '../internal/EnhancedSwitch';
import transitions from '../styles/transitions';
import CheckboxOutline from '../svg-icons/toggle/check-box-outline-blank';
diff --git a/src/Checkbox/Checkbox.spec.js b/src/Checkbox/Checkbox.spec.js
index 7a31df9b3c04fd..fce641b89686b6 100644
--- a/src/Checkbox/Checkbox.spec.js
+++ b/src/Checkbox/Checkbox.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {shallow, mount} from 'enzyme';
import {assert} from 'chai';
import Checkbox from './Checkbox';
diff --git a/src/Chip/Chip.js b/src/Chip/Chip.js
index 9da780f4676615..8666cee453a294 100644
--- a/src/Chip/Chip.js
+++ b/src/Chip/Chip.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import keycode from 'keycode';
import {fade, emphasize} from '../utils/colorManipulator';
import EnhancedButton from '../internal/EnhancedButton';
diff --git a/src/CircularProgress/CircularProgress.js b/src/CircularProgress/CircularProgress.js
index 568e2edd9ff42f..24e155338e82e7 100644
--- a/src/CircularProgress/CircularProgress.js
+++ b/src/CircularProgress/CircularProgress.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import autoPrefix from '../utils/autoPrefix';
import transitions from '../styles/transitions';
diff --git a/src/DatePicker/Calendar.js b/src/DatePicker/Calendar.js
index 2dee62e1155a4e..b6a88dea37617e 100644
--- a/src/DatePicker/Calendar.js
+++ b/src/DatePicker/Calendar.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EventListener from 'react-event-listener';
import keycode from 'keycode';
import transitions from '../styles/transitions';
diff --git a/src/DatePicker/CalendarActionButtons.js b/src/DatePicker/CalendarActionButtons.js
index c098595eb856ec..edf7e16d0bdbaa 100644
--- a/src/DatePicker/CalendarActionButtons.js
+++ b/src/DatePicker/CalendarActionButtons.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import FlatButton from '../FlatButton';
class CalendarActionButton extends Component {
diff --git a/src/DatePicker/CalendarMonth.js b/src/DatePicker/CalendarMonth.js
index e74796eb79d58e..7f5560364a7ec1 100644
--- a/src/DatePicker/CalendarMonth.js
+++ b/src/DatePicker/CalendarMonth.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {isBetweenDates, isEqualDate} from './dateUtils';
import DayButton from './DayButton';
diff --git a/src/DatePicker/CalendarToolbar.js b/src/DatePicker/CalendarToolbar.js
index 92e97fcdcec95f..62b0bf05ab1cd7 100644
--- a/src/DatePicker/CalendarToolbar.js
+++ b/src/DatePicker/CalendarToolbar.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import IconButton from '../IconButton';
import NavigationChevronLeft from '../svg-icons/navigation/chevron-left';
import NavigationChevronRight from '../svg-icons/navigation/chevron-right';
diff --git a/src/DatePicker/CalendarYear.js b/src/DatePicker/CalendarYear.js
index 02fbefc1ca08bc..fc8e24cb4d20b0 100644
--- a/src/DatePicker/CalendarYear.js
+++ b/src/DatePicker/CalendarYear.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import YearButton from './YearButton';
diff --git a/src/DatePicker/DateDisplay.js b/src/DatePicker/DateDisplay.js
index bccb9e66ad0f96..bd0e6a11428775 100644
--- a/src/DatePicker/DateDisplay.js
+++ b/src/DatePicker/DateDisplay.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import SlideInTransitionGroup from '../internal/SlideIn';
diff --git a/src/DatePicker/DatePicker.js b/src/DatePicker/DatePicker.js
index a52854240ccdac..58e9031c0f5417 100644
--- a/src/DatePicker/DatePicker.js
+++ b/src/DatePicker/DatePicker.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {dateTimeFormat, formatIso, isEqualDate} from './dateUtils';
import DatePickerDialog from './DatePickerDialog';
import TextField from '../TextField';
diff --git a/src/DatePicker/DatePickerDialog.js b/src/DatePicker/DatePickerDialog.js
index eb930760cd9c86..f2b6232c28d951 100644
--- a/src/DatePicker/DatePickerDialog.js
+++ b/src/DatePicker/DatePickerDialog.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EventListener from 'react-event-listener';
import keycode from 'keycode';
import Calendar from './Calendar';
diff --git a/src/DatePicker/DayButton.js b/src/DatePicker/DayButton.js
index 1f34986384fc67..9dcba34e2d4834 100644
--- a/src/DatePicker/DayButton.js
+++ b/src/DatePicker/DayButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Transition from '../styles/transitions';
import {isEqualDate} from './dateUtils';
import EnhancedButton from '../internal/EnhancedButton';
diff --git a/src/DatePicker/YearButton.js b/src/DatePicker/YearButton.js
index 02054dd9c72135..92774ba49905f5 100644
--- a/src/DatePicker/YearButton.js
+++ b/src/DatePicker/YearButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EnhancedButton from '../internal/EnhancedButton';
function getStyles(props, context, state) {
diff --git a/src/Dialog/Dialog.js b/src/Dialog/Dialog.js
index 9421305a653000..dc235304b7d9af 100644
--- a/src/Dialog/Dialog.js
+++ b/src/Dialog/Dialog.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import EventListener from 'react-event-listener';
import keycode from 'keycode';
diff --git a/src/Dialog/Dialog.spec.js b/src/Dialog/Dialog.spec.js
index 6bdce1e855bf97..313d7f496c1f50 100644
--- a/src/Dialog/Dialog.spec.js
+++ b/src/Dialog/Dialog.spec.js
@@ -4,7 +4,7 @@ import Dialog from './Dialog';
import {spy} from 'sinon';
import {mount} from 'enzyme';
import {assert} from 'chai';
-import TestUtils from 'react-addons-test-utils';
+import TestUtils from 'react-dom/test-utils';
import getMuiTheme from '../styles/getMuiTheme';
describe('', () => {
diff --git a/src/Divider/Divider.js b/src/Divider/Divider.js
index 75b2612f0793b5..54ac20efd576c9 100644
--- a/src/Divider/Divider.js
+++ b/src/Divider/Divider.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
const Divider = (props, context) => {
const {
diff --git a/src/Drawer/Drawer.js b/src/Drawer/Drawer.js
index 1ab8b2e5a13a97..875d3c620af2f9 100644
--- a/src/Drawer/Drawer.js
+++ b/src/Drawer/Drawer.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import EventListener from 'react-event-listener';
import keycode from 'keycode';
diff --git a/src/DropDownMenu/DropDownMenu.js b/src/DropDownMenu/DropDownMenu.js
index 44dfbdec505e00..e35ecc675f1f69 100644
--- a/src/DropDownMenu/DropDownMenu.js
+++ b/src/DropDownMenu/DropDownMenu.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import transitions from '../styles/transitions';
import DropDownArrow from '../svg-icons/navigation/arrow-drop-down';
diff --git a/src/DropDownMenu/DropDownMenu.spec.js b/src/DropDownMenu/DropDownMenu.spec.js
index bc2b48f4571828..93c640ad8868a0 100644
--- a/src/DropDownMenu/DropDownMenu.spec.js
+++ b/src/DropDownMenu/DropDownMenu.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
-import React, {PropTypes, Component} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {shallow, mount} from 'enzyme';
import {assert} from 'chai';
import keycode from 'keycode';
@@ -9,7 +10,7 @@ import getMuiTheme from '../styles/getMuiTheme';
import MenuItem from '../MenuItem';
import Menu from '../Menu/Menu';
import IconButton from '../IconButton';
-import TestUtils from 'react-addons-test-utils';
+import TestUtils from 'react-dom/test-utils';
describe('', () => {
const muiTheme = getMuiTheme();
diff --git a/src/FlatButton/FlatButton.js b/src/FlatButton/FlatButton.js
index 6cfb927294de8f..fc50dcad0afa42 100644
--- a/src/FlatButton/FlatButton.js
+++ b/src/FlatButton/FlatButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import {createChildFragment} from '../utils/childUtils';
import {fade} from '../utils/colorManipulator';
@@ -49,7 +50,7 @@ class FlatButton extends Component {
/**
* If true, the element's ripple effect will be disabled.
*/
- disableTouchRipple: React.PropTypes.bool,
+ disableTouchRipple: PropTypes.bool,
/**
* Disables the button if set to true.
*/
diff --git a/src/FlatButton/FlatButtonLabel.js b/src/FlatButton/FlatButtonLabel.js
index baa3b9916a5a2d..fbbe21b5d9d960 100644
--- a/src/FlatButton/FlatButtonLabel.js
+++ b/src/FlatButton/FlatButtonLabel.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {baseTheme} = context.muiTheme;
diff --git a/src/FloatingActionButton/FloatingActionButton.js b/src/FloatingActionButton/FloatingActionButton.js
index 6b084df08de5f2..6e27484228eae4 100644
--- a/src/FloatingActionButton/FloatingActionButton.js
+++ b/src/FloatingActionButton/FloatingActionButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import {fade} from '../utils/colorManipulator';
import EnhancedButton from '../internal/EnhancedButton';
diff --git a/src/FontIcon/FontIcon.js b/src/FontIcon/FontIcon.js
index d1744e5cbaaa78..9dbbab5b9130f8 100644
--- a/src/FontIcon/FontIcon.js
+++ b/src/FontIcon/FontIcon.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
function getStyles(props, context, state) {
diff --git a/src/GridList/GridList.js b/src/GridList/GridList.js
index 17711b3edd6d11..4a274e2b2b8621 100644
--- a/src/GridList/GridList.js
+++ b/src/GridList/GridList.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props) {
return {
diff --git a/src/GridList/GridTile.js b/src/GridList/GridTile.js
index a47111db049acb..58559e2445451d 100644
--- a/src/GridList/GridTile.js
+++ b/src/GridList/GridTile.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {
diff --git a/src/IconButton/IconButton.js b/src/IconButton/IconButton.js
index c790f2b15fb1dc..64a5d6ccfe8342 100644
--- a/src/IconButton/IconButton.js
+++ b/src/IconButton/IconButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import propTypes from '../utils/propTypes';
import EnhancedButton from '../internal/EnhancedButton';
diff --git a/src/IconButton/IconButton.spec.js b/src/IconButton/IconButton.spec.js
index 3faab3f2869912..6872f02b3fbd7b 100644
--- a/src/IconButton/IconButton.spec.js
+++ b/src/IconButton/IconButton.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import {mount, shallow} from 'enzyme';
import {assert} from 'chai';
import IconButton from './IconButton';
diff --git a/src/IconMenu/IconMenu.js b/src/IconMenu/IconMenu.js
index b882abb77fe205..1a14840fe1d68a 100644
--- a/src/IconMenu/IconMenu.js
+++ b/src/IconMenu/IconMenu.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import Events from '../utils/events';
import propTypes from '../utils/propTypes';
diff --git a/src/LinearProgress/LinearProgress.js b/src/LinearProgress/LinearProgress.js
index 38f7bfdc661779..47d9fbc7317fbb 100644
--- a/src/LinearProgress/LinearProgress.js
+++ b/src/LinearProgress/LinearProgress.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
function getRelativeValue(value, min, max) {
diff --git a/src/List/List.js b/src/List/List.js
index bbf0c11770ac80..6280bee4e519c3 100644
--- a/src/List/List.js
+++ b/src/List/List.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes, Children, isValidElement} from 'react';
+import React, {Component, Children, isValidElement} from 'react';
+import PropTypes from 'prop-types';
import Subheader from '../Subheader';
class List extends Component {
diff --git a/src/List/ListItem.js b/src/List/ListItem.js
index 8940396ebec0de..2597301c3f2604 100644
--- a/src/List/ListItem.js
+++ b/src/List/ListItem.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import shallowEqual from 'recompose/shallowEqual';
import {fade} from '../utils/colorManipulator';
diff --git a/src/List/NestedList.js b/src/List/NestedList.js
index 668a575919890d..0feac685ae00ea 100644
--- a/src/List/NestedList.js
+++ b/src/List/NestedList.js
@@ -1,9 +1,5 @@
-import React, {
- Children,
- PropTypes,
- isValidElement,
- cloneElement,
-} from 'react';
+import React, {Children, isValidElement, cloneElement} from 'react';
+import PropTypes from 'prop-types';
import List from './List';
const NestedList = (props) => {
diff --git a/src/List/makeSelectable.js b/src/List/makeSelectable.js
index d5227d22f914b3..46932d8bd6f603 100644
--- a/src/List/makeSelectable.js
+++ b/src/List/makeSelectable.js
@@ -1,4 +1,5 @@
-import React, {Component, Children, PropTypes} from 'react';
+import React, {Component, Children} from 'react';
+import PropTypes from 'prop-types';
import {fade} from '../utils/colorManipulator';
export const makeSelectable = (MyComponent) => {
diff --git a/src/Menu/Menu.js b/src/Menu/Menu.js
index 2bb7ce45c17370..af6cb4e6988071 100644
--- a/src/Menu/Menu.js
+++ b/src/Menu/Menu.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import shallowEqual from 'recompose/shallowEqual';
import ClickAwayListener from '../internal/ClickAwayListener';
diff --git a/src/Menu/Menu.spec.js b/src/Menu/Menu.spec.js
index b9b4bf56b604cb..9e58e24d7c96b5 100644
--- a/src/Menu/Menu.spec.js
+++ b/src/Menu/Menu.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
-import React, {PropTypes, Component} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {mount, shallow} from 'enzyme';
import {spy} from 'sinon';
import {assert} from 'chai';
diff --git a/src/MenuItem/MenuItem.js b/src/MenuItem/MenuItem.js
index c324510319a5b6..8cbca98b50f96d 100644
--- a/src/MenuItem/MenuItem.js
+++ b/src/MenuItem/MenuItem.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import shallowEqual from 'recompose/shallowEqual';
import Popover from '../Popover/Popover';
diff --git a/src/Paper/Paper.js b/src/Paper/Paper.js
index c2df88c89fea76..71a69e6710b09d 100644
--- a/src/Paper/Paper.js
+++ b/src/Paper/Paper.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import propTypes from '../utils/propTypes';
import transitions from '../styles/transitions';
diff --git a/src/Popover/Popover.js b/src/Popover/Popover.js
index 5f7f83b74dae06..2b9417ff6b3e38 100644
--- a/src/Popover/Popover.js
+++ b/src/Popover/Popover.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import EventListener from 'react-event-listener';
import RenderToLayer from '../internal/RenderToLayer';
diff --git a/src/Popover/PopoverAnimationDefault.js b/src/Popover/PopoverAnimationDefault.js
index 9b644c970df766..dfa797175a3a42 100644
--- a/src/Popover/PopoverAnimationDefault.js
+++ b/src/Popover/PopoverAnimationDefault.js
@@ -1,5 +1,6 @@
import transitions from '../styles/transitions';
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import propTypes from '../utils/propTypes';
import Paper from '../Paper';
diff --git a/src/Popover/PopoverAnimationVertical.js b/src/Popover/PopoverAnimationVertical.js
index 9564e3bf7691e6..b094a93d5d4920 100644
--- a/src/Popover/PopoverAnimationVertical.js
+++ b/src/Popover/PopoverAnimationVertical.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Paper from '../Paper';
import transitions from '../styles/transitions';
import propTypes from '../utils/propTypes';
diff --git a/src/RadioButton/RadioButton.js b/src/RadioButton/RadioButton.js
index 64fbe2a4017adc..e76d526aeea47b 100644
--- a/src/RadioButton/RadioButton.js
+++ b/src/RadioButton/RadioButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import EnhancedSwitch from '../internal/EnhancedSwitch';
import RadioButtonOff from '../svg-icons/toggle/radio-button-unchecked';
diff --git a/src/RadioButton/RadioButtonGroup.js b/src/RadioButton/RadioButtonGroup.js
index 662ee9185fa70b..d5110555b57f63 100644
--- a/src/RadioButton/RadioButtonGroup.js
+++ b/src/RadioButton/RadioButtonGroup.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import RadioButton from './RadioButton';
import warning from 'warning';
diff --git a/src/RaisedButton/RaisedButton.js b/src/RaisedButton/RaisedButton.js
index b596038a8f875d..8d8461d54d39b1 100644
--- a/src/RaisedButton/RaisedButton.js
+++ b/src/RaisedButton/RaisedButton.js
@@ -1,4 +1,5 @@
-import React, {Component, cloneElement, PropTypes} from 'react';
+import React, {Component, cloneElement} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import {fade} from '../utils/colorManipulator';
import {createChildFragment} from '../utils/childUtils';
@@ -147,7 +148,7 @@ class RaisedButton extends Component {
/**
* If true, the element's ripple effect will be disabled.
*/
- disableTouchRipple: React.PropTypes.bool,
+ disableTouchRipple: PropTypes.bool,
/**
* If true, the button will be disabled.
*/
diff --git a/src/RaisedButton/RaisedButton.spec.js b/src/RaisedButton/RaisedButton.spec.js
index a67cf9045c6b9b..315b912d0d8b85 100644
--- a/src/RaisedButton/RaisedButton.spec.js
+++ b/src/RaisedButton/RaisedButton.spec.js
@@ -1,7 +1,7 @@
/* eslint-env mocha */
import React from 'react';
import ReactDOM from 'react-dom';
-import TestUtils from 'react-addons-test-utils';
+import TestUtils from 'react-dom/test-utils';
import {mount, shallow} from 'enzyme';
import {assert} from 'chai';
diff --git a/src/RefreshIndicator/RefreshIndicator.js b/src/RefreshIndicator/RefreshIndicator.js
index 82bd2c10048cb6..6ae2c0ac2e6f6d 100644
--- a/src/RefreshIndicator/RefreshIndicator.js
+++ b/src/RefreshIndicator/RefreshIndicator.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import autoPrefix from '../utils/autoPrefix';
import transitions from '../styles/transitions';
import Paper from '../Paper';
diff --git a/src/SelectField/SelectField.js b/src/SelectField/SelectField.js
index c524a39b58d6bd..bb05d77b25dbde 100644
--- a/src/SelectField/SelectField.js
+++ b/src/SelectField/SelectField.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import TextField from '../TextField';
import DropDownMenu from '../DropDownMenu';
diff --git a/src/SelectField/SelectField.spec.js b/src/SelectField/SelectField.spec.js
index 91db6181ad82a8..7804357bbb4683 100644
--- a/src/SelectField/SelectField.spec.js
+++ b/src/SelectField/SelectField.spec.js
@@ -1,12 +1,13 @@
/* eslint-env mocha */
-import React, {PropTypes, Component} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {mount} from 'enzyme';
import {assert} from 'chai';
import getMuiTheme from '../styles/getMuiTheme';
import SelectField from './SelectField';
import TouchRipple from '../internal/TouchRipple';
import MenuItem from '../MenuItem';
-import TestUtils from 'react-addons-test-utils';
+import TestUtils from 'react-dom/test-utils';
describe('', () => {
const muiTheme = getMuiTheme();
diff --git a/src/Slider/Slider.js b/src/Slider/Slider.js
index 67a5060a96e972..94f59698dbcd74 100644
--- a/src/Slider/Slider.js
+++ b/src/Slider/Slider.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import keycode from 'keycode';
import warning from 'warning';
import transitions from '../styles/transitions';
diff --git a/src/Snackbar/Snackbar.js b/src/Snackbar/Snackbar.js
index 6de400416177d6..5f1df9d0304dc7 100644
--- a/src/Snackbar/Snackbar.js
+++ b/src/Snackbar/Snackbar.js
@@ -1,4 +1,5 @@
-import React, {PropTypes, Component} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import ClickAwayListener from '../internal/ClickAwayListener';
import SnackbarBody from './SnackbarBody';
diff --git a/src/Snackbar/SnackbarBody.js b/src/Snackbar/SnackbarBody.js
index 1a1796d7073cbc..08a5a3a55b65cf 100644
--- a/src/Snackbar/SnackbarBody.js
+++ b/src/Snackbar/SnackbarBody.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import withWidth, {SMALL} from '../utils/withWidth';
import FlatButton from '../FlatButton';
diff --git a/src/Stepper/Step.js b/src/Stepper/Step.js
index bd12d24f58eb14..2360d71d048667 100644
--- a/src/Stepper/Step.js
+++ b/src/Stepper/Step.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
const getStyles = ({index}, {stepper}) => {
const {orientation} = stepper;
diff --git a/src/Stepper/StepButton.js b/src/Stepper/StepButton.js
index d5038abff10329..38fcddb67ce4e8 100644
--- a/src/Stepper/StepButton.js
+++ b/src/Stepper/StepButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import EnhancedButton from '../internal/EnhancedButton';
import StepLabel from './StepLabel';
diff --git a/src/Stepper/StepConnector.js b/src/Stepper/StepConnector.js
index 9fae1d6ccb494d..8580af57f964fc 100644
--- a/src/Stepper/StepConnector.js
+++ b/src/Stepper/StepConnector.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import pure from 'recompose/pure';
const propTypes = {
diff --git a/src/Stepper/StepContent.js b/src/Stepper/StepContent.js
index dc06fbedbb8870..a0bd5530d4677e 100644
--- a/src/Stepper/StepContent.js
+++ b/src/Stepper/StepContent.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import TransitionComponent from '../internal/ExpandTransition';
import warning from 'warning';
diff --git a/src/Stepper/StepLabel.js b/src/Stepper/StepLabel.js
index cb16f0d0f8d075..4df02c06d4ef35 100644
--- a/src/Stepper/StepLabel.js
+++ b/src/Stepper/StepLabel.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import CheckCircle from '../svg-icons/action/check-circle';
import SvgIcon from '../SvgIcon';
diff --git a/src/Stepper/Stepper.js b/src/Stepper/Stepper.js
index 2ee8c8c13f8a44..9f3b5e30c8ea6f 100644
--- a/src/Stepper/Stepper.js
+++ b/src/Stepper/Stepper.js
@@ -1,4 +1,5 @@
-import React, {Component, Children, PropTypes} from 'react';
+import React, {Component, Children} from 'react';
+import PropTypes from 'prop-types';
import StepConnector from './StepConnector';
const getStyles = (props) => {
diff --git a/src/Subheader/Subheader.js b/src/Subheader/Subheader.js
index 0c9b069f2492c6..7366a84e97642b 100644
--- a/src/Subheader/Subheader.js
+++ b/src/Subheader/Subheader.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
const Subheader = (props, context) => {
const {
diff --git a/src/SvgIcon/SvgIcon.js b/src/SvgIcon/SvgIcon.js
index 45b49688529fd8..208fcd8f1dfe5b 100644
--- a/src/SvgIcon/SvgIcon.js
+++ b/src/SvgIcon/SvgIcon.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
class SvgIcon extends Component {
diff --git a/src/Table/Table.js b/src/Table/Table.js
index fcb1861df7b583..330fb23c3455fa 100644
--- a/src/Table/Table.js
+++ b/src/Table/Table.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import warning from 'warning';
function getStyles(props, context) {
diff --git a/src/Table/TableBody.js b/src/Table/TableBody.js
index 424961ff9939f6..334ac19ded4443 100644
--- a/src/Table/TableBody.js
+++ b/src/Table/TableBody.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Checkbox from '../Checkbox';
import TableRowColumn from './TableRowColumn';
import ClickAwayListener from '../internal/ClickAwayListener';
diff --git a/src/Table/TableFooter.js b/src/Table/TableFooter.js
index 03c7c85d4e9233..30a7e846d636e3 100644
--- a/src/Table/TableFooter.js
+++ b/src/Table/TableFooter.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import TableRowColumn from './TableRowColumn';
function getStyles(props, context) {
diff --git a/src/Table/TableHeader.js b/src/Table/TableHeader.js
index 3cd9d6080d25df..fbf5f40c4c2d3f 100644
--- a/src/Table/TableHeader.js
+++ b/src/Table/TableHeader.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Checkbox from '../Checkbox';
import TableHeaderColumn from './TableHeaderColumn';
diff --git a/src/Table/TableHeaderColumn.js b/src/Table/TableHeaderColumn.js
index e7af582d2c849b..2a730c097a2d09 100644
--- a/src/Table/TableHeaderColumn.js
+++ b/src/Table/TableHeaderColumn.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import Tooltip from '../internal/Tooltip';
function getStyles(props, context) {
diff --git a/src/Table/TableRow.js b/src/Table/TableRow.js
index cb56b4f243a5e7..fcf483ce9137dd 100644
--- a/src/Table/TableRow.js
+++ b/src/Table/TableRow.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context, state) {
const {tableRow} = context.muiTheme;
diff --git a/src/Table/TableRowColumn.js b/src/Table/TableRowColumn.js
index 5e3a31a67321d7..f764efe1681809 100644
--- a/src/Table/TableRowColumn.js
+++ b/src/Table/TableRowColumn.js
@@ -1,4 +1,6 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {tableRowColumn} = context.muiTheme;
diff --git a/src/Tabs/InkBar.js b/src/Tabs/InkBar.js
index 306d96c0e2b217..4424db04f11937 100644
--- a/src/Tabs/InkBar.js
+++ b/src/Tabs/InkBar.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
function getStyles(props, context) {
diff --git a/src/Tabs/Tab.js b/src/Tabs/Tab.js
index d7519c4c23669a..93131955210f41 100644
--- a/src/Tabs/Tab.js
+++ b/src/Tabs/Tab.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EnhancedButton from '../internal/EnhancedButton';
function getStyles(props, context) {
diff --git a/src/Tabs/TabTemplate.js b/src/Tabs/TabTemplate.js
index 31b92f481c32a8..c38809a72e3a14 100644
--- a/src/Tabs/TabTemplate.js
+++ b/src/Tabs/TabTemplate.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
const styles = {
width: '100%',
diff --git a/src/Tabs/Tabs.js b/src/Tabs/Tabs.js
index 53cb42b9dd5e85..c753091b51e180 100644
--- a/src/Tabs/Tabs.js
+++ b/src/Tabs/Tabs.js
@@ -1,10 +1,5 @@
-import React, {Component,
- createElement,
- cloneElement,
- Children,
- isValidElement,
- PropTypes,
-} from 'react';
+import React, {Component, createElement, cloneElement, Children, isValidElement} from 'react';
+import PropTypes from 'prop-types';
import warning from 'warning';
import TabTemplate from './TabTemplate';
import InkBar from './InkBar';
diff --git a/src/TextField/EnhancedTextarea.js b/src/TextField/EnhancedTextarea.js
index 7fab96e1dcf9f1..eed8aeff08e2bc 100644
--- a/src/TextField/EnhancedTextarea.js
+++ b/src/TextField/EnhancedTextarea.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EventListener from 'react-event-listener';
const rowsHeight = 24;
diff --git a/src/TextField/TextField.js b/src/TextField/TextField.js
index f6c50bcfe99156..2ba1f10d52faad 100644
--- a/src/TextField/TextField.js
+++ b/src/TextField/TextField.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import shallowEqual from 'recompose/shallowEqual';
import transitions from '../styles/transitions';
diff --git a/src/TextField/TextField.spec.js b/src/TextField/TextField.spec.js
index 79951a4c2d78af..b75f786c28ec54 100644
--- a/src/TextField/TextField.spec.js
+++ b/src/TextField/TextField.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
-import React, {PropTypes, Component} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {shallow, mount} from 'enzyme';
import {assert} from 'chai';
import TextField from './TextField';
diff --git a/src/TextField/TextFieldHint.js b/src/TextField/TextFieldHint.js
index 0942fccecfd0d1..5ee783c767d56d 100644
--- a/src/TextField/TextFieldHint.js
+++ b/src/TextField/TextFieldHint.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
function getStyles(props) {
diff --git a/src/TextField/TextFieldLabel.js b/src/TextField/TextFieldLabel.js
index 095502e1f3533e..dff508be92f03d 100644
--- a/src/TextField/TextFieldLabel.js
+++ b/src/TextField/TextFieldLabel.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
function getStyles(props) {
diff --git a/src/TextField/TextFieldUnderline.js b/src/TextField/TextFieldUnderline.js
index cb3990e454e542..9c655626aca7b1 100644
--- a/src/TextField/TextFieldUnderline.js
+++ b/src/TextField/TextFieldUnderline.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
const propTypes = {
diff --git a/src/TimePicker/Clock.js b/src/TimePicker/Clock.js
index 3560b3ea3253f6..d164d2cd62344b 100644
--- a/src/TimePicker/Clock.js
+++ b/src/TimePicker/Clock.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import TimeDisplay from './TimeDisplay';
import ClockHours from './ClockHours';
import ClockMinutes from './ClockMinutes';
diff --git a/src/TimePicker/ClockHours.js b/src/TimePicker/ClockHours.js
index a514ca0f78f623..6e13d887454a8a 100644
--- a/src/TimePicker/ClockHours.js
+++ b/src/TimePicker/ClockHours.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import ClockNumber from './ClockNumber';
import ClockPointer from './ClockPointer';
diff --git a/src/TimePicker/ClockMinutes.js b/src/TimePicker/ClockMinutes.js
index 5f67554f6938e9..e5000a7bd1b7e2 100644
--- a/src/TimePicker/ClockMinutes.js
+++ b/src/TimePicker/ClockMinutes.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ClockNumber from './ClockNumber';
import ClockPointer from './ClockPointer';
import {getTouchEventOffsetValues, rad2deg} from './timeUtils';
diff --git a/src/TimePicker/ClockNumber.js b/src/TimePicker/ClockNumber.js
index c644c2f83d060a..3106f6a7f0f1dc 100644
--- a/src/TimePicker/ClockNumber.js
+++ b/src/TimePicker/ClockNumber.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {isInner} from './timeUtils';
function getStyles(props, context) {
diff --git a/src/TimePicker/ClockPointer.js b/src/TimePicker/ClockPointer.js
index 4f7980735849fe..2ab897038c65c9 100644
--- a/src/TimePicker/ClockPointer.js
+++ b/src/TimePicker/ClockPointer.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {isInner} from './timeUtils';
function calcAngle(value, base) {
diff --git a/src/TimePicker/TimeDisplay.js b/src/TimePicker/TimeDisplay.js
index 345a3a3b08072e..84a69984aaf993 100644
--- a/src/TimePicker/TimeDisplay.js
+++ b/src/TimePicker/TimeDisplay.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
class TimeDisplay extends Component {
static propTypes = {
diff --git a/src/TimePicker/TimePicker.js b/src/TimePicker/TimePicker.js
index 3e6a7313aebae2..9107c8a9095d7e 100644
--- a/src/TimePicker/TimePicker.js
+++ b/src/TimePicker/TimePicker.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import TimePickerDialog from './TimePickerDialog';
import TextField from '../TextField';
import {formatTime} from './timeUtils';
diff --git a/src/TimePicker/TimePickerDialog.js b/src/TimePicker/TimePickerDialog.js
index d463e0d5d9319e..c94b40b540ce55 100644
--- a/src/TimePicker/TimePickerDialog.js
+++ b/src/TimePicker/TimePickerDialog.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EventListener from 'react-event-listener';
import keycode from 'keycode';
import Clock from './Clock';
diff --git a/src/Toggle/Toggle.js b/src/Toggle/Toggle.js
index 5bde9df3b8cbd7..e97f4874a55ab0 100644
--- a/src/Toggle/Toggle.js
+++ b/src/Toggle/Toggle.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import Paper from '../Paper';
import EnhancedSwitch from '../internal/EnhancedSwitch';
diff --git a/src/Toolbar/Toolbar.js b/src/Toolbar/Toolbar.js
index 1d14cecefe2b26..026a60b9a44f89 100644
--- a/src/Toolbar/Toolbar.js
+++ b/src/Toolbar/Toolbar.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {noGutter} = props;
diff --git a/src/Toolbar/ToolbarGroup.js b/src/Toolbar/ToolbarGroup.js
index c0c03727207f60..56718500331705 100644
--- a/src/Toolbar/ToolbarGroup.js
+++ b/src/Toolbar/ToolbarGroup.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {
diff --git a/src/Toolbar/ToolbarSeparator.js b/src/Toolbar/ToolbarSeparator.js
index 84ddbc9aab1b92..b48573990a9d9a 100644
--- a/src/Toolbar/ToolbarSeparator.js
+++ b/src/Toolbar/ToolbarSeparator.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {
diff --git a/src/Toolbar/ToolbarTitle.js b/src/Toolbar/ToolbarTitle.js
index 8d27e3da7becd9..2afbd52adcccae 100644
--- a/src/Toolbar/ToolbarTitle.js
+++ b/src/Toolbar/ToolbarTitle.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
function getStyles(props, context) {
const {
diff --git a/src/internal/AppCanvas.js b/src/internal/AppCanvas.js
index 640e3964297c10..1f65a4985fba4c 100644
--- a/src/internal/AppCanvas.js
+++ b/src/internal/AppCanvas.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
class AppCanvas extends Component {
static propTypes = {
diff --git a/src/internal/AutoLockScrolling.js b/src/internal/AutoLockScrolling.js
index 76e327b97a8516..6eb20afdb72474 100644
--- a/src/internal/AutoLockScrolling.js
+++ b/src/internal/AutoLockScrolling.js
@@ -1,4 +1,5 @@
-import {Component, PropTypes} from 'react';
+import {Component} from 'react';
+import PropTypes from 'prop-types';
let originalBodyOverflow = null;
let lockingCounter = 0;
diff --git a/src/internal/BeforeAfterWrapper.js b/src/internal/BeforeAfterWrapper.js
index 516f25950dd2f1..38a5963d5ce485 100644
--- a/src/internal/BeforeAfterWrapper.js
+++ b/src/internal/BeforeAfterWrapper.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
/**
* BeforeAfterWrapper
diff --git a/src/internal/CircleRipple.js b/src/internal/CircleRipple.js
index 4241bb9c9ce763..9e8479379a1677 100644
--- a/src/internal/CircleRipple.js
+++ b/src/internal/CircleRipple.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import shallowEqual from 'recompose/shallowEqual';
import autoPrefix from '../utils/autoPrefix';
diff --git a/src/internal/ClearFix.js b/src/internal/ClearFix.js
index d8885cce4d24c8..748ab33e118467 100644
--- a/src/internal/ClearFix.js
+++ b/src/internal/ClearFix.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import BeforeAfterWrapper from './BeforeAfterWrapper';
const styles = {
diff --git a/src/internal/ClickAwayListener.js b/src/internal/ClickAwayListener.js
index 6c9cdf9c247600..1bc200d2e77ba2 100644
--- a/src/internal/ClickAwayListener.js
+++ b/src/internal/ClickAwayListener.js
@@ -1,4 +1,5 @@
-import {Component, PropTypes} from 'react';
+import {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import events from '../utils/events';
diff --git a/src/internal/EnhancedButton.js b/src/internal/EnhancedButton.js
index a5b763ffd69d93..cb2ec1e1bbb1da 100644
--- a/src/internal/EnhancedButton.js
+++ b/src/internal/EnhancedButton.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {createChildFragment} from '../utils/childUtils';
import Events from '../utils/events';
import keycode from 'keycode';
diff --git a/src/internal/EnhancedSwitch.js b/src/internal/EnhancedSwitch.js
index be55741cb44a0c..27132bf6589ef7 100644
--- a/src/internal/EnhancedSwitch.js
+++ b/src/internal/EnhancedSwitch.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import EventListener from 'react-event-listener';
import keycode from 'keycode';
import transitions from '../styles/transitions';
diff --git a/src/internal/ExpandTransition.js b/src/internal/ExpandTransition.js
index ca399485d239cd..f86c4bce3ec018 100644
--- a/src/internal/ExpandTransition.js
+++ b/src/internal/ExpandTransition.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactTransitionGroup from 'react-addons-transition-group';
import ExpandTransitionChild from './ExpandTransitionChild';
diff --git a/src/internal/ExpandTransitionChild.js b/src/internal/ExpandTransitionChild.js
index d36e7aadd55312..53706fe9ec57db 100644
--- a/src/internal/ExpandTransitionChild.js
+++ b/src/internal/ExpandTransitionChild.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import transitions from '../styles/transitions';
diff --git a/src/internal/FocusRipple.js b/src/internal/FocusRipple.js
index 1cb7b38463dde6..0507164614dc97 100644
--- a/src/internal/FocusRipple.js
+++ b/src/internal/FocusRipple.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import shallowEqual from 'recompose/shallowEqual';
import autoPrefix from '../utils/autoPrefix';
diff --git a/src/internal/Overlay.js b/src/internal/Overlay.js
index 2b31ee77e60db9..75ac146d7a0e69 100644
--- a/src/internal/Overlay.js
+++ b/src/internal/Overlay.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
import AutoLockScrolling from './AutoLockScrolling';
diff --git a/src/internal/RenderToLayer.js b/src/internal/RenderToLayer.js
index c42c09e2e03c9d..250fa04d80610f 100644
--- a/src/internal/RenderToLayer.js
+++ b/src/internal/RenderToLayer.js
@@ -1,4 +1,5 @@
-import {Component, PropTypes} from 'react';
+import {Component} from 'react';
+import PropTypes from 'prop-types';
import {unstable_renderSubtreeIntoContainer, unmountComponentAtNode} from 'react-dom';
import Dom from '../utils/dom';
diff --git a/src/internal/ScaleIn.js b/src/internal/ScaleIn.js
index 19bfc599c2fd01..f95edb635829c0 100644
--- a/src/internal/ScaleIn.js
+++ b/src/internal/ScaleIn.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactTransitionGroup from 'react-addons-transition-group';
import ScaleInChild from './ScaleInChild';
diff --git a/src/internal/ScaleInChild.js b/src/internal/ScaleInChild.js
index f269ea55e50ff7..117fdb37a02999 100644
--- a/src/internal/ScaleInChild.js
+++ b/src/internal/ScaleInChild.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import autoPrefix from '../utils/autoPrefix';
import transitions from '../styles/transitions';
diff --git a/src/internal/SlideIn.js b/src/internal/SlideIn.js
index 221b19579f52c5..65e238f2b44465 100644
--- a/src/internal/SlideIn.js
+++ b/src/internal/SlideIn.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactTransitionGroup from 'react-addons-transition-group';
import SlideInChild from './SlideInChild';
diff --git a/src/internal/SlideInChild.js b/src/internal/SlideInChild.js
index e1b8e9f031f24e..c2ca17a2f848c8 100644
--- a/src/internal/SlideInChild.js
+++ b/src/internal/SlideInChild.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import autoPrefix from '../utils/autoPrefix';
import transitions from '../styles/transitions';
diff --git a/src/internal/Tooltip.js b/src/internal/Tooltip.js
index 10ac430abfb27a..4ad538a5c9eb1e 100644
--- a/src/internal/Tooltip.js
+++ b/src/internal/Tooltip.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import transitions from '../styles/transitions';
function getStyles(props, context, state) {
diff --git a/src/internal/TouchRipple.js b/src/internal/TouchRipple.js
index 309e9357034eca..4e8915f20c15b1 100644
--- a/src/internal/TouchRipple.js
+++ b/src/internal/TouchRipple.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import ReactTransitionGroup from 'react-addons-transition-group';
import Dom from '../utils/dom';
diff --git a/src/styles/MuiThemeProvider.js b/src/styles/MuiThemeProvider.js
index fb7b44e9d87b76..7d79b9885a9acb 100644
--- a/src/styles/MuiThemeProvider.js
+++ b/src/styles/MuiThemeProvider.js
@@ -1,4 +1,5 @@
-import {Component, PropTypes} from 'react';
+import {Component} from 'react';
+import PropTypes from 'prop-types';
import getMuiTheme from './getMuiTheme';
class MuiThemeProvider extends Component {
diff --git a/src/styles/muiThemeable.js b/src/styles/muiThemeable.js
index 1d8c5a515b23a7..3dcac6babd8ac1 100644
--- a/src/styles/muiThemeable.js
+++ b/src/styles/muiThemeable.js
@@ -1,4 +1,5 @@
-import React, {PropTypes} from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import getMuiTheme from './getMuiTheme';
let DEFAULT_THEME;
diff --git a/src/utils/propTypes.js b/src/utils/propTypes.js
index 56e86c7517117c..5c79f4335e6643 100644
--- a/src/utils/propTypes.js
+++ b/src/utils/propTypes.js
@@ -1,4 +1,4 @@
-import {PropTypes} from 'react';
+import PropTypes from 'prop-types';
const horizontal = PropTypes.oneOf(['left', 'middle', 'right']);
const vertical = PropTypes.oneOf(['top', 'center', 'bottom']);
diff --git a/test/integration/Card/Card.spec.js b/test/integration/Card/Card.spec.js
index bbae0386ccbf4a..8e3604d589db5a 100644
--- a/test/integration/Card/Card.spec.js
+++ b/test/integration/Card/Card.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
import React from 'react';
+import PropTypes from 'prop-types';
import {mount} from 'enzyme';
import {assert} from 'chai';
import getMuiTheme from 'src/styles/getMuiTheme';
@@ -12,7 +13,7 @@ describe('', () => {
const muiTheme = getMuiTheme();
const mountWithContext = (node) => mount(node, {
context: {muiTheme},
- childContextTypes: {muiTheme: React.PropTypes.object},
+ childContextTypes: {muiTheme: PropTypes.object},
});
it('renders a openIcon inside the CardHeader with custom color', () => {
diff --git a/test/integration/List/selectableList.spec.js b/test/integration/List/selectableList.spec.js
index 1dadd8d04fcdcb..05d0be911aecb7 100644
--- a/test/integration/List/selectableList.spec.js
+++ b/test/integration/List/selectableList.spec.js
@@ -6,7 +6,7 @@ import ListItem from 'src/List/ListItem';
import makeSelectable from 'src/List/makeSelectable';
import injectTheme from '../fixtures/inject-theme';
import getMuiTheme from 'src/styles/getMuiTheme';
-import TestUtils from 'react-addons-test-utils';
+import TestUtils from 'react-dom/test-utils';
describe('makeSelectable', () => {
const muiTheme = getMuiTheme();
diff --git a/test/integration/RenderToLayer/RenderToLayer.spec.js b/test/integration/RenderToLayer/RenderToLayer.spec.js
index b1c9247cb08581..19beed77d09e3a 100644
--- a/test/integration/RenderToLayer/RenderToLayer.spec.js
+++ b/test/integration/RenderToLayer/RenderToLayer.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {assert} from 'chai';
import {mount} from 'enzyme';
import RenderToLayer from 'src/internal/RenderToLayer';
diff --git a/test/integration/Stepper/VerticalLinearStepper.js b/test/integration/Stepper/VerticalLinearStepper.js
index bafc46310c5f68..bf35af6730d851 100644
--- a/test/integration/Stepper/VerticalLinearStepper.js
+++ b/test/integration/Stepper/VerticalLinearStepper.js
@@ -1,4 +1,5 @@
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
+import PropTypes from 'prop-types';
import {
Step,
Stepper,
diff --git a/test/integration/Table/MultiSelectTable.spec.js b/test/integration/Table/MultiSelectTable.spec.js
index ce33fa25b88ffa..aea5922c4efbae 100644
--- a/test/integration/Table/MultiSelectTable.spec.js
+++ b/test/integration/Table/MultiSelectTable.spec.js
@@ -1,5 +1,6 @@
/* eslint-env mocha */
import React from 'react';
+import PropTypes from 'prop-types';
import {mount} from 'enzyme';
import {assert} from 'chai';
import getMuiTheme from 'src/styles/getMuiTheme';
@@ -10,7 +11,7 @@ describe('', () => {
const muiTheme = getMuiTheme();
const mountWithContext = (node) => mount(node, {
context: {muiTheme},
- childContextTypes: {muiTheme: React.PropTypes.object},
+ childContextTypes: {muiTheme: PropTypes.object},
});
const wrapper = mountWithContext(
diff --git a/test/integration/fixtures/react-stub-context.js b/test/integration/fixtures/react-stub-context.js
index 586c76219993b1..e34a919f394c85 100644
--- a/test/integration/fixtures/react-stub-context.js
+++ b/test/integration/fixtures/react-stub-context.js
@@ -2,6 +2,8 @@
// "react-stub-context": "^0.3.0",
const React = require('react');
+const PropTypes = require('prop-types');
+const createReactClass = require('create-react-class');
function stubContext(BaseComponent, context) {
if (typeof context === 'undefined' || context === null) context = {};
@@ -10,16 +12,16 @@ function stubContext(BaseComponent, context) {
try {
Object.keys(context).forEach(function(key) {
- contextTypes[key] = React.PropTypes.any;
+ contextTypes[key] = PropTypes.any;
});
} catch (err) {
throw new TypeError('createdStubbedContextComponent requires an object');
}
- const StubbedContextParent = React.createClass({
+ const StubbedContextParent = createReactClass({
displayName: 'StubbedContextParent',
propTypes: {
- children: React.PropTypes.node,
+ children: PropTypes.node,
},
contextTypes: contextTypes,
childContextTypes: contextTypes,
@@ -31,7 +33,7 @@ function stubContext(BaseComponent, context) {
},
});
- const StubbedContextHandler = React.createClass({
+ const StubbedContextHandler = createReactClass({
displayName: 'StubbedContextHandler',
childContextTypes: contextTypes,
getChildContext() {
diff --git a/test/integration/theming.spec.js b/test/integration/theming.spec.js
index db8761f13e7354..c38c452a55f132 100644
--- a/test/integration/theming.spec.js
+++ b/test/integration/theming.spec.js
@@ -4,7 +4,9 @@
// Modifying any of the above files will break these tests!
import React from 'react';
-import TestUtils from 'react-addons-test-utils';
+import PropTypes from 'prop-types';
+import TestUtils from 'react-dom/test-utils';
+import createReactClass from 'create-react-class';
import {expect} from 'chai';
import AppBar from 'src/AppBar';
import RaisedButton from 'src/RaisedButton';
@@ -84,10 +86,10 @@ describe('Theming', () => {
});
// react components used for context-theme-passing testing
-const AppBarDarkUsingContext = React.createClass({
+const AppBarDarkUsingContext = createReactClass({
childContextTypes: {
- muiTheme: React.PropTypes.object,
+ muiTheme: PropTypes.object,
},
getChildContext() {
@@ -101,10 +103,10 @@ const AppBarDarkUsingContext = React.createClass({
},
});
-const AppBarDarkUsingContextWithOverride = React.createClass({
+const AppBarDarkUsingContextWithOverride = createReactClass({
childContextTypes: {
- muiTheme: React.PropTypes.object,
+ muiTheme: PropTypes.object,
},
getInitialState() {
@@ -128,7 +130,7 @@ const AppBarDarkUsingContextWithOverride = React.createClass({
});
const darkMuiTheme = getMuiTheme(darkBaseTheme);
-const AppBarDarkTheme = React.createClass({
+const AppBarDarkTheme = createReactClass({
render() {
return (
@@ -143,7 +145,7 @@ const darkMuiThemeWithOverride = getMuiTheme(darkBaseTheme, {
textColor: deepPurpleA700,
},
});
-const AppBarDarkThemeOverride = React.createClass({
+const AppBarDarkThemeOverride = createReactClass({
render() {
return (
@@ -154,10 +156,10 @@ const AppBarDarkThemeOverride = React.createClass({
});
// react component used to test whether or not theme updates down the hierarchy
-const ButtonToUpdateThemeWithAppBar = React.createClass({
+const ButtonToUpdateThemeWithAppBar = createReactClass({
childContextTypes: {
- muiTheme: React.PropTypes.object,
+ muiTheme: PropTypes.object,
},
getInitialState() {