Ruby Native vs a PWA

A progressive web app installs from the browser and never touches the app stores. Ruby Native puts the same Rails app in the App Store and Google Play as a native app, with native navigation and push notifications on both platforms. This page is the trade-off in each direction.

#What a PWA gives you

A PWA is your website with a manifest and a service worker. On Android, Chrome offers to install it. On iOS, the user adds it to the Home Screen from Safari's share sheet, and Safari never prompts for that on its own. Once installed it opens full screen with its own icon.

Since iOS and iPadOS 16.4, a web app on the Home Screen can request permission for push notifications, as long as the request comes from a tap, and it can set a badge on its icon. In a Safari tab, neither works. On Android, both have worked for years.

There is no review, no listing, and no store fee. There is also no presence where people search for apps. Google Play will accept a PWA packaged as a Trusted Web Activity. The App Store has no equivalent, so on iOS a PWA stays a Home Screen shortcut.

#Where a PWA is the right call

  • Your users already live on your site and nobody is asking for an app in the store.
  • You want to ship today with no developer accounts, no review, and no fee.
  • It is an internal tool, or an audience that will install from a link you send them.
  • You are fine with iOS users adding it by hand from the share sheet.

If that is your situation, a PWA costs nothing and Ruby Native is not the next step. The two are not exclusive, either. A Rails app with a web manifest keeps working as a PWA on the web, and Ruby Native ships the same app to the stores.

#Where Ruby Native is the right call

Ruby Native is for the moment someone asks "when's the app coming?" and means the one in the store.

  • A store listing. Your app in the App Store and Google Play, with a name, screenshots, and reviews, where customers search for apps.
  • Native navigation. A native tab bar, and in Advanced Mode native push and pop transitions, a native navigation bar, and swipe to go back. A PWA navigates the way the browser does.
  • Native controls. Menus, navigation bar buttons, a floating action button, haptics, toasts, and a barcode scanner, each turned on from your Rails views.
  • Push on both platforms, from your server. Devices register with your Rails app, and you send from it. No Home Screen requirement, no tap-to-ask, and a tap on the notification opens the right screen. Push notifications.
  • In-app purchases. Subscriptions through the store, which is what Apple requires for digital goods sold inside an app.
  • Built to pass review. Apple's guideline 4.2 rejects a "repackaged website". Ruby Native apps include the native tab bar, push notifications, and real app assets that separate an app from one.

#Side by side

PWA Ruby Native
Where users get it Your site, or Google Play as a Trusted Web Activity App Store and Google Play
Install on iOS By hand, from Safari's share sheet From the App Store
Navigation The browser's Native tab bar, native transitions in Advanced Mode
Push notifications Android, and iOS only after a Home Screen install Both platforms, registered with your Rails app
Store review None Apple's and Google's, which the app is built to pass
Cost Free $199 a month per app, plus the stores' own fees

#Moving between them

Nothing about a PWA has to change to add Ruby Native. The manifest and service worker stay for web users. You add Ruby Native to the Gemfile, run the generator, and the app is on your phone. The setup guide is the whole path.

The business comparison, against hiring a mobile team, an agency, or a React Native rebuild, is on Why Ruby Native. Try the demo app on your phone from /try, or email Joe at [email protected] with your app's URL.