htmx is only one of many different libraries & frameworks that take the hypermedia oriented approach to building web applications. I have said before that I think the ideas of htmx / hypermedia are more important than htmx as an implementation. Here are some of my favorite other … | Continue reading
When I was in college, I wrote some customer service software that tied together some custom AI models I trained, the OpenAI API, a database, and some social media APIs to make the first version of Sidekick. Led astray Over the next couple years I worked on adding more features a … | Continue reading
In The Beginning… htmx began life as intercooler.js, a library built around jQuery that added behavior based on HTML attributes. For developers who are not familiar with it, jQuery is a venerable JavaScript library that made writing cross-platform JavaScript a lot easier during a … | Continue reading
This is a “quirks” page, based on SQLite’s “Quirks, Caveats, and Gotchas In SQLite. Attribute Inheritance Many attributes in htmx are inherited: child elements can receive behavior from attributes located on parent elements. As an example, here are two htmx-powered buttons that i … | Continue reading
For better or for worse, htmx has collected a lot of lore, mainly around the twitter account: #It’s So Over/We’re So Back A common set of phrases used by htmx enthusiasts when, for example, @bunjavascript told me to delete my account #htmx CEO At one point there was a hostile tak … | Continue reading
#Or, Watching Myself Lose My Mind In Real Time… “Invert, always invert.” –Carl Jacobi, by way of Charlie Munger If Statements prefer if statements to polymorphism whenever you are tempted to create a class, ask yourself: “could this be an if statement instead?” The Closed/Closed … | Continue reading
“Writing clean code is what you must do in order to call yourself a professional. There is no reasonable excuse for doing anything less than your best.” Clean Code In this essay I want to talk about how I write code. I am going to call my approach “codin’ dirty” because I often g … | Continue reading
People interested in htmx often ask us about component libraries. React and other JavaScript frameworks have great ecosystems of pre-built components that can be imported into your project; htmx doesn’t really have anything similar. The first and most important thing to understan … | Continue reading
Over 6 years ago, I created an open source URL shortener with Next.js and after years of working on it, I found Next.js to be much more of a burden than a help. Over the years, Next.js has changed, and so did my code so it can be compatible with those changes. My Next.js codebase … | Continue reading
At Gumroad, we recently embarked on a new project called Helper. As the CEO, I was initially quite optimistic about using htmx for this project, even though some team members were less enthusiastic. My optimism stemmed from previous experiences with React, which often felt like o … | Continue reading
#An Ode to Browser Advancements. I often encounter discussions on Reddit and YCombinator where newer developers seek tech stack advice. Inevitably, someone claims it’s impossible to build a high-quality application without using a single-page application (SPA) framework like Reac … | Continue reading
htmx 2.0.0 Release I’m very happy to announce the release of htmx 2.0. This release ends support for Internet Explorer and tightens up some defaults, but does not change most of the core functionality or the core API of the library. Note that we are not marking 2.0 as latest in N … | Continue reading
htmx 2.0.0-beta4 Release I’m happy to announce the fourth beta release of htmx 2.0 This is an beta release and should NOT be considered ready for production. We are releasing it to begin final testing against real world scenarios. If you are able to do so, please switch to the re … | Continue reading
htmx 2.0.0-beta1 Release I’m happy to announce the first beta release of htmx 2.0 This is an beta release and should NOT be considered ready for production. We are releasing it to begin final testing against real world scenarios. If you are able to do so, please switch to the rel … | Continue reading
htmx 2.0.0-alpha2 Release I’m happy to announce the second alpha release of htmx 2.0 This is an alpha release and should NOT be considered ready for production. We are releasing it to begin testing the code against real world scenarios to figure out what is broken and what needs … | Continue reading
As htmx has gotten more popular, it’s reached communities who have never written server-generated HTML before. Dynamic HTML templating was, and still is, the standard way to use many popular web frameworks—like Rails, Django, and Spring—but it is a novel concept for those coming … | Continue reading
As htmx has gotten more popular, it’s reached communities who have never written server-generated HTML before. Dynamic HTML templating was, and still is, the standard way to use many popular web frameworks—like Rails, Django, and Spring—but it is a novel concept for those coming … | Continue reading
I have been following htmx for a while now. I thought it was a somewhat funny/cringey meme and that it served as some light comic relief from the real work being done in web development, things like React Server Components, Svelte Runes and Signals that are actually pushing the s … | Continue reading
htmx 2.0.0-alpha1 Release I’m happy to announce the first alpha release of htmx 2.0 This is an alpha release and should NOT be considered ready for production. We are releasing it to begin testing the code against real world scenarios to figure out what is broken and what needs i … | Continue reading
A common objection I see to using htmx and hypermedia is something along the lines of: The problem with returning HTML (and not JSON) from your server is that you’d probably also like to serve mobile apps and don’t want to duplicate your API I have already outlined in another ess … | Continue reading
A common objection I see to using htmx and hypermedia is something along the lines of: The problem with returning HTML (and not JSON) from your server is that you’d probably also like to serve mobile apps and don’t want to duplicate your API I have already outlined in another ess … | Continue reading
One of the most common criticisms of htmx, usually from people hearing about it for the first time, goes like this: You’re complaining about the complexity of modern frontend frameworks, but your solution is just another complex frontend framework. This is an excellent objection! … | Continue reading
One of the most common criticisms of htmx, usually from people hearing about it for the first time, goes like this: You’re complaining about the complexity of modern frontend frameworks, but your solution is just another complex frontend framework. This is an excellent objection! … | Continue reading
I have written a lot about Hypermedia APIs vs. Data (JSON) APIs, including the differences between the two, what REST “really” means and why HATEOAS isn’t so bad as long as your API is interacting with a Hypermedia Client. Often when I am engaged in discussions with people coming … | Continue reading
I have written a lot about Hypermedia APIs vs. Data (JSON) APIs, including the differences between the two, what REST “really” means and why HATEOAS isn’t so bad as long as your API is interacting with a Hypermedia Client. Often when I am engaged in discussions with people coming … | Continue reading
One objection that we sometimes hear to htmx and hypermedia is some variation of the following: Well, it might work well for something small, but it won’t scale. It is always dangerous to provoke us with essay-fodder and so lets dig into this claim a bit and see if we can shed so … | Continue reading
One objection that we sometimes hear to htmx and hypermedia is some variation of the following: Well, it might work well for something small, but it won’t scale. It is always dangerous to provoke us with essay-fodder and so lets dig into this claim a bit and see if we can shed so … | Continue reading
htmx 1.9.7 Release I’m happy to announce the 1.9.7 release of htmx. Improvements & Bug fixes Fixed a bug where a button associated with a form that is swapped out of the DOM caused errors The hx-target-error attribute was added to the response-targets extension, allowing you to c … | Continue reading
htmx 1.9.7 Release I’m happy to announce the 1.9.7 release of htmx. Improvements & Bug fixes Fixed a bug where a button associated with a form that is swapped out of the DOM caused errors The hx-target-error attribute was added to the response-targets extension, allowing you to c … | Continue reading
htmx 1.9.6 Release I’m happy to announce the 1.9.6 release of htmx. New Features IE support has been restored (thank you @telroshan!) Introduced the hx-disabled-elt attribute to allow specifing elements to disable during a request You can now explicitly decide to ignore title tag … | Continue reading
htmx 1.9.6 Release I’m happy to announce the 1.9.6 release of htmx. New Features IE support has been restored (thank you @telroshan!) Introduced the hx-disabled-elt attribute to allow specifying elements to disable during a request You can now explicitly decide to ignore title ta … | Continue reading
Not for nothing, Hypercard presaged the web’s critical “#ViewSource” affordance, which allowed people to copy, modify, customize and improve on the things that they found delightful or useful. This affordance was later adapted by other human-centered projects like #Scratch, and i … | Continue reading
Not for nothing, Hypercard presaged the web’s critical “#ViewSource” affordance, which allowed people to copy, modify, customize and improve on the things that they found delightful or useful. This affordance was later adapted by other human-centered projects like #Scratch, and i … | Continue reading
The Mother of All htmx Demos you can see the real world results of a port from a React-based front end to an htmx-powered front end. The results are very good, although we qualify the experience with the following: These are eye-popping numbers, and they reflect the fact that the … | Continue reading
The Mother of All htmx Demos you can see the real world results of a port from a React-based front end to an htmx-powered front end. The results are very good, although we qualify the experience with the following: These are eye-popping numbers, and they reflect the fact that the … | Continue reading
htmx 1.9.5 Release I’m happy to announce the 1.9.5 release of htmx. New Features You can disable the interpretation of script tags with the new htmx.config.allowScriptTags config variable You can now disable htmx-based requests to non-origin hosts via the htmx.config.selfRequests … | Continue reading
htmx 1.9.5 Release I’m happy to announce the 1.9.5 release of htmx. New Features You can disable the interpretation of script tags with the new htmx.config.allowScriptTags config variable You can now disable htmx-based requests to non-origin hosts via the htmx.config.selfRequests … | Continue reading
A recurring question from some htmx contributors is why htmx isn’t written in TypeScript, or, for that matter, why htmx lacks any build step at all. The full htmx source is a single 3,500-line JavaScript file; if you want to contribute to htmx, you do so by modifying the htmx.js … | Continue reading
A recurring question from some htmx contributors is why htmx isn’t written in TypeScript, or, for that matter, why htmx lacks any build step at all. The full htmx source is a single 3,500-line JavaScript file; if you want to contribute to htmx, you do so by modifying the htmx.js … | Continue reading
htmx 1.9.3 Release I’m happy to announce the 1.9.3 release of htmx. New Features The hx-on attribute has been deprecated (sorry) in favor of hx-on- attributes. See hx-on for more information. You can now configure if a type of HTTP request uses the body for parameters or not. In … | Continue reading
htmx 1.9.3 Release I’m happy to announce the 1.9.3 release of htmx. New Features The hx-on attribute has been deprecated (sorry) in favor of hx-on: attributes. See hx-on for more information. You can now configure if a type of HTTP request uses the body for parameters or not. In … | Continue reading
Ackshually… I’d just like to interject for a moment. What you’re referring to as REST, is in fact, JSON/RPC, or as I’ve recently taken to calling it, REST-less. JSON is not a hypermedia unto itself, but rather a plain data format made useful by out of band information as defined … | Continue reading
#REST copy-pastas #Ackshually… I’d just like to interject for a moment. What you’re referring to as REST, is in fact, JSON/RPC, or as I’ve recently taken to calling it, REST-less. JSON is not a hypermedia unto itself, but rather a plain data format made useful by out of band info … | Continue reading
We are excited to announce that htmx has been accepted into the first class of the GitHub Open Source Accelerator! This is a tremendous opportunity to work with and learn from some of the most successful open source developers and projects, and a great chance to get the message o … | Continue reading
We are excited to announce that htmx has been accepted into the first class of the Github Open Source Accelerator! This is a tremendous opportunity to work with and learn from some of the most successful open source developers and projects, and a great chance to get the message o … | Continue reading
The one big remaining (advantage of MPAs) is (server side programming) language choice. If you’re already part of the anti-JavaScript resistance, then nothing I say in the rest of this talk is going to matter that much. But, I’m going to get into this later: that ship might have … | Continue reading
The one big remaining (advantage of MPAs) is (server side programming) language choice. If you’re already part of the anti-JavaScript resistance, then nothing I say in the rest of this talk is going to matter that much. But, I’m going to get into this later: that ship might have … | Continue reading
We have asserted, for a while now, that a major reason that many people have adopted the SPA architecture for web applications is due to aesthetic considerations. As we mention in our book Hypermedia Systems, when discussing the Web 1.0-style contact management application we beg … | Continue reading