If your router is in the main app's path, and that app rerenders on a path change (not uncommon), even if that path isn't passed to the router, it will rerender which causes it to send a path from the environment.
It should be safe to only listen to explicit path changes:
componentWillReceiveProps: function(nextProps) {
if (nextProps.path !== this.props.path) {
var nextState = this.getRouterState(nextProps);
this.delegateSetRoutingState(nextState);
}
},
To be safe we could do a shallow compare.