- htmx 4.0 मौजूदा
XMLHttpRequest-आधारित संरचना को पूरी तरह fetch()-केंद्रित asynchronous संरचना से बदलने वाला एक बड़ा rebuild version है
- attribute inheritance पद्धति को implicit से बदलकर
:inherited explicit declaration किया गया है, जिससे code clarity और maintainability बेहतर होती है
- history cache को local snapshot storage के बजाय network request-आधारित restore पद्धति में सरल बनाया गया है, जिससे stability बढ़ती है
- streaming responses, SSE, DOM morphing, <partial> tag, View Transition queue जैसी कई नई features को core में शामिल किया गया है
- लंबे समय में codebase simplification और extensibility improvement, और मौजूदा 2.0 users के लिए भी लगातार support की योजना
htmx 4.0 का overview
- htmx 4.0 मौजूदा संरचना को पूरी तरह फिर से लिखता है, और इसमें fixi.js development experience तथा 5 साल के maintenance lessons को शामिल किया गया है
- मुख्य बदलावों को 3 core changes में संक्षेपित किया जा सकता है:
fetch() migration, explicit attribute inheritance, और history cache simplification
The fetch()ening
- Ajax infrastructure को modernize करने के लिए
XMLHttpRequest को fetch() से बदला गया है
- ज़्यादातर use cases पर इसका बड़ा असर नहीं होगा, लेकिन event model
fetch() की asynchronous प्रकृति के अनुसार बदलेगा
- यह बदलाव code simplification और future feature expansion के लिए आधार देता है
explicit attribute inheritance
- मौजूदा implicit inheritance की जगह अब
:inherited modifier के साथ explicit declaration किया जाएगा
- ज़्यादातर users के लिए यह सबसे बड़ा upgrade change है
history cache simplification
- htmx 2.0 का local DOM snapshot cache third-party modifications, hidden state आदि के कारण unstable था
- 4.0 में इसे network request के जरिए restore करने वाले approach में बदल दिया गया है
- cache expansion को optional (opt-in) रूप में दिया जाएगा
- इससे codebase सरल होता है और default behavior की reliability बढ़ती है
जो तत्व बने रहेंगे
hx-get, hx-post, hx-target, hx-boost, hx-swap, hx-trigger जैसे core API वही रहेंगे
:inherited जोड़ने के अलावा, ज़्यादातर projects में मौजूदा code वैसे ही काम कर सकता है
- long-term maintainability और stability बेहतर होगी
upgrade policy
- 2.0 users को upgrade project की ज़रूरत होगी, लेकिन 2.0 को स्थायी support मिलता रहेगा
- 4.0 को 2.x के साथ parallel distribution में जारी किया जाएगा, और
latest में switch 2027 की शुरुआत में अपेक्षित है
- 2.0 behavior को restore करने वाला extension भी दिया जाएगा
नई features का सार
streaming responses और SSE integration
fetch() के Readable Streams support का उपयोग करके partial DOM replacement संभव होगा
- SSE(Server Sent Events) को core feature के रूप में फिर से integrate किया गया है, जिससे progressive content updates संभव होंगे
Morphing Swap
- Idiomorph algorithm के आधार पर DOM merge के दौरान node preservation और deletion decisions बेहतर किए गए हैं
morphInner, morphOuter swap को core में शामिल किया गया है
<partial> tag support
- मौजूदा Out-of-band swap की जटिल syntax को सरल बनाया गया है
<partial> एक template element है, जिसमें hx-target, hx-swap जैसे standard attributes इस्तेमाल किए जा सकते हैं
- Out-of-band swap को फिर से id-based simple replacement तक सीमित किया गया है
View Transition improvements
- visual conflicts को रोकने के लिए transition queue जोड़ी गई है
- CSS transitions मौजूदा तरीके से ही काम करेंगे, लेकिन asynchronous runtime के कारण संरचना सरल होगी
- यह default रूप से enable होगा या नहीं, यह अभी तय नहीं है
event order stabilization
fetch()-आधारित asynchronous संरचना के कारण event order guarantee करना आसान होगा
- एक नया event naming convention पेश किया गया है:
htmx:<phase>:<system>[:<optional-sub-action>]
- उदाहरण:
htmx:before:request
extensibility improvement
async के आधार पर preload और optimistic update extensions दिए जाएंगे
- request/response/swap cycle को extension developers के लिए खोल दिया जाएगा, और
fetch() implementation भी बदली जा सकेगी
- बिना hack के मनचाहा behavior implement किया जा सकेगा
hx-on improvements
overall direction
- htmx 4.0 का लक्ष्य 2.0 जैसा familiar usage experience बनाए रखते हुए bugs कम करना और features बेहतर बनाना है
- code simplification, explicit structure, और asynchronous extensibility के जरिए ज़्यादा stable और modern htmx उपलब्ध कराया जाएगा
development timeline
- alpha version(
htmx@4.0.0-alpha1) अभी उपलब्ध है
- official 4.0.0 release 2026 की शुरुआत से मध्य तक अपेक्षित है
- 2027 की शुरुआत में इसे
latest बनाया जाएगा
- development progress को GitHub
four branch और four.htmx.org पर देखा जा सकता है
1 टिप्पणियां
Hacker News राय
आखिरकार उन्होंने अपना मन बदल लिया और htmx का नया major version जारी करने का फैसला किया
लेकिन, “3.0 नहीं होगा” वाले वादे को निभाने के लिए अगले version का नाम htmx 4.0 रखा
इस पर हल्के-फुल्के अंदाज़ में कहा गया कि तकनीकी रूप से यह सही है
शायद ईमानदारी से इसे 3.0 ही जारी करना बेहतर होता
कहा गया कि htmx 2.0 को स्थायी रूप से support किया जाएगा, इसलिए upgrade करने का कोई दबाव नहीं है
आज के बार-बार बदलते API वाले दौर में इस तरह का रवैया सराहनीय है
लगा कि स्थिरता चाहने वाले लोग अक्सर इससे गलत सीख ले लेते हैं
Python 3.0 की तरह एक बार में बड़े बदलाव ठूँसने के बजाय, क्रमिक release strategy बेहतर है
उदाहरण के लिए 2.1, 4.0, 5.0 जैसी releases में बदलाव बाँटकर लाए जाएँ तो उन्हें संभालना बहुत आसान होता है
Django की तरह कई versions में compatibility चरण बनाए रखने का तरीका अपनाने की सिफारिश की गई
hx-targetattribute का विवरण उलझाऊ लगा“inherited” की जगह “inheritable” या “inherit” ज़्यादा स्वाभाविक लगता है
मज़ाक में “bequeath” भी सुझाया गया
HTMX का विचार और Hypermedia दर्शन शानदार लगा
SPA माहौल से निकलकर Datastar चुना गया, क्योंकि सीखने में लगाए गए प्रयास के मुकाबले इसकी scalability ज़्यादा लगी
सर्वर से ब्राउज़र तक signals को सीधे push करके polling code हटा दिया गया, जिससे complexity काफी कम हुई
Alpine.js पर निर्भरता भी खत्म हो गई, इसलिए code सरल हुआ, और streaming-आधारित full view refresh भी compression की वजह से प्रभावी ढंग से काम करता है
अगर आप SPA पृष्ठभूमि से आते हैं, तो Datastar और HTMX दोनों आज़माने की सलाह दी गई
fetch()पर स्विच करके Readable Stream का उपयोग करना दिलचस्प लगाHTMX का काफी इस्तेमाल करने के बावजूद, Datastar की SSE-आधारित streaming ज़्यादा आकर्षक लगी, इसलिए इन दिनों उसी को प्राथमिकता दी जा रही है
HTMX की प्रगति का स्वागत किया गया, लेकिन Datastar को अधिक standards-friendly और flexible API देने वाला माना गया
कहा गया कि छोटे से package में Fetch, SSE, declarative signals, DOM morphing जैसी कई सुविधाएँ शामिल हैं
इसलिए सवाल उठाया गया: “फिर HTMX क्यों इस्तेमाल करें?”
Datastar event stream-केंद्रित है, इसलिए real-time dashboard या games के लिए उपयुक्त हो सकता है, लेकिन ज़्यादातर web apps के लिए HTMX की सरलता अधिक फ़ायदेमंद है
संबंधित संदर्भ: Datastar निबंध, Less HTMX is More
“यह इतना परफेक्ट है कि अब कोई major version नहीं आएगा” जैसी बात से आखिरकार विकास की ज़रूरत को मान लेने पर चुटकी ली गई
“अब event naming standard बदला जाएगा” वाले हिस्से का हवाला देते हुए इसे JavaScript से बचने की कोशिश पर व्यंग्य कहा गया
फिर भी यह माना गया कि HTML में इरादा व्यक्त कर पाने की सुविधा उपयोगी है
कहा गया कि लेख बहुत स्पष्ट था और उससे API design philosophy के बारे में काफी कुछ सीखा जा सकता है
fetchऔर HTMX को साथ इस्तेमाल करने के लिए xhr-fetch-proxy बनाया गया था,और कहा गया कि इस बदलाव से अब और ज़्यादा संभावनाएँ खुलेंगी
प्रोजेक्ट लिंक
यह विचार fixi.js से सीखा गया बताया गया