Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to Hotwire
Search
Onur Ozer
October 11, 2023
Programming
97
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to Hotwire
Onur Ozer
October 11, 2023
More Decks by Onur Ozer
See All by Onur Ozer
Breaking Rules to Ship Products: A Beginner's Rails Journey
onurozer
0
67
From Ruby to Revenue: Mastering Marketing for Developers
onurozer
0
37
Foundations of Marketing
onurozer
0
39
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
The Rails Doctrine Decade
koic
2
590
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
1.4k
Railsバージョンを4倍にした話
optim
0
400
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
600
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
contenteditable と日本語入力に向き合う
colorful12
0
200
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
AmebaブログはKMPから卒業します
kmars0605
0
190
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Mobile First: as difficult as doing things right
swwweet
225
10k
How to Talk to Developers About Accessibility
jct
2
580
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Six Lessons from altMBA
skipperchong
29
4.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
RailsConf 2023
tenderlove
30
1.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
Onur Ozer Founder, Simple Matters Introduction to Hotwire ⚡ Ruby
Singapore Meetup, Sep 2023
My modern web development journey
(╯°□°)╯︵ ┻━┻
Rails and Javascript Prototype.js Script.aculo.us Rails 1 2005 jQuery
Co ff eescript Rails 3 2010 Webpacker Rails 6 2019 importmaps Rails 7 2021 Turbolinks 2015 ActionCable 2016 Stimulus.js 2018
How do you build modern web apps? • That are
fast and responsive • With a simple, productive work fl ow • While keeping template rendering on the server • Without introducing additional complexity
Traditional Web Apps Rails application HTTP Request HTML Response
JS Component Approach JS component AJAX Request JSON Response Rails
application
Single Page Applications (SPAs) Rails JSON API AJAX Request
JSON Response
H T M L O V E R T H
E W I R E
Philosophy • Responsiveness of an SPA without the complexity of
an SPA • Reuse partials • Sending HTML instead of JSON
Ingredients • Turbo • Turbo Drives • Turbo Frames •
Turbo Streams • Stimulus • Strada
Turbo Drive Accelerate navigation without full page reload <body> Rails
application AJAX GET/POST (Fetch) HTML Response <head>
Turbo Frames Partial page updates scoped to individual contexts Rails
application AJAX GET/POST HTML Partial (Turbo Frame) Turbo Frame <turbo frame id=“8”>
Turbo Streams Update multiple parts of a page in response
to a request Rails application AJAX GET/POST HTML Partial (Turbo Streams) Turbo Stream <turbo stream action=“replace” target=“content"> Turbo Stream <turbo stream action=“replace” target=“header”>
Turbo Streams Update multiple parts of a page in response
to a request Rails application (Action Cable) WebSocket Connection WebSocket Connection
Stimulus Organise Javascript with controllers and actions HTML Element HTML
Element Stimulus Controller Stimulus Controller
Demo: Todo App https://github.com/onurozer/hotwire-introduction
Getting Started • Rails 7 - comes by default •
Rails 6 - install turbo-rails and stimulus-rails gems https://github.com/hotwired/turbo-rails#installation https://github.com/hotwired/stimulus-rails#installing-with-installer • Others - install turbo and stimulus npm packages https://www.npmjs.com/package/@hotwired/turbo https://www.npmjs.com/package/stimulus
Resources • Hotwire for Rails Developers Course https://pragmaticstudio.com/hotwire-rails • Turbo
Rails Tutorial https://www.hotrails.dev/ • Hotwire Devs Newsletter https://masilotti.com/hotwire/ • Rails + Hotwire Jobs https://railshotwirejobs.com/
Thank You • Connect on LinkedIn https://www.linkedin.com/in/onurozer/ • Connect on
Mastodon https://ruby.social/@onurozer • My personal website https://onurozer.me/ • My company https://simplematters.co/