Hello Community,
Many client side code libraries & tool kits, for example Yahoo's YUI and Google's GWT support managing state history for the user experience. When implemented it allows a user to revert to a previous app state on the same page when they click the Back button or Backspace key.
In this video from Google IO the implementation of this type of history management is strongly recommended and in fact assumed to be a part of rich web apps.
I see the value in such an approach but I'm not convinced it really supports the average user's expectations. In researching for this question on StackOverflow I found many rants from people about the evil of overriding "Back" functionality, couldn't it be argued that this approach falls into that category?
Personally I have been frustrated many times when "Back" merely changed the page state, when what I really wanted was to exit to my last browse location. For my usage the 99% use case for Back is not a state change, but a page change.
Finally, my real question is: How can we support history management for rich web apps without overriding "Back"?
Edit (best practice roundup):
After reading Michael's blog post, I'm thinking now that for undo on non-link user control (dropdown, text fields etc.) i would rely on Control-Z and/or a button - a UI pattern that is widely supported.
Back should revert at most the most coarse grained view changes the rich web app offers. It should emulate browser history by remembering only a single branch in the navigation tree: repeating back always leads to the root, and then the last page visited.