# Ruby Native > Turn your Rails app into iOS and Android apps. Any frontend framework. No Xcode or Android Studio required. Complete docs as a single markdown file: https://rubynative.com/llms-full.txt ## Key pages - [Homepage](https://rubynative.com/): What Ruby Native is and how it turns a Rails app into a native app. - [Pricing](https://rubynative.com/pricing): Plans for shipping to the App Store and Google Play. - [Try Ruby Native](https://rubynative.com/try): Preview your own Rails app on your phone in minutes, no account required. - [Integration guide](https://rubynative.com/guide): Step-by-step guide to adding Ruby Native to an existing Rails app. ## Documentation - [Documentation](https://rubynative.com/docs.md): Learn how to get the most out of Ruby Native. These guides cover common features you can add after your first preview. - [Setup](https://rubynative.com/docs/setup.md): Add the gem to your Gemfile and run the install generator. - [Tabs](https://rubynative.com/docs/tabs.md): Define your tab bar in config/ruby_native.yml with a title, path, and icon for each tab. - [Icons](https://rubynative.com/docs/icons.md): Ruby Native uses native icon libraries for tab bar and button icons: SF Symbols on iOS and Material Symbols on Android. Think of either as Font Awesome or... - [Navigation bar](https://rubynative.com/docs/navbar.md): You have two options for the navigation bar: a native one provided by Ruby Native, or your own web-based one. We recommend the native navigation bar for most... - [Form handling](https://rubynative.com/docs/forms.md): When a user submits a form and the app navigates to a success page, tapping "back" should skip the form and return to the page before it. Ruby Native marks... - [Inertia (React & Vue)](https://rubynative.com/docs/inertia.md): Ruby Native includes first-class support for Inertia.js apps using React or Vue. This guide covers the one-time setup. Once configured, all the feature... - [Appearance](https://rubynative.com/docs/appearance.md): Customize your app's colors and layout in config/ruby_native.yml. - [Error screen](https://rubynative.com/docs/error-screen.md): When the app fails to load a page it shows a native screen with an icon, a short message, and a retry button. - [Authentication](https://rubynative.com/docs/authentication.md): Ruby Native reuses your existing sign in and registration screens in the native app. There's no need to build separate native auth flows. Your web forms,... - [OAuth](https://rubynative.com/docs/oauth.md): Ruby Native handles the complete client-side OAuth flow for Sign in with Google, GitHub, and other providers. Users sign in through a secure system browser,... - [Linked domains](https://rubynative.com/docs/linked-domains.md): Linking your domain to the app makes the website and the app act like the same thing. Tap a link to your site in Messages or Gmail and it opens in your app... - [Back buttons](https://rubynative.com/docs/back-buttons.md): Ruby Native can show a back button when there is navigation history. The gem ships a small CSS file that handles showing and hiding the button automatically. - [Root pages](https://rubynative.com/docs/root-pages.md): Force a page to appear as the first and only screen on the navigation stack, with no back button. - [Floating action button](https://rubynative.com/docs/fab.md): Add a native floating action button (FAB) for a primary action on the page, like "new post" or "compose message". It sits above the tab bar, or at the bottom... - [Barcode scanner](https://rubynative.com/docs/barcode-scanner.md): Add a button that opens the native camera scanner. On a successful scan the value fills a field on your page and a ruby-native:scan event fires, so it works... - [Haptics](https://rubynative.com/docs/haptics.md): Trigger device vibrations when users tap buttons, submit forms, or complete actions. Haptics add tactile feedback that makes your app feel more responsive... - [Push notifications](https://rubynative.com/docs/push-notifications.md): Ruby Native sends push notifications from your Rails app to iOS and Android devices. The gem provides the native_push_tag helper to register devices and a... - [Badges](https://rubynative.com/docs/badges.md): Update the app icon badge and tab bar badge from regular page loads. Badges stay in sync as users navigate, without needing to send a push notification. - [Toasts](https://rubynative.com/docs/toasts.md): A toast provides simple feedback about an operation in a small, dismissable popup. They are like flash messages in Rails, but built with native elements. In... - [In-app review](https://rubynative.com/docs/review.md): Ask the operating system to show the App Store or Google Play rating prompt right inside your app, without sending the user to the store. Render the signal... - [In-app purchases](https://rubynative.com/docs/in-app-purchases.md): Add subscriptions to your Ruby Native app. Your users purchase directly in the app via Apple's StoreKit and your Rails app handles the rest. No third-party... - [Permissions](https://rubynative.com/docs/permissions.md): Both iOS and Android require apps to declare which sensitive capabilities they need. Ruby Native uses one set of dashboard fields to configure permissions... - [Screenshots](https://rubynative.com/docs/screenshots.md): Both Apple and Google require screenshots before you can publish a production listing. They're often the first thing a potential user sees in store search... - [CLI](https://rubynative.com/docs/cli.md): The Ruby Native CLI lets you deploy builds and manage your app from the terminal. - [Advanced Mode](https://rubynative.com/docs/advanced-mode.md): Advanced Mode replaces web navigation with native screen transitions. Pages push and pop with the same animations users expect from any native app, complete... ## iOS - [iOS](https://rubynative.com/docs/ios.md): Step-by-step guides for configuring your Apple Developer account, shipping to TestFlight, and submitting to the App Store. - [Apple Developer Program](https://rubynative.com/docs/ios/enrollment.md): You need an Apple Developer Program membership to distribute apps through TestFlight and the App Store. Ruby Native uses your membership to sign builds and... - [Developer credentials](https://rubynative.com/docs/ios/credentials.md): Ruby Native needs three things from your Apple Developer account to sign your app and upload it to TestFlight: your Team ID, an App Store Connect API key... - [App Store Connect](https://rubynative.com/docs/ios/app-store-connect.md): App Store Connect is where Apple manages your app's listing, TestFlight builds, and App Store submissions. Before Ruby Native can upload a build, your app... - [Push notifications](https://rubynative.com/docs/ios/push-notifications.md): Configure APNs credentials so your Rails server can send push notifications to iOS devices. If you haven't yet, set up the Rails side first. - [App privacy](https://rubynative.com/docs/ship/app-privacy.md): Apple requires every app to disclose what data it collects through privacy "nutrition labels." You fill these out in App Store Connect before your first... - [In-app purchase setup](https://rubynative.com/docs/iap/app-store-connect.md): Create your subscription products in App Store Connect so users can purchase them in your app. - [Submitting your app](https://rubynative.com/docs/ship/submission.md): Your build is on TestFlight, your screenshots are uploaded, and your privacy questionnaire is done. Time to submit. - [App Store review](https://rubynative.com/docs/ship/app-store-review.md): Apple reviews every app before it goes live. If your app wraps a website without adding native value, it will be rejected under guideline 4.2 (Minimum... ## Android - [Android](https://rubynative.com/docs/android.md): Step-by-step guides for configuring your Google Play Console account, shipping to internal testing, and promoting to the production Play Store. - [Developer account](https://rubynative.com/docs/android/developer-account.md): You need a Google Play Developer account to distribute apps through the Play Store. Ruby Native uses your account to host your app listing and accept builds... - [App listing](https://rubynative.com/docs/android/app-listing.md): Play Console is where Google manages your app's listing, internal testing tracks, and Play Store submissions. Before Ruby Native can upload a build, your app... - [Invite Ruby Native](https://rubynative.com/docs/android/invite-publisher.md): Ruby Native uploads your Android builds using a shared Google Cloud service account. To grant the build pipeline permission to upload AABs for your app,... - [Push notifications](https://rubynative.com/docs/android/push-notifications.md): Configure FCM credentials so your Rails server can send push notifications to Android devices. If you haven't yet, set up the Rails side first. - [Internal testing](https://rubynative.com/docs/google-play/internal-testing.md): Internal testing is the fastest Play track. Builds are available to up to 100 testers within minutes of upload, with no Play review. It needs almost nothing... - [Data safety](https://rubynative.com/docs/google-play/data-safety.md): Google requires every app to disclose what data it collects and how it's handled through the Data safety form. You fill this out in Play Console before... - [Submitting your app](https://rubynative.com/docs/google-play/submission.md): Ruby Native uploads every Android build to the Internal Testing track. Internal testing skips Play review and needs almost nothing beyond a valid AAB, which... - [Play review](https://rubynative.com/docs/google-play/play-review.md): Google reviews every app before it goes live on the production track. Internal testing builds skip review, so you can validate your app end-to-end before...