Per le piccole interazioni (un menu, un contatore, un toggle) non serve React. Stimulus, parte di Hotwire, collega comportamenti JavaScript all'HTML tramite data-attribute.

<div data-controller="clipboard">
  <input data-clipboard-target="source" value="ciao">
  <button data-action="click->clipboard#copy">Copia</button>
</div>
// clipboard_controller.js
import { Controller } from "@hotwired/stimulus";
export default class extends Controller {
  static targets = ["source"];
  copy() {
    navigator.clipboard.writeText(this.sourceTarget.value);
  }
}

L'HTML dichiara cosa fa (il controller, i target, le action); il JavaScript dice come. Stimulus non genera l'HTML, si aggancia a quello che c'è già, anche a quello arrivato via Turbo.

Filosofia opposta a React: l'HTML resta il protagonista, il JavaScript è un condimento leggero. Per un'app Rails, spesso è tutto ciò che serve.