quinn.io
quinn.io
Prompt

create a complete timeline of Rails support for javascript since pre-v1

Below is a version‑by‑version timeline of how Ruby on Rails has supported JavaScript, starting before 1.0 and running through today. For each milestone I list what changed, why it mattered, and where it came from.


Pre‑1.0 (2005)

  • Mar 22, 2005 — Rails 0.11: Early Ajax support built on Prototype; Rails ships helpers that generate JS (e.g., link_to_remote, form_remote_tag).
  • Jun 23, 2005 — Ahead of Rails 0.13: Rails announces a “big upgrade” to Ajax with script.aculo.us (effects, drag‑and‑drop) layered on Prototype. (Rails)
  • Jul 6, 2005 — Rails 0.13 released: Prototype + script.aculo.us are effectively “the” Rails JavaScript stack pre‑1.0. (scottstuff.net)

Rails 1.x

  • Dec 13/15, 2005 — Rails 1.0: Prototype/script.aculo.us ship with Rails; view helpers like javascript_include_tag(:defaults) include them; Ajax helpers (e.g., link_to_remote) are standard practice. (apidock.com)
  • Mar 28, 2006 — Rails 1.1: RJS (Ruby‑generated JavaScript) lands: write Ruby in .rjs templates and Rails emits JS to update the page (replace HTML, visual effects, etc.). Huge step for Ajax ergonomics. (Rails)

Rails 2.x (2007–2009)

  • Prototype/script.aculo.us remain the built‑ins; helpers such as link_to_remote, observe_field, and Scriptaculous helpers are common (last seen in the 2.3 era docs). (apidock.com)

Rails 3.x: UJS and the Asset Pipeline

  • Aug 2010 — Rails 3.0: Rails adopts Unobtrusive JavaScript (UJS). Instead of inline JS helpers, you mark links/forms with data-remote="true" and a rails.js driver handles Ajax. Legacy *_to_remote helpers are removed. Works with Prototype or jQuery via adapter drivers. (simonecarletti.com)
  • Aug 2011 — Rails 3.1:
    • Asset Pipeline (Sprockets) becomes the standard way to compile/package JS & CSS.
    • jQuery becomes the default JS library (Prototype can still be used).
    • CoffeeScript added to the default Gemfile for authoring client code and .js.coffee views.
    • RJS is extracted from core. (Ruby on Rails Guides)

Rails 4.x: Turbolinks era

  • Jun 2013 — Rails 4.0: Turbolinks ships by default to speed navigation by swapping the <body> over Ajax. (This is the predecessor to today’s Turbo Drive.) (Ruby on Rails Guides)

Rails 5.x: Real‑time and modern tooling

  • Jun 2016 — Rails 5.0: Action Cable integrates WebSockets end‑to‑end (server & JS client) for real‑time features. Turbolinks 5 also lands. (Ruby on Rails Guides)
  • Apr/May 2017 — Rails 5.1: Rails embraces the JS toolchain: Yarn support and a Webpack(er) bridge; jQuery is no longer a default dependency; rails‑ujs (vanilla JS) replaces jquery‑ujs as the built‑in UJS driver. (Ruby on Rails Guides)

Rails 6.x: Webpacker by default

  • Aug 2019 — Rails 6.0: Webpacker becomes the default way to manage JavaScript in new apps; Sprockets continues for assets like images/CSS (unless configured otherwise). (Rails)

Rails 7.x: Import maps + Hotwire

  • Dec 15, 2021 — Rails 7.0: Rails pivots away from Webpacker by default and offers three official answers to JS:
    1. Import maps (no Node/bundler),
    2. jsbundling‑rails (esbuild/rollup/Webpack/Bun) when you do want a bundler, and
    3. Hotwire (Turbo + Stimulus) as the default interaction model. Sprockets becomes optional. UJS is no longer the go‑to; Turbo is the recommended path. (Rails)
  • Oct 2023 — Rails 7.1: Continues the Rails‑7 approach; import maps + Turbo/Stimulus tooling mature (with minor UJS compatibility shims possible if you need them). (Ruby on Rails Guides)
  • Feb 2024 — Turbo 8 (Hotwire): Major Turbo update introduces morphing page refreshes, view transitions, and InstantClick‑style preloading—affecting Rails front‑end behavior without custom SPA frameworks. (37signals Dev)

Rails 8.x (2024–2025)

  • Rails 8.0: Rails keeps the Rails‑7 JavaScript posture (import maps by default; bundling via jsbundling‑rails when needed; Hotwire as the primary interactivity layer). Propshaft becomes the default asset pipeline, which affects how JS/CSS assets are served and digested. (Ruby on Rails Guides)

Key shifts at a glance

  1. 2005–2010: Prototype/script.aculo.us + Rails helpers/RJS (server‑generated JS).
  2. 2010–2016: UJS with data‑attributes; Asset Pipeline; jQuery default; Turbolinks for fast nav. (simonecarletti.com)
  3. 2016–2019: Action Cable (WebSockets). (Ruby on Rails Guides)
  4. 2019–2021: Webpacker default. (Rails)
  5. 2021→: Import maps (no Node), jsbundling‑rails (when you need bundling), and Hotwire (Turbo + Stimulus) as the preferred JS story; UJS deprecated in favor of Turbo. (Rails)

Sources / release notes & docs

  • Rails blog & release notes for 1.1 (RJS) and 7.0 (new JS posture). (Rails)
  • Working with JavaScript in Rails (current guide, including notes on UJS vs Turbo). (Ruby on Rails Guides)
  • 3.1 release notes (Asset Pipeline, jQuery default) + CoffeeScript default via coffee‑rails. (Ruby on Rails Guides)
  • 4.0 release notes (Turbolinks). (Ruby on Rails Guides)
  • 5.0 release notes / Action Cable guide. (Ruby on Rails Guides)
  • 5.1 release notes (Yarn/webpack; drop jQuery default; rails‑ujs). (Ruby on Rails Guides)
  • 6.0 announcement (Webpacker by default). (Rails)
  • Importmap‑rails and jsbundling‑rails gems. (GitHub)
  • Turbo 8 announcement (morphing, transitions, InstantClick). (37signals Dev)
  • Early history of Prototype/script.aculo.us in 0.11/0.13 (Thomas Fuchs’ deck & Rails blog).

Notes for maintainers upgrading legacy apps

  • Prototype-era helpers → UJS: Replace *_to_remote helpers with remote: true (Rails 3+). (simonecarletti.com)
  • jQuery UJS → rails‑ujs: Rails 5.1 removed the jQuery dependency; rails‑ujs is built in (but in Rails 7+ Hotwire/Turbo is recommended). (Ruby on Rails Guides)
  • Webpacker → Rails 7+: Migrate to import maps (no bundler) or jsbundling‑rails (esbuild/rollup/Webpack/Bun). (GitHub)
  • Turbo 8 morphing: Be aware of how morphing interacts with Stimulus/controllers when upgrading. (37signals Dev)

If you want this as a one‑page poster or CSV with dates/links for each item, say the word and I’ll produce it immediately.