Week 47 - Sweet Streams, Turbo considered harmful?, and more!
This edition covers Hotwire Native, Meetup Recordings, hybrid apps, and thoughtful critiques of web frameworks.
Welcome to Hotwire Weekly!
Welcome to another issue of Hotwire Weekly! Happy reading! 🚀✨
📚 Articles, Tutorials, and Videos
Process slow network requests with Turbo and Active Model - Steve Polito demonstrates on the thoughbot blog how to enhance user experience in Rails applications by offloading slow network requests to background jobs and utilizing Turbo for asynchronous updates.
Meetup Recording: Hotwire Native: Turn Your Rails App into a Mobile App - Yaroslav Shmarov gave a talk at the Paris.rb November 2024 Meetup and the recording is now available on YouTube and RubyVideo.
Meetup Recording: Leveling Up Developer Tooling for the Modern Rails & Hotwire Era - Marco Roth gave a talk at the Ruby Türkiye November 2024 Meetup and the recording is now available on YouTube and RubyVideo.
Sweet Streams - Jonathan Greenberg discusses building a prototype application at Flagrant that processes complex documents and generates plain English summaries using Retrieval Augmented Generation (RAG). It also incorporates real-time streaming of AI-generated responses to the user interface using ActionCable and Turbo Streams.
Livestream Recording: Hotwire Native Live Coding - Joe Masilotti offers a comprehensive live walkthrough on building Hotwire Native apps for iOS and Android. Starting with a Rails-based hiking journal app, Joe demonstrates how to create native mobile experiences by integrating Hotwire Native with minimal code. The session covers the setup process, configuring navigators, and routing with local development servers, highlighting how Hotwire Native simplifies combining web-powered functionality with native app frameworks.
Inheritance with Stimulus Controller - Rails Designer explores how to implement inheritance in Stimulus controllers to promote code reuse and maintainability. The article presents a practical example involving a CheckboxesController
and a BulkActionsController
, demonstrating how the latter can inherit functionality from the former.
I Don't Have Time to Learn React - Keith Cirkel critiques React’s increasing complexity and questions the long-term value of mastering its unique patterns, suggesting a focus on foundational programming concepts instead. This resonates with Hotwire’s philosophy, which offers a simpler, server-driven alternative for building dynamic web applications without relying heavily on client-side JavaScript.
Turbo considered harmful - On the other side of the spectrum, Johan Halse critiques Turbo, arguing that its complexity and unexpected behaviors, like overriding browser defaults and adding a hidden cache, outweigh its benefits in modern web development. He advocates for keeping useful elements like Turbo Frames and Streams but suggests dropping unnecessary features in favor of browser-native optimizations.
Hotwire, htmx, and Unpoly Comparison - Lucas Mendelowski conducted an experiment by building a simple app in Rails to compare Hotwire, htmx, and Unpoly. The app follows a progressive enhancement approach, using the same controller for all variants. The code is available on GitHub to explore and compare the three frameworks in action.
Hotwire Club: Turbo Drive - Swiper-like View Transitions - Julian Rubisch published a new challange for The Hotwire Club about Swiper-like View Transitions with Turbo Drive.
🧰 Libraries and Tools
async-cable - A proof-of-concept Action Cable adapter for Rails 7.2+.
stealth_dom_id - Extends Rails dom_id
helper to support custom attribute-based identifiers.
🎉 Releases
tom-select v2.4.1 - A lightweight hybrid of a textbox and select box.
vite_ruby v3.9.1 - Use Vite in Ruby and bring joy to your JavaScript experience.
hot-glue v0.6.6.1 - Simple, plug & play Rails scaffold building companion for Turbo-Rails and Hotwire.
tailwindcss-ruby v4.0.0.beta.2 - A self-contained tailwindcss
executable, wrapped up in a ruby gem.
Feel free to follow us on Twitter/X, Bluesky, or on Mastodon!
See you next week!