Server-Driven Web Apps with htmx (PragProg)

Build modern server-driven web applications using htmx. Whatever programming language you use, you’ll write less (and cleaner) code.

mvhtmx-500

R. Mark Volkmann @mvolkmann

Edited by Don N. Hagist @dhagist

htmx is a library that adds logic and server interaction to HTML; you get the effect of using a front-end SPA framework without writing front-end code. Use any server-side programming language and framework to build server applications with endpoints that simply return snippets of HTML. Dynamically update portions of the current web page from HTTP responses. Add interactivity with JavaScript and libraries such Alpine and _hyperscript. Make your apps more secure by escaping user-supplied content and specifying a Content Security Policy. Go beyond basic HTTP requests with WebSockets and server-sent events.

The htmx JavaScript library gives you a new way to craft web applications. The htmx approach differs significantly from that of the currently popular single-page application (SPA) frameworks; rather than write a bunch of JavaScript, you simply annotate HTML elements before you send them to the browser. The resulting code is easier to understand and modify, and because it downloads less to the browser and doesn’t need JSON creation and parsing, you’ll find it performs better, too.

  • Rethink web application design; write code in any language that simply responds to requests with htmx snippets.
  • Dynamically update portions of the current web page directly from the server.
  • Implement common patterns such as lazy loading, input validation, CSS transitions, active search, optimistic updates, pagination, infinite scroll, polling, and click-to-edit.
  • Add interactivity with JavaScript and libraries such as Alpine and _hyperscript.
  • Use the htmx JavaScript API to simplify DOM operations.
  • Make your web apps more secure: escape user-supplied content, use Subresource Integrity hashes, and enforce a Content Security Policy.
  • Go beyond the basic HTTP request/response pattern with WebSockets and server-sent events.

Discover a simpler way to implement web applications that emphasizes web fundamentals.


Mark Volkmann is a Partner and Distinguished Engineer at Object Computing, Inc. in St. Louis where he has provided software consulting and training since 1996. As a consultant, Mark has assisted many companies with JavaScript, Node.js, htmx, Svelte, React, Vue, Angular, Swift, SwiftUI, and much more.


Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout :+1:

2 Likes

Please send me any questions you have about the book! I’m happy to answer them.

1 Like

This is awesome. Thanks for writing a book on htmx. :slight_smile:

2 Likes

I see you are interested in F#. You might also like OCaml. Check out my blog page on OCaml (and lots of other things) at Mark Volkmann's blog.

1 Like

On page 35 (chapter 3. Developing Endpoints) in the “Your Turn” section it says “In the endpoint, set HX-Target…”. Shouldn’t that be HX-Trigger instead?

Great catch! So sorry about the error. This is the very first errata item. Thanks so much for reporting it!

I started an errata page at Mark Volkmann's blog. If you find any other issues, please send them to me.

BTW: Great book! I really like the way you explain things.
Thank you for putting in the work.

1 Like