3 ms·
One frustration I have with OOB elements in HTMX: 1. If the element is out-of-band, it MUST have `htmx-swap-oob="true"` in it, or it may be discarded / cause u
by gwd 1y ago
One frustration I have with OOB elements in HTMX:
1. If the element is out-of-band, it MUST have `htmx-swap-oob="true"` in it, or it may be discarded / cause unexpected results
2. If the element is not out-of-band, it MUST NOT have `htmx-swap-oob="true"` in it, or it may be ignored.
This makes it hard to use the same server-side HTML rendering code for for a component that may show up either OOB or not; you end up having to pass down "isOob" flags, which is ugly and annoying.
- leg100 1y agoI think Datastar has the better approach here with making OOB the default. I suspect HTMX's non-OOB default makes more sense for very simple requirements where you simply replace the part of the DOM from which the action was triggered. But personally, situations where OOB is necessary is more typical. Interestingly, elements sent via the HTMX websocket extension [1] do use OOB by default. [1]: https://htmx.org/extensions/ws/ https://htmx.org/extensions/ws/
- yawaramin 1y agoThis really depends on your server-side HTML rendering approach. I have a library in which I can do this: node +@ Hx.swap_oob "true" And this adds the `hx-swap-oob=true` attribute to the given node. It makes it trivial to add on any defined markup in an oob swap. I get that many people prefer template-based rendering, but imho to extract the maximum power from htmx an HTML library that's embedded directly in your programming language is much more powerful. https://github.com/yawaramin/dream-html/blob/f7928616b9ca1d6c002714d9544f8459d220273d/app/app.ml#L5 https://github.com/yawaramin/dream-html/blob/f7928616b9ca1d6...
- gwd 1y ago> to extract the maximum power from htmx an HTML library that's embedded directly in your programming language is much more powerful. I'm actually using gomponents, but the maintainer doesn't like the vibe of adding attributes to existing nodes. https://github.com/maragudk/gomponents/issues/276 https://github.com/maragudk/gomponents/issues/276 (I don't really understand his argument, but in general I'm in favor of maintainers doing what they think is the right thing; and in any case I'm using his work without paying, so not gonna complain.) But even if I had an easy way to add the attribute, the fact that I need to think about that extra step is a bit of extra friction HTMX imposes, which datastar doesn't.