Hypermedia Systems
Overview of Hypermedia Systems & htmx
- Book is praised as one of the clearest, most useful web-dev resources; many read it end-to-end and even bought hard copies despite it being free.
- It explains hypermedia concepts, how htmx extends the web’s hypermedia model, and introduces Hyperview for mobile.
What htmx Changes
- Framed as extending HTML so:
- Any element can issue HTTP requests.
- Any event can trigger them.
- Any HTTP method can be used.
- Any part of the page can be replaced (dynamic transclusion).
- This allows SPA-like interactivity while mostly staying in HTML and server-side templates.
DSLs, Hyperscript, and “Optionality”
- One side: htmx attributes (
hx-*) and Hyperscript form a new DSL and effectively become non-optional once you adopt htmx. - Other side: Hyperscript is separate and optional; htmx itself is “just attributes” over standard HTML and can be combined with vanilla JS, Alpine, or others.
- Critics note the attribute syntax is ad-hoc and mixes styles (JS-like, custom mini-languages).
Server vs Client Complexity & Performance
- Supporters: shifting logic to the server simplifies systems, avoids duplicated logic, and can be faster and smaller than JSON+SPA in practice; cited experiments show reduced data transfer and quicker first render.
- Skeptics: every interaction can become a round trip and demands more stateful backends; concern about overloading routes with both full-page and fragment responses.
Use Cases, Limits, and Architecture
- Seen as ideal for:
- Internal tools and “mildly dynamic” sites.
- Enhancing classic server-rendered apps (e.g., Flask, Django).
- Acknowledged as not ideal for:
- Very interactive, client-state-heavy UIs (3D models, complex visualizations, long-lived SPA-style apps).
- Recommended pattern: mix approaches—htmx for CRUD/UI chrome, targeted JS or full SPA on particularly dynamic pages, JSON APIs where needed.
URLs, State, and Mobile Behavior
- Some report difficulty with deep-linking and restoring state (infinite scroll, blog subpages) and with mobile browsers killing tabs and breaking htmx-driven state.
- Others argue these are solvable with polymorphic responses,
HX-Requestdetection, and URL history (hx-push-url), cautioning against over-engineered JS/service-worker solutions.
Learning Curve & Ecosystem
- Docs are seen as better reference than tutorial; the book and external tutorial series fill that gap.
- General sentiment: htmx is not “the future of frontend” but a powerful, simple default for many common use cases.