Hotwire è la scommessa di Rails: interfacce reattive inviando HTML invece di JSON, con pochissimo JavaScript. Il pezzo centrale è Turbo.

<%# la lista si aggiorna da sola quando cambia %>
<turbo-frame id="launches">
  <%= render @launches %>
</turbo-frame>
# il controller trasmette un aggiornamento a chi guarda
def create
  @launch = Launch.create!(launch_params)
  render turbo_stream: turbo_stream.prepend("launches", @launch)
end

I Turbo Frame isolano porzioni di pagina che si aggiornano da sole; i Turbo Stream spingono frammenti di HTML dal server (anche via WebSocket) e il DOM si aggiorna senza reload.

Il vantaggio: ottieni gran parte della reattività di una SPA restando in Rails, scrivendo view invece di componenti. Per molte app CRUD è più che sufficiente, e ti risparmi un intero frontend separato.