-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A new history API, "app history" #20
Comments
Whew, finally read through the complete explainer. Thanks for such an exhaustive writeup - I'm not sure I understood it all on my first reading, so I'll probably have to come back and read it a couple times more to really get it, but it is really promising. This proposal is exciting, and would certainly remove an issue that the whole single-spa community has to deal with, namely getting multiple application routers to be able to communicate with each other. (Currently the library itself has to monkeypatch I would love to see this get officially picked up and started down the process of refinement and browser adoption. Awesome work ❤️ |
I like the approach. It feels a lot more intentional and focusing on applications rather than pages. This would be a significant help in building complex web applications and could help bridge some the divide between the web as a platform for applications and other platforms like I would love to see this move forward. |
Some notes while reading through the explainer:
These seem a bit more wordy than necessary. I think appHistory.current;
appHistory.update();
appHistory.push(); would be just as understandable, and shorter. appHistory.current;
appHistory.current.update();
appHistory.push(); This would allow you to update any history entry though, not just the current one, which might be okay, but might not if the URL is changed. Though even that could be okay if it's a future entry and not a past entry, and an exception culd be thrown for a past entry. Being able to use the object spread operator on history entries would make some things more readable. For example this line from the explainer for URL fragment navigation
could be
For the navigation event, how would Is
This should be handled by the server. It might be nice to do it on the client for convenience, but I think there needs to be a warning about using it only on the client. For the
I don't know what the discussions so far have been, but I think keeping it as a JavaScript value is cleaner to use. |
If we don't want to intercept cross-origin navigations and let the browser handle those normally, why not disable the API altogether for these cases ? I guess what I'm saying here, when there's space to abuse something, it will be abused 😄 |
Thanks all! This seems to have a bunch of support here and elsewhere. I spun up a new repo for this at https://github.com/WICG/app-history Happy incubating! :) |
Thanks all! I'll close this out now, and work on porting over the issues to the new repo. |
Introduction
The web's existing history API is problematic for a number of reasons, which makes it hard to use for web applications. This proposal introduces a new
window.appHistory
API, which is more directly usable by web application developers to address the use cases they have for history introspection, mutation, and observation/interception.The proposed API layers on top of the existing API and specification infrastructure, with well-defined interaction points. The main differences are that it is scoped to the current origin and frame, and it is designed to be pleasant to use instead of being a historical accident with many sharp edges. Some notable features:
click
handler.history.state
.)popstate
andhashchange
events.)Read the complete Explainer.
Feedback
We'd love to hear from the community of developers as to whether this sounds like a worthwhile direction to explore, and in particular whether we should migrate it to the WICG for further discussion in its own dedicated repository.
For any general feedback or questions on the idea, especially any support for developing the idea, please use this thread. For specific technical questions or suggestions on the API, file issues on WICG/app-history where we can work through them in more detail. (Hopefully such questions can move to a dedicated WICG repository once we get general support.)
The text was updated successfully, but these errors were encountered: