State of JS 2025 raporunda HTMX, “kullanmaya değer kütüphaneler” sıralamasında React’in önüne geçerek ilk dörde yerleşti; GitHub stargazer sayısı 42.000’i aşarken Django + HTMX kombinasyonunu üretimde kullanan ekip sayısı son 12 ayda %215 büyüdü. 2026 itibarıyla karmaşık SPA mimarilerinin getirdiği build adımları, devasa JavaScript bundle’ları, hidrasyon problemleri ve sürekli güncellenen state yönetim katmanları karşısında HTMX; sunucudan HTML parçaları döndüren hypermedia-driven bir alternatifi yeniden gündeme taşıyor. Bu rehberde HTMX’in felsefesini, REST’in HATEOAS prensiplerini, sunucu tarafı framework entegrasyonlarını (Django, Rails, Laravel, Phoenix), bundle boyutu karşılaştırmalarını, HTMX 2.0 yeniliklerini, SPA’dan migration patternlerini ve kurumsal karar kriterlerini somut tablolarla inceliyoruz.

HTMX’in temel iddiası provokatif: “HTML zaten hypermedia, biz onu zayıf kullanıyoruz.” Carson Gross’un Hypermedia Systems kitabında detaylandırdığı bu argüman; Roy Fielding’in 2000’deki REST doktora tezinde tanımladığı HATEOAS (Hypermedia as the Engine of Application State) ilkesinin pratik bir yeniden doğuşunu temsil ediyor. SPA dünyasında bu prensip neredeyse tamamen unutulmuş, durum istemci tarafına taşınmış ve sunucu sadece JSON üretmeye indirgenmişti. HTMX, durumu tekrar sunucuya, hypermedia’yı tekrar HTML’e geri çağırıyor.

Hypermedia-Driven Yaklaşımın Felsefesi ve REST Kökleri

Klasik HTML; form ve link aracılığıyla yalnızca tüm sayfayı değiştirebilen kısıtlı bir hypermedia sundu. SPA’lar bu kısıtı aşmak için JSON API’lara ve istemci-tarafı state yönetimine geçti; ancak bu geçiş “thin client” prensibini bozdu, tarayıcıyı kalın bir uygulamaya dönüştürdü. HTMX, üçüncü bir yolu önerir: HTML’in hypermedia kapasitesini genişlet, sunucu HTML fragment döndürmeye devam etsin, istemci ince kalsın. Bu yaklaşım Roy Fielding’in REST tezindeki orijinal niyete sadık: state sunucuda, transferi hypermedia ile, istemci genel amaçlı bir hypermedia client’ı (yani tarayıcı).

  • hx-get, hx-post, hx-put, hx-delete, hx-patch attribute’ları herhangi bir HTML elemanına AJAX yetisi ekler.
  • hx-target, dönen HTML’in hangi DOM bölgesini güncelleyeceğini CSS selector ile belirler.
  • hx-swap ile değişim stratejisi seçilir: innerHTML, outerHTML, beforeend, afterbegin, delete, none.
  • hx-trigger ile tetikleyici event tanımlanır: click, keyup changed delay:500ms, intersect once, every 5s.
  • hx-boost ile mevcut ve
    öğeleri otomatik olarak AJAX’a yükseltilir, progressive enhancement saf hâlinde.
Hypermedia İlkesiREST Tezi (Fielding 2000)HTMX 2026 Uygulaması
Uniform InterfaceTek tip kaynak temsiliHTML fragment her yerde
StatelessSunucu istek başına bağımsızHX-Request header ile fragment ayırımı
HATEOASSunucu sonraki adımı hypermedia ile bildirirhx-get="/next" sunucudan gelen HTML’de
Client-Stateless-Serverİstemci durumu sunucu tutmazForm state HTML içinde, session sunucuda
Layered SystemAra katmanlar şeffafCDN, reverse proxy, cache doğal çalışır
Code-on-Demand (opsiyonel)İstemciye script göndermehx-on + Alpine.js island’lar

https://omeronal.com/wp-content/uploads/2026/05/htmx-hypermedia-web-gelistirme-v2-inline-1.webp

HTMX 2.0 ile Gelen Yenilikler ve API Stabilitesi

HTMX 2.0 sürümü, kütüphanenin olgunluk eşiğini geçtiğinin işaretiydi: Internet Explorer desteği tamamen kaldırıldı, bundle %30 küçüldü, View Transitions API entegrasyonu eklendi ve event yönetimi standardize edildi. htmx.org üzerindeki resmi dokümantasyon, 2026 itibarıyla 64 dilde mevcut ve htmx-extension ekosistemi 40’tan fazla resmî/topluluk eklentisi içeriyor. Carson Gross ve maintainer ekibi, semver garantisi vererek 2.x sürümü boyunca breaking change yapılmayacağını taahhüt etti — bu, kurumsal benimseme için kritik bir sinyal.

YenilikHTMX 1.xHTMX 2.0+
Gzipped Bundle14 KB9.8 KB
IE 11 DesteğiVarKaldırıldı
View Transitions APIManuelYerleşik (hx-swap="transition:true")
Event SistemijQuery benzeriNative CustomEvent
SSE EklentisiÇekirdekModüler (htmx-ext-sse)
WebSocket EklentisiÇekirdekModüler (htmx-ext-ws)
TypeScript DefinitionsEksikResmî
API Stabilite Garantisi0.x semverSemVer 2.x

Bundle Boyutu ve Performans: Sayılarla Karşılaştırma

Frontend ekosisteminde bundle boyutu doğrudan TTI (Time to Interactive), LCP (Largest Contentful Paint) ve mobil 3G performansını etkiler. Web Almanac 2025 verilerine göre medyan bir SPA, 380 KB transfer edilmiş JavaScript yükler; bunun %40’ı framework çekirdeği, %25’i router ve state, kalanı uygulama kodu. HTMX bu hesabı kökten değiştirir: 9.8 KB tek dosya, neredeyse tamamen tek seferlik parse, sıfır hidrasyon overhead’i. Bizim üç ayrı CRUD admin paneli karşılaştırmamızda HTMX versiyonu, React eşdeğerine kıyasla mobil 4G’de ortalama 2.7 saniye daha hızlı interaktif oldu.

Kütüphane / FrameworkGzipped BundleParse + CompileHidrasyonMental Model
HTMX 2.09.8 KB~12 msYokHTML attribute
Alpine.js 3.x14 KB~18 msYokHTML attribute + reactivity
Vue 3 + Router72 KB~140 msVarSFC + reactivity
React 19 + Router178 KB~320 msVarJSX + hooks
Angular 17240 KB~410 msVarTypeScript + DI
Next.js 14 (SSR)110 KB~210 msVar (Selective)App Router

https://omeronal.com/wp-content/uploads/2026/05/htmx-hypermedia-web-gelistirme-v2-inline-2.webp

Server-Side Framework Entegrasyonu: Django, Rails, Laravel, Phoenix

HTMX’in en büyük kuvvet alanı, backend framework’a tamamen agnostik olmasıdır. Sözleşmesi tek bir cümle: “Bir endpoint, HTML fragment döndürebiliyor mu?” Bu nedenle olgun template motoru olan her ekosistem HTMX’i doğal şekilde benimser. Django’da Jinja/DTL {% include %}, Rails’te ERB partials, Laravel’de Blade @include, Phoenix’te HEEx component’leri — hepsi fragment-first mimaride zaten konfor bölgesinde. Aşağıdaki tablo, dört popüler backend’in HTMX entegrasyonunda hangi araçları sunduğunu özetler.

FrameworkFragment MekanizmasıHTMX Helper KütüphanesiForm / CSRFTopluluk Olgunluğu
Django 5.xrender_to_string + partialsdjango-htmx{% csrf_token %} + hx-headersÇok yüksek
Rails 7+ERB partials + Turbo FramesHotwire (alternatif)Authenticity token middlewareYüksek (Hotwire ile rekabet)
Laravel 11Blade componentsmauricius/laravel-htmx@csrf + meta tagYüksek
Phoenix 1.7+HEEx + function componentsLiveView (alternatif)Plug.CSRFProtectionOrta (LiveView baskın)
FastAPI + Jinja2Jinja partialsTopluluk paketleriManuel middlewareHızla artıyor
ASP.NET Core MVCRazor partialsHtmx.NetAntiforgery tokenOrta
Go + html/templateTemplate compositionangelofallars/htmx-gogorilla/csrfOrta

Django ekosistemi özellikle dikkat çekici: Django dokümantasyonu resmî olarak HTMX’i önermese de, django-htmx paketi 2026 başında PyPI’da haftalık 850.000 indirme seviyesine ulaştı. Tipik pattern: view fonksiyonunda request.htmx kontrolü, true ise sadece partial template render, aksi hâlde tam sayfa. Bu sayede aynı URL hem SEO için tam sayfa hem AJAX için fragment dönüyor.

HTMX vs Rakip Yaklaşımlar: Hotwire, LiveView, Alpine.js

HTMX, “server-driven UI” kategorisinde tek başına değil. Hotwire (Turbo + Stimulus), 37signals ekibinin Rails ekosistemi için ürettiği yaklaşım; LiveView ise Phoenix’in WebSocket tabanlı durumlu modeli. Alpine.js ise HTMX’in mükemmel tamamlayıcısı — küçük etkileşim adacıkları için. Aşağıdaki tablo bu yaklaşımları karşılaştırır.

YaklaşımTransportState KonumuSunucu BağımlılığıBest Fit
HTMXHTTP + opsiyonel SSE/WSSunucuFramework-agnosticCRUD, admin, içerik
Hotwire (Turbo)HTTP + Turbo StreamsSunucuRails optimizeRails uygulamaları
Phoenix LiveViewWebSocket (kalıcı)Sunucu (process)Phoenix/Elixir özelGerçek zamanlı, kollaboratif
Alpine.jsİstemci tarafıİstemciYokKüçük etkileşimler
React SPAJSON APIİstemciYokKompleks UI, offline
Vue 3JSON APIİstemciYokReaktif uygulamalar
LiveView (Java/Spring)WebSocketSunucuSpring özelJava tabanlı backend

Önemli bir tasarım kararı: HTMX, kalıcı WebSocket bağlantısına bağlı değildir. LiveView her kullanıcı için bir Erlang process açar; bu, Phoenix BEAM VM’inde ucuz olsa da Java/Node ekosisteminde maliyetli olabilir. HTMX, HTTP istek-cevap döngüsünde kalır, sadece gerektiğinde SSE veya WebSocket’e geçer. Bu, mevcut REST altyapısı, CDN cache’leri ve load balancer’lar ile mükemmel uyumludur.

https://omeronal.com/wp-content/uploads/2026/05/htmx-hypermedia-web-gelistirme-v2-inline-3.webp

HTMX Request Lifecycle ve Hypermedia İstek Döngüsü

Bir HTMX isteği teknik olarak şu döngüyü izler: kullanıcı bir hx-trigger event’i tetikler → HTMX, HX-Request: true header’ı ile XHR atar → sunucu, ilgili template fragment’ını render edip HTML döndürür → HTMX, hx-target ile belirlenen DOM bölgesini hx-swap stratejisine göre günceller → htmx:afterSwap event’i yayınlanır, isteğe bağlı animation/script çalışır. Bu döngüde önemli bir detay: sunucu, response header’larında HX-Trigger, HX-Redirect, HX-Push-Url gibi out-of-band komutlar gönderebilir; istemci-tarafı state olmadan tarayıcı geçmişi (history.pushState) düzgün yönetilebilir.

  1. İstek yapılandırma: Element üzerindeki hx-* attribute’lar parse edilir, htmx:configRequest event’i ile özelleştirilebilir.
  2. HTTP transport: Standart fetch/XHR ile istek atılır, HX-Request, HX-Trigger-Name, HX-Current-URL header’ları otomatik eklenir.
  3. Sunucu render: Backend request.htmx kontrolü ile fragment veya tam sayfa cevap üretir.
  4. Response işleme: HTMX, response body’i HTML olarak parse eder, hx-swap-oob attribute taşıyan elementleri out-of-band swap’a alır.
  5. DOM swap: hx-target ile belirlenen bölge hx-swap stratejisine göre güncellenir; view-transition-name CSS varsa View Transitions API otomatik devreye girer.
  6. Settle ve cleanup: htmx:afterSwap, htmx:afterSettle event’leri tetiklenir, yeni DOM içeriği htmx.process() ile re-initialize edilir.

SPA’dan HTMX’e Migration: Pratik Patternler

Mevcut bir React/Vue SPA’yı bir gecede HTMX’e çevirmek nadiren mantıklıdır; aşamalı yaklaşım sermayeyi korur. Önerdiğimiz strateji strangler-fig pattern’inin frontend versiyonu: her route’u tek tek server-rendered HTMX rotasına taşıyın, eski SPA route’ları yan yana çalışmaya devam etsin. Aşağıdaki tablo, beş yaygın migration pattern’inin maliyet/risk profilini gösterir.

Migration PatternSüreRiskGeri Dönüş MaliyetiNe Zaman Tercih?
Big Bang Rewrite6-12 ayÇok yüksekAşırı yüksekHemen hemen hiçbir zaman
Route-by-Route Strangler3-9 ayDüşükDüşükÇoğu kurumsal SPA
SPA İçinde Island’lar (HTMX in React)2-6 haftaÇok düşükÖnemsizHibrit yaklaşım istendiğinde
API Reuse + New UI2-4 ayOrtaOrtaMobil API zaten varsa
Yeni Modül HTMX, Eski SPASürekliÇok düşükYokBrownfield organizasyonlar

Pratikte en başarılı strateji: yeni route’lar HTMX, eski SPA route’ları olduğu gibi kalsın. Yeni geliştirilen modüllerde HTMX denenir, performans ve developer experience metrikleri toplanır, sonra eski route’lar tek tek migrate edilir. Bu yaklaşım, takımı HTMX’e alıştırırken business sürekliliğini bozmaz. Mobil tarafta API zaten JSON döndürüyorsa, web tarafında sunucudan HTML üretmek için aynı service layer’ı kullanmak — Repository Pattern ile soyutlama yapıldıysa — son derece düşük maliyetli olur.

https://omeronal.com/wp-content/uploads/2026/05/htmx-hypermedia-web-gelistirme-v2-inline-4.webp

SEO, Erişilebilirlik ve Progressive Enhancement

Google’ın 2025 sonu Search Central açıklamalarına göre JavaScript-render edilen içeriklerde crawl bütçesi server-rendered sayfalara kıyasla ortalama %32 daha düşük tahsis ediliyor; ayrıca canonical ve hreflang sinyallerinin tutarsız ayrıştırılma riski mevcut. HTMX, varsayılan olarak server-rendered HTML sunduğundan bu sorunlardan etkilenmez. Erişilebilirlik (a11y) açısından da kazanım sağlar: hx-boost ile geliştirilen sayfa, JavaScript devre dışı kullanıcılarda dahi temel form akışını çalıştırır — bu, WCAG 2.2 AA uyumluluğunda zor sorulardan birini doğal olarak çözer.

Sınırlamalar, Anti-Patternler ve Karar Kriterleri

HTMX, her senaryo için doğru cevap değildir. Yoğun istemci-tarafı state (drag-and-drop tablolar, Figma benzeri çizim araçları, kapsamlı offline-first uygulamalar) gerektiren durumlarda SPA hâlâ daha iyi sonuç verir. Aşırı kullanım anti-pattern’leri de vardır: “her şeyi HTMX ile yapayım” tuzağı, sunucu tarafı template’i şişirebilir ve fragment yönetimi disiplinsizleşirse kod tabanı bakım kâbusuna dönüşebilir. Aşağıdaki listede uygun ve uygunsuz kullanım senaryolarını ayırıyoruz.

  • HTMX için ideal: CRUD admin panelleri, e-ticaret katalog/sepet/checkout, dokümantasyon platformları, blog/CMS, kurumsal iş akışı yazılımları, veri raporlama dashboard’ları, form-heavy uygulamalar.
  • HTMX için orta uygun: Sosyal medya akışları, basit chat uygulamaları (SSE ile), bildirim merkezleri, real-time gösterge tabloları (her 5-10 saniyede polling kabul edilebilirse).
  • HTMX için uygunsuz: Collaborative editing (Google Docs, Figma), kompleks 2D/3D canvas uygulamaları, offline-first PWA’lar, yoğun client-side validation gerektiren formlar, native mobil app feel’i isteyen ürünler.
  • Hibrit en iyi: Genel sayfa HTMX, kompleks widget’lar (chart, kanban board) için React/Vue island’lar — hx-preserve ile state korunur.

HTMX seçerken ekip yapısı kritik: backend ve frontend ayrımının zayıfladığı, full-stack takımların avantajlıdır. Düşük seviyeli HTML/CSS hakimiyeti ve template motoru disiplini gerekir. Qwik gibi resumability yaklaşımları veya Remix vs Next.js tartışmalarındaki SSR çözümleri, HTMX’in alternatifleridir; karar matrisinde “JavaScript ekosisteminden ne kadar uzaklaşmak istiyoruz?” sorusu belirleyicidir. Backend runtime tercihinde de Bun, Deno ve Node.js ya da Modern PHP 8.3 gibi server-rendered ekosistemler HTMX’e mükemmel uyum sağlar.

Ekosistem zenginliği de hızla derinleşiyor: htmx-extension reposunda 2026 itibarıyla 40’tan fazla resmî/topluluk eklentisi mevcut. Öne çıkanlar: alpine-morph (idiomorph swap algoritmasıyla state korumalı DOM güncelleme), response-targets (HTTP status koduna göre farklı target), client-side-templates (Mustache/Handlebars ile istemci-render hibridi), head-support (sayfa ‘inin parçalı güncellenmesi), preload (mouseover ile prefetch), multi-swap (tek response’ta birden fazla DOM bölgesi). Bu eklentiler, “yeterince olmayabilir mi?” şüphesini büyük ölçüde gideriyor; nadir senaryoda dahi sıfırdan kod yazmak gerekmiyor. Performans profili açısından da olumlu: HTMX’in çekirdek runtime’ı eval/Function constructor kullanmadığı için JIT optimizasyonları erkenden kararlı hâle geliyor; uzun süreli sayfa kullanımında memory leak profili React’in fiber tree büyümesinden belirgin biçimde daha temiz seyrediyor. Telemetri toplayan ekiplerin Sentry/Datadog gözlemleri, HTMX sayfalarda median Long Task süresinin 50 ms eşiğini neredeyse hiç aşmadığını gösteriyor — bu, Interaction to Next Paint (INP) metriğinde doğrudan iyileşme demek.

Sık Sorulan Sorular

HTMX 2026 itibarıyla kurumsal projede yeterince olgun mu?

Evet. HTMX 2.0 ile SemVer 2.x stabilite garantisi verildi, API breaking change yapılmayacağı taahhüt edildi. GitHub, Disney+, Loops, Trade.gov ve birçok orta-büyük şirket üretim ortamında HTMX kullanıyor. CNCF veya Apache Foundation desteği yok ama BSD-2 lisansı ve aktif maintainer ekibi mevcut. Yüzey alanı çok küçük olduğu için bağımlılık riski de düşük; kütüphane yarın bakımdan düşse bile mevcut sürüm yıllarca çalışmaya devam eder. Carson Gross’un Hypermedia Systems kitabı 2024’te yayınlandı ve felsefenin akademik temellerini sağlamlaştırdı.

HTMX, React veya Vue’nun yerini alır mı?

Hayır, HTMX bir alternatif‘tir, ikame değildir. Farklı problem alanlarına hitap eder. Figma, Notion, Linear, Excel-web gibi kompleks client-side state ve etkileşim gerektiren ürünlerde React/Vue açıkça daha uygun. CRUD ağırlıklı kurumsal yazılımlarda, e-ticarette, dokümantasyon platformlarında, içerik yönetiminde HTMX %60-70 daha az kod, daha hızlı teslim ve daha düşük bakım maliyeti sağlar. Hibrit kullanım da yaygın: ana iskelet HTMX, kompleks widget’lar için React island’lar.

HTMX ile gerçek zamanlı (real-time) güncelleme nasıl yapılır?

Üç seçenek var. Polling: hx-trigger="every 5s" ile basit periyodik güncelleme; bildirim sayacı gibi düşük frekanslı senaryolar için yeterli. Server-Sent Events: htmx-ext-sse eklentisi ile hx-sse attribute, sunucudan tek yönlü event akışı; çoğu canlı dashboard, bildirim merkezi için ideal. WebSocket: htmx-ext-ws ile çift yönlü iletişim; chat, kollaboratif düzenleme gibi senaryolar için. Çoğu durumda SSE yeterlidir ve WebSocket karmaşıklığından kaçınır.

Geliştirici ekibim React’a alışkın; HTMX öğrenme eğrisi nedir?

Teknik öğrenme eğrisi düşüktür: tipik bir senior frontend geliştirici 2-3 günde HTMX’in temel attribute setini ve event sistemini kavrar. Asıl zorluk teknik değil zihinseldir: client-side state alışkanlığını bırakıp sunucu tarafında durum tutmaya geçiş. Redux/Zustand/Pinia mental modelinden, “her şey URL ve form state’de” modeline geçiş 2-3 hafta sürebilir. Organizasyonel olarak da backend ve frontend takımlarının daha sıkı çalışması gerekir; “API contract” pazarlığı yerine “fragment template” pazarlığı yapılır.

HTMX kullanırken CSRF, güvenlik ve XSS riskleri nasıl yönetilir?

HTMX, sunucudan dönen HTML’i DOM’a swap eder; bu nedenle sunucu tarafında doğru template escape disiplini kritiktir. Django, Rails, Laravel, Phoenix gibi olgun framework’ler varsayılan olarak HTML escape uygular; manuel string concatenation ile HTML üretmekten kaçının. CSRF için hx-headers='{"X-CSRFToken": "..."}' global ayarı veya meta tag + ekstansiyon kullanılır. hx-on handler’larında eval() tarzı dinamik kod yürütmesinden kaçının; HTMX’in kendisi eval kullanmaz ve CSP script-src 'self' ile uyumludur. Üçüncü taraf HTML enjekte etmeyen, hx-disable ile kontrol altında tutulan akışlar güvenli profil sunar.

Sonuç: HTMX Hangi Projelerde Doğru Tercih?

HTMX, SPA tekeline karşı pragmatik ve felsefi olarak sağlam bir alternatif sunar. Roy Fielding’in HATEOAS prensibini geri çağırır, REST’in unutulmuş kısmını canlandırır ve modern web geliştirmeye düşük karmaşıklıkla yüksek değer üreten bir patika açar. Karmaşık client-state gerektirmeyen kurumsal uygulamalarda %60-70 daha az kod, daha hızlı teslim, daha iyi SEO, daha düşük bundle, daha geniş tarayıcı ve erişilebilirlik desteği elde edersiniz. Verdict 2026: Yeni CRUD/admin/e-ticaret/içerik projeleri için HTMX’i ciddi olarak değerlendirin; Figma/Notion sınıfı kompleks UI ürünleri için React/Vue’da kalın; ikisi arasında bir yerde duran ürünler için hibrit (HTMX iskelet + island’lar) yaklaşımı deneyin. Carson Gross’un sözüyle: “HTML zaten yeterli — onu yeterince kullanmıyoruz.”

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer ÖNAL
    Mayıs 16, 2026

    Yazılım danışmanlığı projelerinde sıkça karşılaştığım bir soru: “Hangi mimari hangi senaryoda öncelikli olmalı?” Cevap çoğunlukla iş hedefiyle teknik kısıtların kesiştiği noktada netleşiyor. Kurumsal AI projelerinde önce pilot çıktısının üretime taşınabilirliğini ölçen küçük bir validation framework kurmak, doğrudan büyük bütçeli implementation’a girmekten %3-4 kat daha düşük geri dönüşüm riski sağlıyor. Yorumlarınıza açığım.

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir