This is continuing the conversation started in #2805 We're considering dropping replaceState because ideally state should always keep a consistent signature, defined by getInitialState.