htmx 0.4.0 has been released!

htmx 0.4.0 Release I’m pleased to announce the 0.4 release (https://unpkg.com/browse/htmx.org@0.4.0/) of htmx. Changes New Features • Now support the HX-Redirect and HX-Refresh response headers

htmx 0.4.0 Release I’m pleased to announce the 0.4 release (https://unpkg.com/browse/htmx.org@0.4.0/) of htmx.

Changes New Features

• Now support the HX-Redirect and HX-Refresh response headers for redirecting client side and triggering a page refresh, respectively

• hx-vars now overrides input values

tags in responses will be used to update page titles</p> <p>• All uses of eval() have been removed in favor of Function</p> <p>• hx-vals is available as a save alternative to hx-vars. It uses JSON.parse() rather than evaluation, if you wish to safely pass user-provided values through to htmx.</p> <p>Bug Fixes</p> <p>• Eliminated perf issues around hx-boost in large pages that are not using that attribute</p> <p>• Fixed bug which prevented evaluation when a script tag was the leading content in a response</p> <p>Enjoy!</p> </div> <section class="article-references-section p-0"> <ul class="reference-list list-unstyled"> <li> Reference: <a href="https://htmx.org/posts/2020-11-16-htmx-0-4-0-is-released/" target="_blank" rel="noopener noreferrer">https://htmx.org/posts/2020-11-16-htmx-0-4-0-is-released/</a> </li> </ul> </section> </div> <form data-controller="nostr--nostr-comment" data-nostr--nostr-comment-publish-url-value="/comments/publish" data-nostr--nostr-comment-csrf-token-value="157dc43dd79a.K37tF1PHmuzctXeEuQ01H6SsXZcoDjz4Q8pLkO1gGU8.XiGAcir_wtux-gO97ndkd9XHE-VAZX6dM4wB-5ovdw5KBplnMZiuq4b-HA" data-nostr--nostr-comment-root="{"tag":"A","value":"30023:247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90:htmx-040-has-been-released","relay":null,"pubkey":"247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90","kind":30023}" data-nostr--nostr-comment-parent="{"tag":"a","value":"30023:247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90:htmx-040-has-been-released","relay":null,"pubkey":"247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90","kind":30023}" data-action="submit->nostr--nostr-comment#publish" class="nip22-comment-form"> <div data-nostr--nostr-comment-target="status"></div> <div class="mb-2"> <label for="comment_content_nip22_comment_69b79a6bc7d05" class="form-label hidden">Comment</label> <textarea id="comment_content_nip22_comment_69b79a6bc7d05" name="comment[content]" class="form-control" rows="3" required placeholder="Write your comment"></textarea> </div> <input type="hidden" name="comment[root]" value='{"tag":"A","value":"30023:247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90:htmx-040-has-been-released","relay":null,"pubkey":"247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90","kind":30023}'> <input type="hidden" name="comment[parent]" value='{"tag":"a","value":"30023:247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90:htmx-040-has-been-released","relay":null,"pubkey":"247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90","kind":30023}'> <div class="actions"> <button type="submit" data-nostr--nostr-comment-target="publishButton" class="btn btn-primary mt-2">Publish Comment</button> </div> </form> <div data-content--comments-mercure-target="loading" data-controller="content--comments-mercure live" data-content--comments-mercure-coordinate-value="30023:247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90:htmx-040-has-been-released" data-live-name-value="Organisms:Comments" data-live-url-value="/_components/Organisms:Comments" id="live-3784415012-0" data-live-props-value="{"payloadJson":" ","current":"30023:247fb701c5654ff95867d56889c7734539c7195f6c9bc117374a8a649afaea90:htmx-040-has-been-released","list":[],"@attributes":{"id":"live-3784415012-0","data-host-template":"199f5e0abe07bc3df65fabd5fd1adf8a","data-embedded-template-index":37844150121},"@checksum":"HXtyeX8dafad7TtvM8KqnFizRHBhed5EzRVuSK3NX2g="}" class="comments" > <div class="comments-list" data-content--comments-mercure-target="list" > <div class="no-comments">No comments yet.</div> </div> </div> </article> </main> <div> <aside id="rightNav"> <header> <button class="close" data-action="click->sidebar-toggle#close" aria-label="Close right sidebar">✕</button> </header> </aside> </div> <div data-controller="ui--back-to-top"> <button class="back-to-top-btn" data-ui--back-to-top-target="button" data-action="click->ui--back-to-top#scrollToTop" aria-label="Back to top" title="Back to top"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> </button> </div> </div> <div data-controller="utility--install-prompt"> <div class="install-prompt-box hidden" data-utility--install-prompt-target="promptBox" > <p>Install this app on your device for quick access?</p> <button data-action="click->utility--install-prompt#install">Yes, install</button> <button data-action="click->utility--install-prompt#dismiss">No thanks</button> </div> </div> <div data-controller="utility--toast" class="toast-container" data-utility--toast-target="container"> </div> <footer> <div class="footer-links mb-3"> <span>Subscriptions:</span> <a href="/subscription/vanity">Vanity Name</a> | <a href="/subscription/active-indexing">Active Indexing</a> | <a href="/subscription/publication-subdomain">Publication Subdomain</a> </div> <div class="footer-links mb-3"> <a href="https://support.decentnewsroom.com" target="_blank">Support</a> </div> <div class="footer-links mb-3"> <a href="/about">About</a> - <a href="/tos">Terms of service</a> - <a href="/feedback">Contact</a> </div> <div class="footer-links mb-3 hidden"> <span>Language:</span> <strong>English</strong> | <a href="/locale/de">Deutsch</a> | <a href="/locale/es">Español</a> | <a href="/locale/fr">Français</a> | <a href="/locale/sl">Slovenščina</a> </div> <p>2026 Decent Newsroom - v0.0.15 Preprint</p> </footer> </body> </html>