pushState to the Future: Progressive Enhancement Using HTML 5 pushState
summary
Twitter implements HTML5 history as a progressive enhancement layered on full server rendering: the server returns JSON-wrapped server-rendered HTML plus module list and init data, the client loads modules with LoadRunner and swaps a DOM container, and history entries use pushState/replaceState so URLs never change. Implementation adds two new JS modules, uses Hijax + server-side rendering, and includes workarounds for Firefox 640K state limits and WebKit spurious popstate; result is faster in-app navigation, low server rearchitecture cost, and graceful fallback.
AI-written summary · about
chapters (7)
- 0:00Start
- 8:26Title Param Support
- 15:27Core Functionality
- 23:00UI Component
- 23:36Data Component
- 31:02Uses of reload
- 31:36Final Thoughts
related talks
14mThe HTML5 History API: PushState or bust!
22mProgressive Enhancement
33mPitfalls and Opportunities of Single Page Applications
30mThe State of HTML5 - Inaugural Address
30mDoes Progressive Enhancement Have a Place in Today's Web?
22mThe (Abundant) State of the Web
40mWeb Applications of the Future
54mHow to build the modern, optimistic and reactive user interface, we all want.
