whatisgithub

What is turbo?

hotwired/turbo — explained in plain English

Analysis updated 2026-06-24

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

In one sentence

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
Click or tap to explore — scroll the page freely

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

What do people build with it?

USE CASE 1

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

USE CASE 2

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

USE CASE 3

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

USE CASE 4

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

What is it built with?

JavaScriptHTMLWebSocket

How does it compare?

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 get it running?

Difficulty · easy Time to first run · 30min

So what is it?

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.

Copy-paste 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

What 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.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.