As of Firefox 147, I intend to turn on support for the Navigation API
for all platforms supporting Session History in the parent (SHIP).
The Navigation API provides the ability to initiate, intercept, and
manage browser navigation actions. It can also examine an
application's history entries. This is a successor to previous web
platform features such as the History API and window.location.
The Navigation API has been implemented as part of the Interop 2025
effort to improve web interoperability.
Bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1777171
Bug to turn on by default:
https://bugzilla.mozilla.org/show_bug.cgi?id=1997962
Specification:
https://html.spec.whatwg.org/#navigation-interface
Platform coverage: All platforms
Navigation API depends on SHIP (Session History in Parent process)
being available, which is currently in the process of being enabled on
Android. Should blocking issues occur with that project, this would be
adjusted to Desktop only.
Preference: dom.navigation.webidl.enabled
DevTools bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1991928
Link to standards-positions discussion:
https://github.com/whatwg/html/pull/8502
Other browsers:
* Blink: Shipped in version 102
* WebKit: Implemented but not shipped.
https://bugs.webkit.org/show_bug.cgi?id=258384
web-platform-tests:
* navigation-api/
How stable is the spec: Navigation API has been a part of the HTML
spec since June 2023 but still suffers from maturity issues. Several
areas are currently being contended, in particular in the areas of
event ordering and internal state consistency. This has led to the
following, hopefully temporary, Gecko spec deviations:
* Navigation API being disabled in `javascript:` URIs
* Navigation API being disabled in `<object>` and `<embed>`
* Timing hacks in the implementation of NavigateEvent dispatch to
keep state consistent
Cheers!
--
farre