Rails 7.0 Released: Hotwire and a No-Node Front End
Rails 7.0 reformed front-end development with import maps and Hotwire as the default, needing no Node by default, and added Active Record encryption and async query loading.
Historical Archive. This article documents an event from 2021 and is preserved with its original date for reference. It is not current news, and details may have changed since publication.
What happened
Rails 7.0 was released on December 15, 2021, according to the official announcement on the Ruby on Rails blog by creator David Heinemeier Hansson. Titled Fulfilling a vision, he described it as the culmination of years of conceptual work toward a truly full-stack approach that tackles both front-end and back-end challenges with equal vigor.
A reformed front end
The big idea in Rails 7 was reforming front-end development. Taking advantage of ES6/ESM browser support, HTTP/2 and the new import maps standard, Rails 7 delivered a no-Node default approach to the front end without sacrificing access to npm packages or modern JavaScript. Hotwire, the combination of Turbo and Stimulus, became the default choice for new apps, replacing Turbolinks and Rails UJS and aiming to match single-page-application experiences at a fraction of the complexity.
Flexible bundler integration
For projects that do want Node, Rails 7 replaced the tightly coupled Webpacker with a loosely coupled approach: the new jsbundling-rails integration works with any JavaScript bundler such as esbuild, rollup.js or Webpack, pre-configurable with --javascript esbuild. The same approach applied to CSS through cssbundling-rails, integrating tools from Tailwind CSS to Bootstrap as long as they produce a compiled application.css, with a Node-free option for Tailwind.
Active Record encryption and more
Rails 7 added Active Record encryption, extracted from the HEY email service, providing at-work encryption of sensitive attributes in addition to at-rest and in-transit protection. It also upstreamed Marginalia-style query-origin tagging as QueryLogs, added asynchronous query loading via Relation#load_async, switched autoloading exclusively to the Zeitwerk code loader, and made libvips the default image variant processor. The release comprised over four thousand commits since Rails 6.1.
Why it mattered
Rails 7.0 modernised the framework's most contested area, the front end, offering a dramatically simpler no-Node default while keeping flexible integration for those who want a bundler. Combined with Active Record encryption and async queries, it reaffirmed Rails' full-stack ambitions and set the direction for the releases that followed.
Related on Skillo
See also: Rails 7.1's Dockerfiles and auth helpers.
Sources
Published date reflects the original event date (2021-12-15). This article is original Skillo editorial written from the sources above; facts were verified in September 2026.
Written by
Skillo Staff
0 Comments
Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.