I'm having a hard time narrowing a repro down for this and there seem to be a lot of required moving parts, so I'll try to give as much information as I can.

Relevant snippet of package.json:

```
    "react": "15.0.0-rc.2", // repros w/ 0.14.7 as well
    "react-dom": "15.0.0-rc.2",
    "react-redux": "4.0.6",
    "react-router": "2.0.0-rc5",
    "react-router-redux": "4.0.0-rc.1",
    "redux": "3.2.1",
```

Our routes look something like this:

```
      <Route component={App}>
        <Route component={LayoutNoFooter}>
          <Route component={Page2} />
        </Route>
        <Route component={Layout}>
          <Route component={Page1} />
        </Route>
      </Route>
```

`LayoutNoFooter` simply wraps `Layout` and passes an additional prop in.

I have this component in the `Header`, which is rendered by `Layout`: https://gist.github.com/aaronjensen/86c9643ecc53ad4e9006

`Header` is a react-redux connected component.

`Page1` has a `componentWillUnmount` that dispatches an action that ultimately toggles `searchMode` in `HeaderLogo`. 

When I go from `Page1` to `Page2` the invariant violation fires.

If I `setTimeout` the action dispatch in `componentWillUnmount` it appears to work fine. If I replace `LayoutNoFooter` with `Layout` it appears to work fine.

The invariant violation is on the `img` tag of the `HeaderLogo`

![stack](https://screenshots-dx37.s3.amazonaws.com/monosnap/Integration_Test__Hotel_Results_2016-03-28_22-35-14.png)

I've tried building a repro in codepen, with a similar structure `setState` calls to simulate react-router and redux, but I suspect they are doing more that would require me to actually build a repro w/ those technologies. If that would be helpful, I can work on it over time and hopefully repro it. Maybe there's enough info here, however. Thanks!

var updateCount = 0;
    var Component = React.createClass({
      getInitialState: function() {
        return {y: 0};
      },
      componentDidUpdate: function() {
        updateCount++;
      },
      render: function() {
        return <div>({this.props.x}, {this.state.y})</div>;
      },
    });
    var container = document.createElement('div');
    var instance = ReactDOM.render(<Component x={0} />, container);
    expect(instance.props.x).toBe(0);
    expect(instance.state.y).toBe(0);
    ReactUpdates.batchedUpdates(function() {
      ReactDOM.render(<Component x={1} />, container);
      instance.setState({y: 2});
      expect(instance.props.x).toBe(0);
      expect(instance.state.y).toBe(0);
      expect(updateCount).toBe(0);
    });
    expect(instance.props.x).toBe(1);
    expect(instance.state.y).toBe(2);
    expect(updateCount).toBe(1);
  });
  it('should batch parent/child state updates together', function() {
    var parentUpdateCount = 0;
    var Parent = React.createClass({