Hybrid iOS apps with Turbo

3 minute read

Native apps are hard. They are expensive to build and even more expensive to maintain.

What if that wasn’t the case? What if every time you built a new workflow in your Rails app, your mobile app got that feature for free?

This is possible with Turbo, a small framework from the geniuses at Basecamp. Follow this series of posts to learn how to build a hybrid iOS app from scratch. All you need is a mobile website powered by Ruby on Rails.

Follow along as we build a hybrid iOS from scratch alongside the supporting Rails code.

Jumpstart Pro iOS Template Chris Oliver, creator of GoRails, and I built an iOS template that supercharges your Rails application with easy Turbo native integration. It does all the hard work, so you can focus on the fun stuff.

1. The Turbo framework

This introduction covers the benefits of hybrid apps and how Turbo helps bridge the gap between web and native. It also breaks down the code in the Quick Start guide from the Turbo wiki line by line. A perfect place to start for those new to Turbo or hybrid in general.

2. URL routing

The second article covers everything related to routing URLs. This includes visit actions (advance vs. replace), path configuration, error handling, and native view controllers. It also touches on how forms work in Turbo iOS and why you might be running into issues with your Rails app.

3. Forms and basic authentication

Part 3 covers slightly more advanced topics: forms and basic authentication. Learn how to install Turbo in Rails 6, add custom form handling for the iOS client, and get up and running with web-based authentication.

4. The JavaScript bridge

Having all our content in rendered on the web comes with some trade-offs. What if we want a native navigation bar button? Enter the JavaScript bridge, where we can pass messages between client and server without waiting for someone to tap a link.

5. Native authentication

One major limitation of web-only authentication is, well, it’s web only. Native authentication, on the other hand, opens up a world of possibilities. It breaks your app out of the web world and enables fully native screens. Meaning, you can integrate native SDKs like location services and push notifications. Or, you can render SwiftUI views for the really important stuff.

6. Tips and tricks

To wrap up the series I’m sharing tips and tricks I’ve picked up over the years that range from making development easier to making the app feel more native. How to dismiss a modal after submitting a form, fixes for double pushed controllers, disabling link previews (Force Touch), and more.

Testing, Turbo Native, and exclusive content. Sign up for my monthly newsletter.