HTMX + Rails

IntermediateWeb App

Rails views with HTMX: server-driven interactivity as an alternative or complement to Turbo.

Published 27 September 2026Last updated 16 October 2026

Core Tools
HTMX
HTMX
Ruby on Rails
Ruby on Rails
Ruby
Ruby
HTML
HTML
CSS
CSS
Database
PostgreSQL
MySQL
MariaDB
Hosting
Hetzner
Railway
Render
Fly.io
DigitalOcean

About HTMX + Rails

HTMX + Rails pairs the productivity of Ruby on Rails with HTMX's server-driven interactivity model. Rails already ships with Hotwire (Turbo and Stimulus) for SPA-like navigation and partial updates, but HTMX offers an alternative that some teams find more explicit and predictable. Where Turbo Drive intercepts all navigation automatically and Turbo Frames scope updates by element ID, HTMX requires explicit hx-* attributes on each interactive element, which can be easier to reason about in complex UIs. PostgreSQL is the database, Tailwind CSS is an optional styling addition, and hosting ranges from an affordable VPS to a container platform.

The integration is straightforward: Rails controller actions detect HTMX requests via the HX-Request header and return partial ERB templates instead of full layouts. An HTMX search input triggers a GET /products?q=foo that returns only the results table HTML, and Rails render partial: fits naturally into this pattern. Stimulus controllers can still handle local JavaScript behaviour without interfering with HTMX server communication.

This stack suits Rails teams who want explicit control over which interactions trigger server calls, prefer HTMX's attribute-based model to Turbo's automatic interception, or are migrating existing Rails apps that predate Hotwire. A VPS keeps infrastructure costs low for Ruby applications that do not require serverless scaling.

Key Features

  • ✓HTMX attributes explicitly mark which elements trigger server requests, keeping them predictable and auditable
  • ✓Rails controller actions detect HX-Request header and return ERB partials for HTMX swaps
  • ✓Active Record ORM with associations, scopes, and schema migrations for PostgreSQL
  • ✓Tailwind CSS styling works natively with server-rendered ERB templates
  • ✓Stimulus controllers available for local client-side behaviour alongside HTMX
  • ✓Low-cost VPS hosting, cheaper than PaaS platforms for Ruby workloads

When to Use HTMX + Rails

  • Rails apps where the team prefers HTMX explicit attribute model over Turbo automatic interception
  • Legacy Rails apps being upgraded with interactive features without a full Hotwire migration
  • Admin panels and data management UIs with live search, inline editing, and filters
  • Teams evaluating HTMX as an alternative to component-library approaches in Rails

Pros

  • HTMX explicit attributes make it immediately clear which elements trigger server calls
  • Rails ERB partials map directly to HTMX fragment responses, so there are few new concepts for Rails developers
  • Hetzner VPS significantly reduces hosting costs compared to Heroku or Railway for Ruby apps
  • No conflict with Stimulus: both can coexist in the same Rails app

Cons

  • Rails already ships Hotwire, so using HTMX alongside it creates two competing interactivity systems
  • A self-managed VPS requires manual server management, with no git-push deploys without additional tooling
  • Network round-trips limit interactivity, so it's not suitable for real-time or collaborative UIs
  • Ruby memory usage per process is high, so VPS sizing requires care for traffic spikes

Database Options for HTMX + Rails

PostgreSQL

HTMX + Rails with PostgreSQL

The standard choice: a full PostgreSQL instance on a managed host or your own server, connected from Rails via ActiveRecord, with complete control over configuration and extensions.

MySQL

HTMX + Rails with MySQL

MySQL is one of Rails' three primary supported databases: ActiveRecord's mysql2 adapter maps Ruby models directly to MySQL tables with no code changes beyond the database configuration. A common choice in LAMP-adjacent Ruby deployments.

MariaDB

HTMX + Rails with MariaDB

MariaDB behaves as a drop-in replacement for MySQL in Rails' connection stack via the same mysql2 gem, with no additional configuration required. It's also the default MySQL replacement in many Linux distributions Rails deploys to.

These are highlighted picks. To see all the tools, check the Databases category.

Hosting Options for HTMX + Rails

Hetzner

Deploy HTMX + Rails on Hetzner

A self-hosted VPS running the whole Rails + HTMX app yourself, at the price of managing deployment and updates. Entry-level instances start around €4-5/mo, the cheapest option here.

Railway

Deploy HTMX + Rails on Railway

A container-based platform where the whole Rails + HTMX app deploys as a persistent service, a natural fit for a Puma process holding a live Postgres connection pool. No free tier: the Hobby plan starts around $5/mo in usage credit, plus usage-based billing for CPU, memory, and network.

Render

Deploy HTMX + Rails on Render

The same persistent-service model as Railway, with a genuinely free tier for small Rails apps, built-in cron jobs, and its own CDN for static assets. Free-tier services spin down after inactivity; predictable always-on pricing starts around $7/mo.

Fly.io

Deploy HTMX + Rails on Fly.io

Runs the Rails app as a container close to users across multiple regions, historically a popular choice in the Rails community for its Docker-native deploy model. Billing is usage-based with only a small free allowance.

DigitalOcean

Deploy HTMX + Rails on DigitalOcean

A managed VPS or App Platform deployment with predictable flat-rate pricing, starting around $4-6/mo for a basic Droplet or about $5/mo for App Platform's smallest tier.

These are highlighted picks. To see all the tools, check the Hosting & Cloud category.

HTMX + Rails Add-ons

Each addition below extends this stack with a capability the base stack works fine without. None are required: include the ones your product actually needs when building this stack, and skip the rest.

App features and services

5

What your users see and use: sign-in, payments, email, and the look and feel of the interface.

Authentication Add-ons

Add authentication when the app needs user accounts — sign-up, login, and data scoped to a specific user instead of a fully open app.

Devise
HTMX + Rails with Devise

The ecosystem-standard authentication gem for Rails: registration, password reset, session management, and confirmable/lockable modules out of the box. The default here because it's what nearly every Rails project reaches for; Rails itself ships with no built-in auth system the way Django does.

Auth0
HTMX + Rails with Auth0

A hosted identity platform with an official Ruby SDK for verifying sessions in Rails controllers, worth it over Devise if you'd rather not self-host the auth logic at all, or need enterprise features like SSO that Devise doesn't cover.

These are highlighted picks. To see all the tools, check the Authentication category.

Email Add-ons

Add email when the app needs to send account verification, password reset, or notification messages.

Resend
HTMX + Rails with Resend

A transactional email API for account verification, password resets, and notification emails, sent via Resend's official Ruby SDK from a Rails controller or mailer, with a free tier for getting started.

SendGrid
HTMX + Rails with SendGrid

The established high-volume choice, with dedicated IP addresses and deliverability tooling for apps sending at serious scale. No permanent free plan (a 60-day trial, then paid tiers), so it earns its slot when volume and deliverability matter more than upfront cost.

Brevo
HTMX + Rails with Brevo

An all-in-one platform combining the transactional email API with marketing campaigns, a built-in CRM, and SMS from the same dashboard. A permanent free tier of 300 emails a day with no card required makes it an easy starting pick for an early-stage app.

Payments Add-ons

Add payments when the product is ready to charge for subscriptions or one-time purchases.

Stripe
HTMX + Rails with Stripe

Adds subscription billing, one-time checkout, and invoicing via Stripe's hosted Checkout or embedded Elements, with Rails handling webhook verification and API calls server-side. The stack works fully without it; add this once the product is ready to charge for something.

Styling Add-ons

Add styling when you want a component or utility-class system to build the UI faster than hand-writing CSS from scratch.

Tailwind CSS
HTMX + Rails with Tailwind CSS

A utility-class CSS framework: styles are composed directly in markup via class names instead of writing separate stylesheet files. The default styling choice bundled by most modern framework CLIs (create-next-app, create-vue, the SvelteKit and Astro starters all offer it), and the base layer shadcn/ui components are built on when that's loaded into the catalog in the future.

Bootstrap
HTMX + Rails with Bootstrap

Ready-made components and a grid for ERB views, set up with rails new --css bootstrap or the bootstrap gem, which compiles the Sass source through Rails' CSS bundling. A familiar choice for admin screens and long-lived Rails apps. Pick it or Tailwind, not both.

These are highlighted picks. To see all the tools, check the CSS Frameworks category.

Interactivity Add-ons

Add client-side interactivity when you want local UI state — toggles, modals, dropdowns, tabs — without a full JS framework or an extra server round trip.

Alpine.js
HTMX + Rails with Alpine.js

Alpine.js adds lightweight, declarative client-side interactivity on top of this stack's HTMX-driven Rails views: toggling a mobile menu, showing a modal, or switching an active tab, all without triggering a server round trip HTMX would otherwise need. It is included via a script tag, with behavior written as HTML attributes (x-data, x-show, x-on) rather than a build step, keeping the stack's zero-bundler approach intact.

These are highlighted picks. To see all the tools, check the HTML-first Frameworks category.

Under the hood (backend)

2

Services your users never see, which store data and keep the app fast and reliable.

Object Storage Add-ons

Add object storage when your app accepts file uploads or produces files, such as avatars, documents, images, and exports, and those files should live outside your database and server disk.

Cloudflare R2
HTMX + Rails with Cloudflare R2

S3-compatible object storage with no egress fees, so serving uploads, images, and exports costs only for storage and operations. Active Storage has an S3 service in storage.yml that accepts a custom endpoint, and its direct uploads send files from the browser straight to the bucket, with the keys in Rails credentials. The 10 GB free tier covers an early product.

Amazon S3
HTMX + Rails with Amazon S3

The reference object store and the API the others copy, with the most storage classes, regional controls, and lifecycle rules. Active Storage has an S3 service in storage.yml that accepts a custom endpoint, and its direct uploads send files from the browser straight to the bucket, with the keys in Rails credentials. It fits best when the rest of the app already runs on AWS, though data transfer out is billed.

Backblaze B2
HTMX + Rails with Backblaze B2

An S3-compatible store at roughly a third of S3 Standard's storage price, a fit for backups and large media libraries. Active Storage has an S3 service in storage.yml that accepts a custom endpoint, and its direct uploads send files from the browser straight to the bucket, with the keys in Rails credentials. Egress is free up to three times the stored data, and a CDN in front of a public bucket covers heavier delivery.

These are highlighted picks. To see all the tools, check the Object Storage category.

Caching Add-ons

Add caching when the same reads or computations repeat and you want them answered from memory: a cache holds hot data, shared counters, and session state in front of a database or an upstream API.

Redis
HTMX + Rails with Redis

Rails.cache backed by :redis_cache_store, which makes fragment caching of the partials HTMX swaps in, and Russian-doll caching of nested ones, shared across every Puma process and server. Rails 8 defaults to Solid Cache, which stores the cache in the database, so Redis is the faster choice once cache reads become a load of their own. PostgreSQL already keeps hot rows in memory, so no cache is needed until pages repeat expensive work.

Build and deploy

2

Testing, packaging, and shipping your code on every change.

CI/CD Add-ons

Add CI/CD when you want a dedicated pipeline for running tests, linting, or multi-stage builds before a deploy goes out. Many hosting platforms already redeploy automatically on every push on their own — a CI/CD tool adds the most value on top of that by gating the deploy on a passing test suite, and matters even more when the hosting choice does not auto-deploy at all, such as a self-hosted server.

GitHub Actions
HTMX + Rails with GitHub Actions

Runs the test suite and triggers deployments on every push, directly from the same GitHub repo the code already lives in, with no separate CI service to configure.

GitLab CI/CD
HTMX + Rails with GitLab CI/CD

GitLab's built-in CI/CD system, configured via .gitlab-ci.yml in the repository, the natural pick if the project's code lives on GitLab (self-hosted or gitlab.com) rather than GitHub, with the same YAML-pipeline model as GitHub Actions.

These are highlighted picks. To see all the tools, check the CI/CD Pipelines category.

Containerization Add-ons

Add containerization when you want the app packaged the same way across local development, staging, and production, or need to deploy somewhere that isn't a managed serverless platform.

Docker
HTMX + Rails with Docker

Packages the whole Rails + HTMX app into a container image for consistent local development and deployment, independent of the hosting platform chosen above.

These are highlighted picks. To see all the tools, check the Containerization category.

Monitoring and analytics

2

For you rather than your users: what people do in the app, what breaks, and why a model answered the way it did.

Observability Add-ons

Add observability when you want to catch errors and performance regressions in production before users have to report them.

Sentry
HTMX + Rails with Sentry

Error tracking and performance monitoring with dedicated sentry-ruby and sentry-rails gems, covering both controller errors and background-job failures. Open-source with a self-hosted path, alongside its own managed cloud.

Datadog
HTMX + Rails with Datadog

A broader observability platform covering APM, infrastructure metrics, and log management in one dashboard, useful once a team is already running other services worth monitoring alongside this app. Managed-only, with pricing that scales by host and usage rather than Sentry's per-error volume.

These are highlighted picks. To see all the tools, check the Infrastructure & APM category.

Analytics Add-ons

Add analytics when you want to measure traffic, track visitor behavior, or understand how people actually use the product.

PostHog
HTMX + Rails with PostHog

An all-in-one product analytics platform: event tracking, session replay, feature flags, and A/B testing in one SDK. The richest feature set if you want more than pageviews.

Google Analytics
HTMX + Rails with Google Analytics

The industry-standard, free analytics platform, with native Google Ads and Search Console integration. Requires a cookie consent banner in most jurisdictions (GDPR/CCPA), and all data lives on Google's infrastructure, the tradeoff the other three picks were built to avoid.

Plausible Analytics
HTMX + Rails with Plausible Analytics

A lightweight, privacy-first analytics tool with no cookie banner required. A good fit for simple traffic metrics without PostHog's broader feature surface.

Umami
HTMX + Rails with Umami

Open-source and self-hostable, keeping analytics data on infrastructure you control. Pairs naturally with the self-hosted Hetzner hosting option above if you want to avoid a third-party analytics vendor entirely.

These are highlighted picks. To see all the tools, check the Web & Product Analytics category.

Frequently Asked Questions about HTMX + Rails

How does this compare to the Ruby on Rails Starter stack (without HTMX)?

Same Rails core as Ruby on Rails Starter; HTMX adds partial-page swaps for specific interactions without a JS framework or build step. Rails already ships its own answer to this problem (Turbo/Hotwire); HTMX is worth it instead if you want a syntax that transfers to non-Rails projects too.

How does this compare to the HTMX + Django, HTMX + FastAPI, and HTMX + Laravel stacks?

All four pair HTMX with a different backend. Here Rails brings ActiveRecord and its own Turbo/Hotwire alternative; HTMX + Django brings Django's built-in ORM and admin panel; HTMX + FastAPI brings FastAPI's async performance; HTMX + Laravel brings Eloquent and Blade. HTMX itself works the same way on all four, so pick based on which backend fits the rest of the project.

Should I use Devise or Auth0?

Devise is the ecosystem-standard choice: registration, password reset, session management, and confirmable/lockable modules out of the box, self-hosted and free. Auth0 is worth it instead if you'd rather not run the auth logic yourself, or need enterprise features like SSO that Devise doesn't cover.

What's the cheapest way to run this stack?

Self-hosted PostgreSQL and skipping the paid addition tools cost nothing beyond hosting. Every hosting option here (Railway, Render, Hetzner, Fly.io) charges from day one for an always-on process, so expect at least about $5/mo once you're past local development.

Scores

Popularity2/5

Emerging

Rails already has its own native answer to this problem (Turbo/Hotwire), which makes HTMX a smaller niche choice here than in ecosystems with no built-in alternative — capable, but not the Rails community's default reach.

Learning Curve3/5

Moderate

Rails' conventions (ActiveRecord, views, routing) are well-documented, and HTMX adds only a handful of HTML attributes rather than a new templating language. The adjustment is choosing between HTMX and Rails' own Turbo/Hotwire for the same server-driven-interactivity job.

Flexibility3/5

Configurable

Rails' ActiveRecord and view layer are opinionated about project structure, and HTMX itself just swaps HTML fragments without adding flexibility on top. Consistent and productive, not a highly configurable setup.

Performance3/5

Average

HTMX's partial-page swaps avoid a full page reload for most interactions, but Rails' request-handling overhead is heavier than a leaner framework, and every interaction is still a server round-trip.

Portability3/5

Some lock-in

Rails and HTMX are both open-source with no vendor lock-in, portable to any Ruby-capable host. The main migration cost is Rails' own ActiveRecord/view conventions — HTMX itself adds very little coupling since it's just HTML attributes.

Tools in the HTMX + Rails Stack

Frontend Frameworks

Backend Frameworks

Programming Languages

Database (choose one)

Hosting (choose one)

Add-ons (optional — add any, or none)
App features and services

Authentication

Email

Payments

Styling

Interactivity

Under the hood (backend)

Object Storage

Caching

Build and deploy

CI/CD

Containerization

Monitoring and analytics

Observability

Analytics

HTMX + Rails Pricing

From ~$5/mo Free to start

Rails, HTMX, Tailwind CSS, Ruby and PostgreSQL are all open-source and free. HTMX adds interactivity without a separate JavaScript build or frontend host, so you only pay for one app server and a database: about $5–20/mo on Railway, Render, Fly.io or Hetzner, with managed Postgres from roughly $6–15/mo if you don't self-host.

Core toolsFree (open source)

Rails, HTMX, Tailwind CSS, Ruby and PostgreSQL are free.

Hosting$5–20/mo

A single app server on Railway, Render, Fly.io or Hetzner; free tiers for testing.

Database (PostgreSQL)Free–$15/mo

Self-host for free, or use managed Postgres from about $6–15/mo.