3 ms·
Building Progressively Enhanced Forms Using htmx
- arthurcolle 2mo agoVideo doesn't seem to be rendering, has 0:00 and 0:00 as start and end times
- watermelon0 2mo agoWorks for me in Firefox. It's h264/mp4.
- pekim 2mo agoAnd for me in Chrome.
- QuantumNomad_ 2mo agoVideo codec is avc1. I think in Safari on iOS this codec is not available on iPhones older than iPhone 15 Pro.
- arthurcolle 2mo agoI have an iPhone 15 Pro Max. Damn you Tim Apple
- QuantumNomad_ 2mo agoBut then that codec should work. Maybe there is something else about the video that iOS doesn’t like also?
- arthurcolle 2mo agoI finally saw the video. I believe this could have been a .gif
- torarvid 2mo ago16 Pro here. Also doesn’t work
- yawaramin 2mo ago> Fiddling with out-of-band swaps to solve this feels error prone and overly hard to maintain. This is almost always because of using a string-based templating system. If you use a language-embedded HTML generation library, it represents HTML fragments as first-class values in your language, and you can compose them together in flexible ways. This makes out-of-band swaps very simple.
- dhamidi 2mo agoHTMX is great, Hypermedia and HATEOAS are great, HTML-string-templates are not great. For some reason they are still popular. A fun experiment is to use a JS runtime with React but render the component tree on the server onto a Writeable stream. Very easy to understand, no useEffect footguns, great composability.
- wmanley 2mo agoYou mean by having a function per fragment? I don’t think this solves the hard to maintain bit - which is “which fragments should I regenerate/send”, and how do I keep that list up to date as my app evolves. FWIW I have a potential solution: to show live data in my app I use an SSE stream of OOB swaps. On every relevant change to the database I regenerate the HTML and compare it to the previously generated html to create OOB swaps (including hx-preserve). I send that down so the browser can update. The same approach could be used for normal POSTs. On a POST generate the HTML before and after modifying the database and diff them to generate OOB swaps.
- eliasdejong 2mo ago> FWIW I have a potential solution: to show live data in my app I use an SSE stream of OOB swaps. You might be interested in Datastar [1], which is like htmx but centered around Server-Sent Events. You don't have to do diffing yourself in application code because it's already handled by the framework under the hood through the "idiomorph" DOM morphing algorithm. [1] https://data-star.dev/ https://data-star.dev/
- yawaramin 2mo agoSure, that's basically what Phoenix LiveView does. But I would submit that you don't actually need that level of complexity with a bit of judicious UI/UX design, where as the app grows in scale, the number of oob swaps to keep track of doesn't grow as much. There are many ways to skin the cat.