Top
Best
New

Posted by rmsaksida 16 hours ago

Htmx 4.0(four.htmx.org)
576 points | 142 commentspage 2
fionic 3 hours ago|
The site is very broken on my iPhone safari. If I click an an anchor reference at the very top (“LLM” let’s say) and try to scroll down because it doesnt link me to the content, it keeps snapping me back to the top after a second.
alkonaut 7 hours ago||
As the CEO of HTMX I find it disturbing that we have more CEO’s than users.
tdhz77 55 minutes ago||
Htmx. And then what’s your mobile strat?
praseodym 13 hours ago||
Is it just a coincidence that the image for this release is the same as for Omarchy Quattro? https://youtu.be/F7fe9pa8OeE
recursivedoubts 13 hours ago||
oh man that's embarassing, someone made that on twitter I didn't realize it was from omarchy, I've removed it, my bad
chainwax 13 hours ago||
I think that's the joke
ryanisnan 13 hours ago||
Congratulations on the release!

I have enjoyed working with htmx very much.

I'm still skeptical of htmx being the foundation for a 100-year web service, but I think this is a really worthwhile goal. I'll add that aside from static HTML, I don't have a better option.

smt88 12 hours ago|
Thinking about how well your web architecture will hold up for 100 years (or even 10 years) is bikeshedding and a pointless exercise.

Perfect is the enemy of good and all that. If something is useful, it’s possible to fix the architecture later. The only counter-example I know of has been GitHub, which was built on RoR and so poorly planned that it’s still biting Microsoft on a regular basis.

mostlysimilar 9 hours ago|||
> RoR and so poorly planned that it’s still biting Microsoft on a regular basis.

Disagree. The RoR front end was way more stable and usable than the mess they have made now.

smt88 8 hours ago||
The issues are with the Ruby backend.

RoR is the only framework I’ve ever heard of being so bad that it killed startups. I personally know of two that were doing well, but RoR was so brittle and slow that they couldn’t hire enough to keep it going. This is compounded by Ruby devs being pretty rare.

xp84 6 hours ago||
> RoR was so brittle and slow that they couldn’t hire enough to keep it going.

This is such a "poor carpenter blaming his tools" take.

RoR isn't holding you back from writing performant, high-quality code. However, letting inexperienced developers run wild without supervision does end up with a codebase committing most of the deadly sins of software: (1) proliferation of competing patterns (2) proliferation of competing third-party libraries, leading to more #1, (3) inadequate test suite, and (4) an app that serves up so many 500 errors that you can't tell which are new and/or which indicate a problem. #4 is definitely more common in untyped languages, since that whole class of bugs can't be caught at compile time.

By the time a lot of these "startups" get to the mature state they have like a 7-year-old codebase that is beyond help. But you can use Ruby and Rails responsibly. I've seen it done. Usually all that's needed is to apply yourself to understanding how to cache, and then, identifying the key expensive high-traffic endpoints and converting them from ActiveRecord N+1 messes into single-query eager-loaded beasts, sometimes skipping ActiveRecord's object instantiation. Sounds scary, but it's inevitable for a popular application on any language/framework that you'll need to go beyond the tutorial-grade code for key transactions. This kind of thing is what Staff Engineers are for.

ashwinsundar 8 hours ago||||
Thinking about whether a web architecture will hold up for 100 years is bikeshedding, is bikeshedding as well
xp84 6 hours ago|||
calling thinking about bikeshedding, bikeshedding, is peak bikeshedding.
ashwinsundar 5 hours ago||
bikeshed
euroderf 3 hours ago||
pronounced "by-kesht"
smt88 8 hours ago|||
Only if you don’t know what bikeshedding is and want to broaden the definition so much that it’s meaningless.

This is Hacker News. This is exactly the place to tell people they’re overanalyzing and should just build something.

ashwinsundar 48 minutes ago||
Sir, this is a Wendy's
satvikpendem 10 hours ago||||
100 years, sure, but 10 years? Definitely not bike shedding, I'd hope your website can stay up for 10 years at least.
smt88 8 hours ago||
You don’t need to agonize over a library choice to know that your site will be up for 10 years. If it outputs web standards, the browser engines will make sure it is.
satvikpendem 3 hours ago||
Yes, unless you choose wrong, which is what we're talking about, as sometimes choosing right is worth the bike shedding.
ryanisnan 11 hours ago|||
Sure but it's a spectrum. Surely some choices will age much more poorly than others.
dajonker 9 hours ago||
Cheers! We've been running the various betas in production for a couple of months now. For our Rails app we replaced most of our Hotwired/Turbo with HTMX. For me at least, HTMX just makes more sense: you control the flow of content from the client, not from the server as you do with Turbo.

For pushing updates, we use ActionCable, but we do it in a different way from what we used to do with Turbo Streams: when a record is updated, instead of sending HTML from the server to the client with instructions on what to replace, we only send a small JSON payload with the ID of the element that was updated. On the client side, an event is dispatched that any DOM element with <hx-trigger="<resource-id>:updated from:body"> will trigger on. For the rest it's just basic HTMX, only the trigger is "custom".

arjie 13 hours ago||
Great library. Really enjoy using it. Agents work really well with the kind of site you build with it and it’s very easy to build. Thanks for the upgrade skills.
replwoacause 12 hours ago||
I've always been a fan and supporter of HTMX, but lately I've wondered how beneficial it is now that LLMs can generate JavaScript for us. HTMX was especially useful when I wrote JavaScript by hand because I appreciated its higher level of abstraction and simplicity. I also struggled to make it work with AlpineJS and eventually had to resort to plain JavaScript, which gave me finer control. Normally, switching to JavaScript would have been a hassle but since an LLM can produce it as easily as any other text, I’m less clear on HTMX’s advantage. I’ve been getting along fine without it. If computers didn’t write code for us, I would still choose HTMX, but now I find it hard to justify the trade‑off.
gregwebs 11 hours ago||
By default LLMs will start creating a tangled hard to test mess of javascript. But if you ask them to do TDD they will, and if you give them access to Playwright and have them write playwright tests this can all work.

The advantage for the LLM is the same for humans. With the right abstractions, code can be written quicker and more robustly.

To get more hands off with LLMS you really want to have a lot of engineering rigor. A big part of that is a focus on tests. If your abstractions make testing easier, your results will be a lot better. For Javascript the more you can test logic without DOM manipulation and without playwright tests, the better.

I found LLMs to be default to and be pretty good at working with HTMX, but not great (mostly lots of state synchronization issues). The focus on DOM markup of HTMX does not lend itself well to simplifying testing. I don't claim to be an expert at HTMX, but I don't see a separate section on testing in their documentation.

I am trying out the foldkit framework because it makes a lot more testable outside the DOM. Its probably too heavy weight for most humans (and for simple apps- it only seems appropriate for client-side apps), but I will see how well LLMs can work with it.

recursivedoubts 12 hours ago|||
There's definitely something to this: I expect LLMs to hurt the adoption of htmx and most smaller web libraries. That's fine: it's always been a labor of love and is BSD 0, so I hope the ideas are interesting and that the people who decide to use it enjoy it.
sroerick 10 hours ago|||
It may do the opposite! My sense of LLMs is that simplicity beats training.

If you have 1/5th the context to consume, that's going to generate better code than the comparable typescript, even if the language is an esoteric one.

giraffe_lady 11 hours ago||||
I think, at least for the next few years, certain preferences and consensuses were accidentally embedded in the models to your benefit.

They love htmx! Claude will independently suggest using it instead of more general js frameworks for smaller projects. A gpt model told me, and I wrote this down because it was striking, "htmx won the argument it was making."

It's the same thing with rust. I'm an ocaml expert and ocaml genuinely fits a lot of the problems I work with better regardless of that. But because of when the models were trained and what they were trained on, a certain sort of alt-consensus opinion is frozen into them, and it believes rust is a better choice for nearly everything!

I think you're good for the next few years at least. It's an open question what happens after that dead internet theory recursive loop of llms trained on llm output etc so who knows you might be good forever.

sroerick 10 hours ago|||
I agree with this and I'd also say - I've been vibe coding in OCaml since before the training data was good.

All the stuff I lost in training data I gained back in having great compiler feedback.

I don't think agents are nearly as restricted by language or training data as we think.

recursivedoubts 10 hours ago|||
We will see. Changing things around a bit (especially flipping attribute inheritance to explicit by default) may confuse a lot of models. Oh well, it's the right thing ¯\_(ツ)_/¯

Thank you for your kind words!

replwoacause 6 hours ago||
Please don’t misunderstand my comment, I wasn't trying to diminish the brilliant work you’ve done on HTMX, which I’ve personally benefited from. I could have probably worded it better than I did. I'm also not saying you _did_ misunderstand it, only asking that you please don't. I was just sharing an observation that I realize is not everyone’s experience. I’m still a fan + supporter, even though I now reach for JS more often because the pain of writing it has largely disappeared. I’m still not a fan of it by any means, but LLMs have been a major mitigator. I'm always happy to see the HTMX updates when they come out.
cyanydeez 10 hours ago|||
I've yet to see anyone try to finetune one of these qwen models on a specific framework, but if you guys care, qwen3.5-35B-A3B is rather fast and reliable for a lot of what I'd call "copy/paste" task and might be worth while to see if a fine tune could excel at HTMX universe tasks.
vb-8448 11 hours ago|||
The main issue HTMX address is reducing complexity and LLMs doesn't solve it.

I'd expect it to be the other way around: LLMs will increase HTMX(and similar solutions) adoption because alongside of being excellent at writing HTMX there are also excellent writing web components.

React, vue and similar still have their use case, but htmx + web components can drive you really far.

dgabriel 9 hours ago|||
Out of curiosity, are you defaulting to vanilla js in your agentic dev stack? Or do you have the llm use a framework like react?
replwoacause 2 hours ago||
I've only tried vanilla JS so far
Fervicus 11 hours ago|||
> now that LLMs can generate JavaScript for us.

You mean generate unmaintainable JavaScript for us.

replwoacause 2 hours ago|||
Not my experience. I have large production apps that I'm able to maintain just fine with thousands of lines of JS.
razemio 10 hours ago|||
Depends how you set it up. Like any other project I guess. Funny enough, if you are able to produce maintainable code with an llm you could aswell lead a team of humans. LLMs shift your focus on project management and architectural choices.

I let the llm write components which are independent to each other. This works great and keeps everything clean. The times that llm would only generate unmaintainable code are long gone with OPUS, Fable and sol 5.6

mi_lk 5 hours ago|||
Does HTMX not have some performance gain over JS frameworks? (Never used it before)
KPGv2 12 hours ago|||
The last time I made a website about a year ago, Gemini used HTMX. It was actually my first experience with HTMX, so in a way, LLMs led to me adopting it. :D
Capricorn2481 12 hours ago|||
It's hard to answer because I don't personally use HTMX as a way to avoid Javascript. HTMX is a Javascript library. And I don't know if I even find using HTMX easier/harder than writing JS, because they are fundamentally different approaches to building apps. It really just depends on what I'm trying to do.

One is a programming language used for writing client side code, and the other is a minimal library that makes server sent documents more ergonomic. Yes, it's a JS library with a few nice conveniences, but the main draw of HTMX encourages a completely different app architecture than what the average dev would arrive at with plain JS.

They're just two different things to me, and so it seems irrelevant if LLMs can help you write one faster. If you're only using HTMX to avoid JS, I don't see how LLMs discourage you from doing that. Wouldn't it be better to vibecode something you have an easier time reading than vibecode a language you don't even understand enough to use? What are you going to do if it blows up?

sgt 12 hours ago|||
I mean, htmx and JS glue logic is truly the differentiator now because LLM's do it so well. It's absolutely the way to go.
nchmy 12 hours ago||
the browser is and always will be built for dealing with SSR HTML
replwoacause 12 hours ago|||
All apps I build are server-side rendered. I'm not sure how your comment changes the the question I'm asking.
nchmy 12 hours ago||
apologies, i thought you were saying you were switching to SPAs because LLMs understand it better. I see some version of that comment nearly daily now. Carry on!
replwoacause 2 hours ago||
Ah no worries. No SPAs for me, SSR all day.
osigurdson 12 hours ago||||
IMO current browsers are more like an operating system designed for progressive loading of apps.

That doesn't mean do dumb / complicated / bloated stuff for no reason. If the best thing for your users is static html, use that.

KPGv2 11 hours ago||||
That's like rejecting video games because the CRT was built for displaying live TV streams sent over the public airwaves.
7bit 12 hours ago|||
Oof bold claim
nchmy 12 hours ago||
how so? that's what they do - incomparably faster than dealing with JS
avarun 13 hours ago||
Why did they skip version 3?
MichaelNolan 12 hours ago||
As a joke. Back when 2 came out, they promised there would never be a version 3. I.e., no breaking changes. Then they realized they did need to make a breaking change, so the only way to be true to their promise was to skip version 3.
SoKamil 8 hours ago|||
Exponential versioning. Next major would be 8.
_doctor_love 12 hours ago||
Carson promised they'd never do a version 3...but he never said they couldn't do a version 4.
gwking 12 hours ago||
I'm so pumped for v8!
recursivedoubts 12 hours ago||
this guy gets it
tflinton 5 hours ago|
I just discovered this and it’s exactly what I’ve been hoping for since 2016. I’m just sorry I’m JUST finding out about it.
More comments...