Android web dev mess: History.replaceState disappears after Android 2.3
In this instance, Android browser developers seemingly decided that the History API wasn't useful to anyone, so they got rid of it.
However, from what I gather, they left a broken
pushState function in place - just to mess with feature detection code, which still thinks the History API is supported as a result.
This got fixed eventually - somewhere around Android 4.2. In the meantime, I'm stuck with using hash fragments and handling hash change events in the broken versions of the browser.