Built with Ruby Native

Foxance icon

An existing Rails app, in the App Store in two days.

Ender Ahmet Yurt is a Rails developer in Turkey. Foxance is the personal finance tracker he built for himself, and it was the first customer-built Ruby Native app to reach the App Store.

“I didn't open Xcode once. I didn't write a single line of Swift. Just some YAML files and a bit of HTML and CSS.”
Ender Ahmet Yurt

Ender Ahmet Yurt

Ruby Native Customer

A spreadsheet is not an app

His path there started with Spendee, the finance app he used for years. When it stopped fitting the way he wanted to track his money, he moved everything into a spreadsheet. That worked for a while, but a spreadsheet is not an app.

So he built Foxance in Rails. Then he made it responsive. Then he added a PWA mode so it would feel app-like on his phone. Each step got closer, and none of them got him into the App Store.

He tried Ruby Native once and dropped it

Before Foxance, Ender had tried Ruby Native on a smaller project. It felt buggy, the documentation was thin, and he put it down. That is worth saying plainly: the first attempt did not win him over.

He came back for Foxance because the alternatives were worse. Hotwire Native still meant Swift and an Xcode setup he did not want to own. A native app over a JSON API meant rebuilding every screen and maintaining two codebases forever.

Both took too long. Ruby Native got me from zero to TestFlight in a day.
Ender Ahmet Yurt

The app was in the App Store two days later.

What Ender would still change

A two-day path to the store has a price, and Ender is direct about it.

The app isn't 100% native and I know it. Some people pointed out the design on social media. They're right.
Ender Ahmet Yurt

The gap is real, and it is what shipping in two days instead of two months costs. Ruby Native is closing it incrementally, native page transitions first, with richer interactions after that.

His other two notes are fair and only one of them is mine to fix. App Store fees are Apple's. The product is still maturing, which is true, and the reason a case study like this one is worth reading with your own project in mind rather than as a promise.

Read Ender's full account on his blog →

Why Ruby Native

The five approaches Ender tried

Ender weighed five ways to get Foxance onto a phone. Here's how they stacked up, in his framing.

Approach Pros Cons

Responsive web

  • Zero new tooling
  • Same Rails app, same deploy
  • Not in the App Store
  • No native feel

PWA

  • Installable on the home screen
  • Works offline if configured
  • Still not a real App Store listing
  • iOS PWA support is uneven

Hotwire Native

  • Real native shell over a Rails app
  • Open-source, by 37signals
  • Swift and Kotlin still required
  • Xcode setup felt heavy

Native Swift + JSON API

  • Full native feel
  • Total UI control
  • Rebuild every screen in Swift
  • Two codebases forever

Ruby Native

Chosen

  • YAML configuration, no Swift
  • Cloud builds, no Xcode setup
  • Shipped to App Store in two days
  • Publishing costs money
  • Not fully native
  • Still maturing as a tool

From Ender's blog post: How I built a Rails app for the App Store without writing Swift.

What Ruby Native made possible

The framework features Ender used

Foxance keeps the native side simple. The whole iOS experience comes from one YAML file.

Native tab bar

The four tabs at the bottom of Foxance are a real UITabBar, configured in YAML and rendered with SF Symbols. Each tab points at a Rails route, and the transactions tab uses eager loading so it's already rendered when Ender taps it.

# config/ruby_native.yml
tabs:
  - path: /dashboard
    icon: house
  - path: /transactions
    icon: list.bullet
    eager: true
  - path: /reports
    icon: chart.bar
  - path: /settings
    icon: gearshape

Cloud builds, no Xcode

Ruby Native runs the iOS build on hosted infrastructure. One click in the Ruby Native dashboard produces a signed binary, ready for TestFlight without certificates to manage or Apple Developer portal clicks.

Automated App Store screenshots

The screenshots in Foxance's App Store listing are rendered automatically from the Rails routes Ender configured, with no Simulator dance or manual capture.