gitwtfhub

wtf is turbo?

hotwired/turbo — explained in plain English

Analysis updated 2026-06-24

7,314JavaScriptAudience · developerComplexity · 3/5Setup · easy

TL;DR

JavaScript library from 37signals that makes server-rendered web apps feel instant by intercepting link clicks and updating only the changed parts of the page, with no full reloads and no custom JavaScript needed.

Mindmap

mindmap
  root((Turbo))
    Components
      Turbo Drive
      Turbo Frames
      Turbo Streams
      Turbo Native
    What it does
      Instant navigation
      Partial page updates
      Live server push
    Tech Stack
      JavaScript
      HTML
      WebSocket
    Audience
      Rails developers
      Server-side apps

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Add fast, app-like navigation to a traditional Rails or Django app without building a JavaScript SPA.

REASON 2

Push live database updates to all connected users in real time using Turbo Streams over WebSockets.

REASON 3

Split a page into independent sections that each load or refresh on their own without disturbing the rest of the page.

REASON 4

Wrap a server-rendered web app inside a native iOS or Android shell with smooth transitions using Turbo Native.

What's in the stack?

JavaScriptHTMLWebSocket

How it stacks up

hotwired/turboygs-code/vueberstend/puppeteer-extra
Stars7,3147,3077,323
LanguageJavaScriptJavaScriptJavaScript
Setup difficultyeasyeasyeasy
Complexity3/54/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 30min

Wtf does this do

Turbo is a JavaScript library that makes web applications feel faster without requiring developers to write large amounts of custom JavaScript. It was created by 37signals, the company behind Basecamp and Hey, and is part of a broader toolkit called Hotwire. The core idea is that instead of rebuilding an entire page every time a user clicks a link or submits a form, Turbo intercepts those actions and updates only the parts of the page that actually changed. This produces a fast, fluid experience without the complexity of building a fully JavaScript-driven application from scratch. Turbo is made up of four main components. Turbo Drive handles link clicks and form submissions, preventing full page reloads so navigation feels instant. Turbo Frames let you divide a page into independent sections, each of which can load separately or update on its own without disturbing the rest of the page. Turbo Streams push live updates directly to the page, either through a persistent WebSocket connection or in response to form actions, using ordinary HTML rather than custom JavaScript logic. Turbo Native connects a server-rendered web application to native iOS and Android apps, allowing the same backend to power both the web and mobile versions with smooth transitions between the two. All of these techniques work by sending HTML from the server to the browser, rather than sending raw data and letting the browser reconstruct the page. For situations where that approach is not enough and more interactive behavior is needed, Turbo is designed to pair with Stimulus, another Hotwire library that handles specific JavaScript interactions in a structured way. The project is open source and documentation is available at turbo.hotwired.dev.

Yoink these prompts

Prompt 1
I have a Rails app and want navigation to feel instant without building a React SPA. Show me how to set up Turbo Drive to intercept link clicks and form submissions and update the page without a full reload.
Prompt 2
Using Turbo Streams, show me how to broadcast a new comment to all connected users the moment it's saved to the database, without any page reload.
Prompt 3
I want a sidebar section to load independently from the main content in my server-rendered app. Show me how to set up a Turbo Frame for this.
Prompt 4
How do I use Turbo Native to wrap my Hotwire web app in a native iOS app shell with smooth page-to-page transitions?

Frequently asked questions

wtf is turbo?

JavaScript library from 37signals that makes server-rendered web apps feel instant by intercepting link clicks and updating only the changed parts of the page, with no full reloads and no custom JavaScript needed.

What language is turbo written in?

Mainly JavaScript. The stack also includes JavaScript, HTML, WebSocket.

How hard is turbo to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is turbo for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.