The main difficulty is that the browser's History API is a superset of the typical mobile navigation API. Mobile generally goes back one screen at a time, while History can go backwards or forwards an arbitrary amount of screens.
History can do this because conceptually it's a list with a movable pointer, as opposed to mobile's concept of a stack, and that list isn't pruned until a new branch is made. e g. If the user navigates to A, B, C, and then goes back twice, the current screen would be A, but B and C are still "available" to navigate forward to. If the user then navigates to D, then B and C are pruned.
I was able to make my implementation work across the browser and mobile because mobile plays nicely with the browser's way of doing things; it just doesn't provide the user with a UI to move forward, or backwards more than one screen.
I'd prefer to use compose navigation, but unless it switches to that kind of model internally, I don't know if it can opaquely provide browser support.