**Do you want to request a *feature* or report a *bug*?**
BUG

**What is the current behavior?**
App doesn't render in IE11 and below.

**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://jsfiddle.net or similar (template: https://jsfiddle.net/reactjs/69z2wepo/).**
- Build React app with Webpack
- Launch IE11 or below (not an emulator)
- You will see a blank screen or half-compiled React app with the following error:
![24f8f6e8-afde-11e6-9a6f-a3cc6355f55c](https://cloud.githubusercontent.com/assets/1647596/20527736/7b9075a8-b097-11e6-8ccb-d205b1908f31.png)

**What is the expected behavior?**
- To render as it does in Chrome, Firefox, etc.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**
We've temporarily shrink-wrapped our dependencies so that we can continue to serve our app. We're starting to believe that it's coming from a dependency that `react`, `apollo`  or `webpack` may be relying on...

Shrink-wrapped versions of our dependencies (left is the new one that's broken and the right one is the old one that continues to work across all browsers) https://www.diffchecker.com/SyaJUcsk
0xeac9;
const REACT_PORTAL_TYPE =
  (typeof Symbol === 'function' && Symbol.for && Symbol.for('react.portal')) ||
  0xeaca;
var SEPARATOR = '.';
var SUBSEPARATOR = ':';
/**
 * Escape and wrap key so it is safe to use as a reactid
 *
 * @param {string} key to be escaped.
 * @return {string} the escaped key.
 */
function escape(key) {
  var escapeRegex = /[=:]/g;
  var escaperLookup = {
    '=': '=0',
    ':': '=2',
  };
  var escapedString = ('' + key).replace(escapeRegex, function(match) {
    return escaperLookup[match];
  });
  return '$' + escapedString;
}
/**
 * TODO: Test that a single child and an array with one item have the same key
 * pattern.
 */
var didWarnAboutMaps = false;
var userProvidedKeyEscapeRegex = /\/+/g;
function escapeUserProvidedKey(text) {