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

**What is the current behavior?**

React 16.10.0 has broken all Next.js applications (and potentially other SSR solutions).

It appears you cannot `hydrate` in conjunction with a client-side `<Suspense>` component.

> Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.

![image](https://user-images.githubusercontent.com/616428/65810696-7f087b00-e17b-11e9-9957-3481fb5853e3.png)


**CodeSandbox**: https://codesandbox.io/s/i66g1

**What is the expected behavior?**

Not entirely sure -- I'm opening this issue to discuss. The provided example worked in React 16.9.0 (and prior releases containing Suspense).

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**

`react@16.10.0`/`react-dom@16.10.0` is broken.
`react@16.9.0`/`react-dom@16.9.0` works.

element.innerHTML = lastMarkup;
      let instance = ReactDOM.hydrate(<TestComponent name="x" />, element);
      expect(mountCount).toEqual(3);
      expect(element.innerHTML).toBe(lastMarkup);
      
      expect(numClicks).toEqual(0);
      instance.refs.span.click();
      expect(numClicks).toEqual(1);
      ReactDOM.unmountComponentAtNode(element);
      expect(element.innerHTML).toEqual('');
      
      
      element.innerHTML = lastMarkup;
      expect(() => {
        instance = ReactDOM.hydrate(<TestComponent name="y" />, element);
      }).toWarnDev('Text content did not match. Server: "x" Client: "y"', {
        withoutStack: true,
      });
      expect(mountCount).toEqual(4);
      expect(element.innerHTML.length > 0).toBe(true);
      expect(element.innerHTML).not.toEqual(lastMarkup);
      
      expect(numClicks).toEqual(1);
      instance.refs.span.click();
      expect(numClicks).toEqual(2);
    } finally {
      document.body.removeChild(element);
    }
  });