Zero native code to maintain.

Deploy your Rails app to the app stores.

From bundle install to your phone in minutes. To the App Store and Google Play without writing or maintaining a line of native code.

A demo app on iOS: a native navigation bar and tab bar around a Rails-rendered library screen
1
2
3

How it works

The content is your Rails app. The chrome is native.

1
Native navigation bar
Title, buttons, and menus, declared in your HTML.
2
Your Rails views
HTML from your server. Same controllers, templates, and deploys.
3
Native tab bar
Tabs, icons, and colors from one YAML file.

Change a view, deploy your Rails codebase, and the app updates. You only rebuild when the native config changes.

Everything you need

From YAML config to the stores.

Ruby Native handles the mobile parts so you can focus on your Rails app. No Swift, no Kotlin, no native IDEs.

config/ruby_native.yml
appearance:
  tint_color: "#d97706"

tabs:
  - title: Library
    path: /library
    icon: books.vertical
  - title: Stats
    path: /stats
    icon: chart.bar
  - title: Profile
    path: /profile
    icon: person
app/views/books/show.html.erb
<%= native_navbar_tag title: @book.title do |nav| %>
  <% nav.button "Edit", path: edit_book_path(@book) %>
<% end %>

<h1 class="native-hidden"><%= @book.title %></h1>

<%= image_tag @book.cover_url, class: "book-cover" %>

<%= button_to "Finish", finish_book_path(@book),
    data: native_haptic_data(:success) %>

YAML config

Your app name, colors, tabs, and navigation in a single YAML file, with live reload on your phone.

Instant QR preview

Run ruby_native preview, scan the QR code, and see your app on your phone in under a minute.

Any Rails frontend

Works with Hotwire, React, Vue, Stimulus, or plain ERB, all wrapped in a real native shell.

Native UI

Real native tab bar, nav bar, sheets, and alerts, wired up from YAML and ERB.

Cloud builds

Submit to both stores from your Rails project, with no Xcode or Android Studio installed.

Push notifications

Real push notifications from your Rails server via APNs and Firebase, deep-linked to the right screen on tap.

How it compares

Ruby Native, in context.

The same Rails app, four ways to get it on a phone. Each row is something a Rails developer actually wants to be able to say yes to.

PWA Capacitor Hotwire Native Ruby Native
No Swift or Kotlin required Yes Yes No Yes
No Xcode or Android Studio required Yes No No Yes
Ships to App Store and Google Play No Yes Yes Yes
Real push notifications limited Yes Yes Yes
Native tab bar and navigation No partial Yes Yes
Config-driven, no native codebases No No No Yes
Native layer maintained for you none No No Yes

All four options share your Rails backend. The differences are how much native code you write, who maintains it, how native the result feels, and how much project housekeeping you take on.

Android

Both app stores. One Rails app.

Ruby Native builds a native Android app for Google Play the same way it builds your iOS app for the App Store. Add Android to an app you already ship, or launch on both at once.

  • Your Rails backend stays exactly the same.
  • HTML triggers render platform-specific native components.
  • Cloud builds ship to Google Play, all without Android Studio or Kotlin.
The Shelf demo on iOS, showing a native tab bar
The same Shelf demo on Android, showing a native bottom navigation bar

About the maker

Built by someone who's done this, well, a lot.

Joe Masilotti has been building iOS and Android apps full time for nine years. Before Ruby Native, he shipped 30+ Hotwire Native apps to production and wrote Hotwire Native for Rails Developers for Pragmatic Programmers.

Ruby Native is the tool he wished he'd had on day one. The path from Rails to the stores, with the steep parts taken out.

The foundation

Ruby Native is new. The technology underneath it isn't.

Basecamp, HEY, and dozens of production apps ship on Hotwire Native, the open-source library built and maintained by 37signals. You're not betting on a new framework; you're betting on a config layer over a stack that's been in production since 2017.

If Ruby Native disappeared tomorrow, the bones of your app would still be running on tech the Rails team actively maintains.

2017
Hotwire Native shipping at 37signals.
30+
Apps Joe has shipped to production.
12
Ruby Native apps live in the app stores.

What they say after shipping.

“The fact that all this stuff is in our repo, using the stuff we already know, and we can just edit it, that's huge.”
Colin Bartlett

Colin Bartlett

Co-founder, StatusGator

“For ten years, changing anything in our apps meant finding someone who writes Swift or Kotlin. Now it is the same Rails app I work in every day.”
Jon Stenqvist

Jon Stenqvist

Founder, Equipe

One day to TestFlight. It lets me focus on building the app, not fighting Apple.”
Kieran Klaassen

Kieran Klaassen

Entrepreneur in Residence, Every

“I literally said "this is so f***ing cool" out loud working on this.”
Mike Johns

Mike Johns

Senior Product Manager

“A lifesaver for a first-time App Store developer. It configures everything, not just the code.”
Brice Sanchez

Brice Sanchez

Senior Ruby on Rails Developer

“A side project I never found the time to ship. Ruby Native got me over the line, with not a single fight with Xcode.”
Nat Picone

Nat Picone

Indie maker, FantaSummer

Simple, per-app pricing

Ship your Rails app to the app stores.

A native contractor costs $200/hour. Ruby Native gets your app to testers in a day, free until you ship.

Starter

$299 /year per app

App store distribution and native source code access.

Everything you need to ship:

  • Deploy to the app stores

  • Automated app store screenshots

  • Updates and security patches

  • Unlimited team members

  • Source code access forever Even if you cancel, you keep the native source code. Deploys and future updates require an active subscription.

Start with Starter

Business

Recommended

$999 /year per app

Everything in Starter, plus in-app subscriptions and priority support.

All Starter features, plus:

  • In-app subscriptions and purchases

  • Subscription product management

  • Subscription webhook handling

  • Priority support

Start with Business

Turnkey

$15,000+ one-time

I build and ship your app for you. You stay focused on your product.

All Business features, plus:

  • Custom design and development

  • Store submissions and review handling

  • Same-day support via email and video

  • First year of Business included

Get in touch

Sending this to your security team? The security page lists what Ruby Native holds, why the App Store Connect key needs the Admin role, and how to revoke it.

Frequently asked questions

Can't find what you're looking for? Send me an email and I'll get back to you.

Will Apple approve my app?

Yes. Ruby Native apps include native components that satisfy Apple's guideline 4.2 (Minimum Functionality): a native tab bar, push notifications, and proper app assets. These are what separate a real app from a wrapped website in Apple's eyes. Built by a developer who has shipped 30+ apps with the underlying technology. The Turnkey option includes review handling if you want a hands-off experience. Learn more about App Store review.

Will Google approve my app?

Yes. Ruby Native builds your Android app for Google Play the same way it builds your iOS app, and apps built with Ruby Native are already live there. Your Rails backend doesn't need to change. Read the Android docs.

How is this different from a PWA?

PWAs don't get a real presence in the app stores. Ruby Native gives you a real native app with a native tab bar, push notifications, and an actual store listing. Users find you in the store, not via a browser prompt.

How is this different from Hotwire Native?

Hotwire Native gives you more control but requires writing Swift and Kotlin code. Ruby Native is for teams who want to be in the app stores without touching native code.

Can't I just have AI write the Hotwire Native app?

You can, and it will hand you a working shell in an afternoon. Then you own it: two codebases in languages nobody on your team reads, certificates and profiles, App Store review, and whatever September's iOS release breaks. Since spring the changelog has fixed dozens of platform edge cases, from keyboards covering inputs on older Android WebViews to an OAuth cookie that could route sign-in to the wrong app, and an agent-written shell ships with every one of them until your users find them. AI moved the cost of the first build to nearly nothing and left the cost of the fifth year where it was. Ruby Native is priced against the fifth year. If you would rather own the native layer, Hotwire Native is the right call, and the source you download from us is a normal Xcode and Android Studio project if you change your mind later.

How is this different from Capacitor?

Capacitor requires you to maintain a full Xcode project. Ruby Native is config-driven. You never open an IDE, never write Swift, and never manage native dependencies. Just YAML and Ruby.

Does it work with my existing Rails app?

Yes. Ruby Native works with any Rails app regardless of frontend framework. Hotwire, Inertia, HTMX, React, Vue, Stimulus, or plain ERB all work as-is. The Rails libraries you already use keep working too, including Devise, OAuth, Active Storage, Action Cable, and Trix. Add the gem, run the generator, and you're up and running.

Do I need a Mac to build the iOS app?

No. Cloud builds handle everything. You push your config, we compile the app, sign it, and deliver it to TestFlight. All from your Rails project, on any operating system.

Do I need an Apple Developer account?

Yes. Apple requires a $99/year membership to publish apps. You don't need it to preview your app, but you'll need it before your first cloud build.

Why does the App Store Connect key need the Admin role?

Apple ties cloud signing and bundle ID registration to the Admin role and offers no way to grant either to an App Manager or Developer key, so a lesser role could upload builds but not sign them. The key is encrypted at rest, handed to a fresh build runner for the length of one build, and you can revoke it in App Store Connect at any time without affecting apps already in the store. The security page lists everything Ruby Native holds and how to take it back.

What do I actually get access to?

The full native shell source code for both platforms. Real Xcode and Android Studio projects you can open, build, and modify. Cloud builds are a convenience layer on top. You're never locked into our infrastructure to ship your app.

What happens if I cancel?

Your app stays live in the App Store and on Google Play. Your users are completely unaffected. You keep the source code at the version you had. You lose cloud builds, future updates, and in-app subscription management (Business). When a new OS version ships, you can resubscribe to get the latest native shell and cloud builds again.

What happens if Ruby Native shuts down?

Your app keeps working. It loads its config and every page from your Rails app, not from us, and Apple and Google host the binary. The only thing that stops is a launch ping the app already ignores when it fails. Download the native source from your dashboard whenever you like: it's a real Xcode and Android Studio project you can build and ship yourself or hand to any iOS developer, and Advanced Mode runs on Hotwire Native, the open-source library 37signals maintains, so most of what you inherit is a stack the Rails community already knows. More on what we hold and how to take it back.

Can my whole team use one account?

Yes. Accounts have unlimited members and no per-seat pricing. Invite teammates from Settings.

Can I build a staging app?

Yes, for free. Every app builds to TestFlight and Google Play's internal testing without a subscription. Point a second app at your staging URL and subscribe only for the one you ship.

What if I need more native features later?

Ruby Native is the starting point, not a dead end. If you outgrow YAML configuration, graduate to Hotwire Native for deeper native control. Your Rails backend stays mostly the same at every step. There's no lock-in and no rewrite. Book a mobile playbook if you want help planning the next step.

Your Rails app could be in the stores this week.

Add the gem, configure your tabs, and preview on your phone. No native code, no native IDEs, no hassle.

Not ready yet? Subscribe to the newsletter.