Turbolinks is dead, long live Turbo ⚡
Tags: webdev, rails, ios
Published: 2021-01-16 16:32:03

Turbolinks, [my favorite way to build hybrid apps](https://masilotti.com/beermenus-and-turbolinks/), recently received a huge update.

## What’s Turbo(links)?

[Turbolinks](https://github.com/turbolinks/turbolinks) is a tiny JavaScript library bundled into Rails apps that makes pages load way faster. When a link is clicked, the library takes over and performs the request via AJAX then replaces the `<body>` element with the response.

Developers can leverage these “hooks” to build hybrid applications based on the mobile web site they already have. There are native iOS and Android components that work with the JavaScript to create native-feeling interactions.

The native app renders the mobile web view and the frameworks handle the “glue” in between. Think: clicking a link pushes a new controller on the navigation stack. These tools enable small teams of developers to build high-fidelity cross-platform apps. [Basecamp](https://apps.apple.com/us/app/basecamp-3/id1015603248), [Hey](https://apps.apple.com/us/app/hey-email/id1506603805), [Zaarly](https://apps.apple.com/us/app/zaarly/id964717947), [BeerMenus](https://apps.apple.com/us/app/beermenus-find-great-beer/id917882057), and more are all Turbolinks-powered hybrid apps.

## Turbo and Hotwire

Cosmetically, the framework is now called Turbo and lives under the Hotwire “namespace” both on [GitHub](https://github.com/hotwired/) and [online](https://hotwire.dev).

The web side of Turbo saw a slew of new features and existing things to play with. To show how powerful Turbo is, [watch DHH create a live-updating chat application](https://hotwire.dev) in just 15 minutes. 🤯

The [iOS component](https://github.com/hotwired/turbo-ios), called an adapter, received a much smaller update. The [upgrade path](https://github.com/hotwired/turbo-ios/blob/main/Docs/Migration.md) from Turbolinks is small and relatively painless; I was able to migrate two existing apps in a few hours each.

The most exciting new feature for the native frameworks is Path Configuration. This moves the URL routing logic to a JSON file. The best part is that this file can live on your server, enabling remote configuration of different URLs. 💪

## I’m compiling 5 years of Turbo(links) experience 📓

Since I started working with Turbo(links) in 2015, I’ve been noting all the gotchas and rough patches. I’m slowly compiling these into something more formal to share with the public.

That said, I’m not sure if a book, video course, or blog post series will be the best fit. **If you’re interested in learning more about Turbolinks, how would you prefer to learn?**

P.S. If you need help on your Turbo(links) project ASAP don’t hesitate to [send me an email](mailto:joe@masilotti.com)!

## How do you feel about hybrid? 🤔

Personally, I find them an amazing middle ground for small teams to manage the three big platforms at the same time.

**How do you feel about hybrid?** I’d love to hear what you think in the comments!

## More about me

I'm Joe and I write every week on [Masilotti.com](https://masilotti.com). I also tweet about this kind of stuff [on Twitter](https://twitter.com/joemasilotti). This snippet was part of my newsletter, [The Masilotti Monthly](https://masilotti.com/newsletter/edition-ii/).