HTMX

HTMX

Open Source

High power tools for HTML.

Frontend Frameworks
HTML-first Frameworks

Published 29 May 2026 · Last updated 30 September 2026

Scores

Popularity2/5

Growing interest as a React alternative for server-rendered apps; still a niche choice.

Learning Curve2/5

HTML-attribute API; quick to learn for anyone who knows HTTP and basic HTML.

Flexibility4/5

Any backend language; the HTML-attribute API is simple, composable, and unopinionated.

Performance5/5

Ships minimal JS; server-rendered HTML swaps are extremely lightweight on the client.

Portability4/5

HTML-attribute approach is framework-agnostic; the backend can be any language.

About HTMX

HTMX is a lightweight (~16kb gzipped) JavaScript library that extends HTML with attributes for making AJAX requests, handling CSS transitions, and consuming WebSockets and Server-Sent Events — all without writing custom JavaScript. Instead of building a JSON API consumed by a separate frontend framework, HTMX lets your server return HTML fragments that are swapped directly into the DOM.

Hypermedia-driven architecture. HTMX embraces the original web model: the server is the source of truth, responses are HTML, and navigation happens via hypermedia controls. You annotate HTML elements with attributes like hx-get, hx-post, hx-target, and hx-swap to declaratively define interactions. This eliminates the need for a separate REST/JSON API layer and a client-side rendering framework in many cases.

Backend-agnostic. HTMX works with any server that can return HTML — Django, Flask, FastAPI, Rails, Laravel, Spring Boot, Go's net/http, Gin, Express, and more. There is no build step, no npm, and no bundler. You include a single <script> tag and start adding attributes.

The core attribute set has stayed stable across major versions: hx-get/post/put/patch/delete for HTTP methods, hx-target for DOM targeting, hx-swap for swap strategies (innerHTML, outerHTML, beforeend, etc.), and hx-trigger for event-based activation.

Extension ecosystem. Official extensions add capabilities like client-side template rendering, path delegation, response handling with hyperscript, and debugging tools. The hx-on attribute provides inline event handling for simple cases.

HTMX is particularly well-suited for server-rendered applications, internal tools, dashboards, CRUD-heavy interfaces, and teams that want to avoid the complexity of SPA frameworks like React, Vue, or Angular.

Key Features

  • AJAX via HTML attributes: hx-get, hx-post, hx-put, hx-patch, hx-delete with no JavaScript
  • CSS Transitions and animations triggered by DOM swaps
  • WebSocket and Server-Sent Events support via hx-ws and hx-sse attributes
  • Declarative DOM targeting: hx-target and hx-swap control where and how HTML fragments are inserted
  • Event-driven triggers: hx-trigger supports click, load, reveal, intersect, and custom events
  • Backend-agnostic: works with any server that returns HTML (Python, Go, Ruby, PHP, Java, etc.)
  • No build step, no npm, no bundler; single script tag inclusion (~16kb gzipped)
  • Extension system for client-side templates, path delegation, and more

Pros

  • Dramatically simpler than SPA frameworks — no build tools, no npm, no client-side state management
  • Works with any backend language; ideal for teams with strong server-side skills
  • Tiny footprint (~16kb gzipped) with no framework runtime overhead
  • Excellent for server-rendered apps, CRUD interfaces, and internal tools
  • Progressive enhancement — pages work without HTMX, enhanced with it
  • Strong community and excellent essays/reference docs at htmx.org

Cons

  • Not suited for highly interactive client-heavy apps (real-time editors, complex drag-and-drop UIs)
  • Server returns HTML fragments — can lead to larger response payloads than JSON APIs for data-heavy views
  • Smaller ecosystem than React/Vue — fewer third-party component libraries and pre-built UI kits
  • Debugging can be harder when complex hx-trigger chains create implicit state machines
  • Less relevant for teams already invested in a SPA architecture or requiring offline-first capabilities

HTMX Pricing

Open Source

Tech Stacks with HTMX

HTMX + Django

Project

A server-driven web stack where Django renders HTML templates and HTMX adds dynamic interactions without writing JavaScript. Ideal for teams that want fast iteration on CRUD-heavy apps and dashboards with minimal frontend complexity.

Frontend

Backend

Programming

Databases

Hosting

Database:
Deploy on:
Authentication add-on:
CI/CD add-on:
Containerization add-on:
Observability add-on:
Email add-on:
Payments add-on:
Styling add-on:
Interactivity add-on:
Analytics add-on:

HTMX + FastAPI

Project

A lightweight, fast Python stack. FastAPI serves HTML fragment endpoints, HTMX swaps them into the DOM, and Tailwind CSS is an optional styling addition. Great for modern server-driven apps with async Python backends.

Frontend

Backend

Programming

Databases

Hosting

Database:
Deploy on:
Authentication add-on:
CI/CD add-on:
Containerization add-on:
Observability add-on:
Email add-on:
Payments add-on:
Styling add-on:
Interactivity add-on:
Analytics add-on:

HTMX + Go (Gin)

Project

A high-performance server-driven stack. Go with Gin serves HTML templates and fragment endpoints; HTMX handles browser-side DOM swaps. Minimal footprint, fast cold starts, excellent for performance-critical web apps.

Frontend

Backend

Programming

Databases

Hosting

Deploy on:
Authentication add-on:
CI/CD add-on:
Containerization add-on:
Observability add-on:
Email add-on:
Payments add-on:
Styling add-on:
Interactivity add-on:
Analytics add-on:

Tools Related to HTMX

Works well with HTMX(8)

HTMX and Alpine.js are commonly paired in hypermedia-driven stacks — HTMX handles server round-trips and DOM swaps, while Alpine manages local client-side UI state like toggles, modals, and dropdowns that do not need a server request.

FastAPI serves Jinja2 HTML templates that HTMX swaps into the page — a lightweight alternative to a full SPA for Python backends; FastAPI returns HTML fragments, HTMX handles the DOM updates.

HTMX was designed to work with server-side rendering frameworks like Django — Django returns partial HTML fragments via its template engine, which HTMX swaps into the page without a full reload.

Flask serves HTMX-compatible HTML fragments via Jinja2 templates — Flask's request/response cycle maps cleanly to HTMX's partial HTML swap model.

Express is commonly used as an HTMX-compatible backend — Express serves Jinja/EJS HTML templates that HTMX can swap into the page for dynamic updates without a frontend framework.

Gin (Go) serves HTMX-compatible HTML via Go's html/template package — Go's net/http handlers return HTML fragments that HTMX swaps in; a common Go alternative to React for server-rendered UIs.

Alternatives to HTMX(6)

htmx adds server-driven interactivity to any HTML without a framework; Vue builds reactive client-side UIs.

htmx enhances server-rendered HTML with partial updates — no JS framework needed; React builds full client-side UIs.

htmx adds server-driven interactivity without a JS framework; Angular builds full SPAs with opinionated structure.

Next.js is React SSR with a full JS framework; htmx adds interactivity to server-rendered HTML from any backend.

htmx enhances server-rendered HTML without a JS framework; Svelte is a compile-time JS framework for building reactive UIs — different paradigms.

Both avoid the full JS SPA model; Astro ships zero JS by default for static content, htmx adds server-driven interactivity to any backend.

Tags

Open SourceWeb

Details

License
0BSD
Maintained
Yes
Primary language
JavaScript
Domain
Frontend
GitHub stars
49.5k
Stars updated
2026-09-23