Pablo Hernandez
Why we Built iOS-Only and You Should Too
April 5, 20264 min
Share
← All posts

Why we Built iOS-Only and You Should Too

Defending platform-specific development in an era of cross-platform obsession. How iOS-only enables deeper integration and faster shipping.

Pablo Hernandez
Pablo Hernandez
Founder & Principal Engineer
4 min read
Share

Everyone's building cross-platform. React Native, Flutter, .NET MAUI. The industry consensus is clear: write once, deploy everywhere.

We went the opposite direction. Built Transit Pulse NYC iOS-only. No Android version. No web app. Just iPhone users in New York.

Here's why that was the right call.

The Cross-Platform Lie

Cross-platform promises shared code. What you get is shared problems.

Your Flutter app looks the same on Android and iOS. That's not a feature — it's a bug. iOS users expect iOS patterns. Android users expect Material Design. When you compromise, both platforms feel wrong.

You're not actually saving development time. You're just moving complexity:

  • Platform-specific bugs in shared frameworks
  • Performance issues from abstraction layers
  • Build pipeline complexity across multiple targets
  • Debug sessions where you're fixing the framework, not your app
javascript
// React Native reality check
if (Platform.OS === 'ios') {
  // iOS-specific workaround
} else if (Platform.OS === 'android') {
  // Android-specific workaround for the same feature
}

That's not shared code. That's platform-specific code wrapped in shared confusion.

iOS-Only Advantages

Deeper system integration. Native iOS development gives you access to everything without compromise:

  • Core Location with precise positioning for station detection
  • Push notifications without third-party overhead
  • Native navigation patterns users expect
  • System fonts, haptics, accessibility features built-in
  • Shortcuts integration, Siri support

For Transit Pulse, we needed accurate location services to detect which subway station users are near. Cross-platform frameworks add abstraction layers that reduce GPS precision. Native iOS Core Location provides the accuracy needed for reliable station matching.

Faster development cycles. One codebase. One platform. One App Store review process.

No Android fragmentation testing across Samsung, Google, OnePlus, and fifty other manufacturers. No "it works on my Pixel but crashes on your Samsung Galaxy" debugging sessions.

Better performance by default. Swift compiles to native code. No JavaScript bridge overhead. No virtual machine interpreting your app logic.

The difference is measurable:

  • Cold startup times under 1 second vs 3-4 seconds
  • Smooth 60fps scrolling without optimization tricks
  • Memory usage that doesn't balloon over time

Ship Faster, Learn Faster

Cross-platform development has a hidden cost: delayed feedback loops.

When you're building for two platforms, you can't ship until both work. That creates artificial delays:

  • Longer time to first user feedback
  • More features built on assumptions rather than data
  • Complex testing matrices that slow down iteration

iOS-only meant we could ship Transit Pulse in weeks, not months. Get real users. Fix real problems based on actual usage patterns. Iterate based on live data from commuters, not theoretical user personas.

If the iOS version succeeds, building Android becomes a scaling problem, not a validation problem. Much easier to solve with revenue and user feedback driving decisions.

When iOS-Only Makes Sense

Not every app should be iOS-only. But if you check these boxes, seriously consider it:

Location-dependent features that need system integration. GPS accuracy, geofencing, mapping — these work better natively.

Rapid iteration requirements. Need to ship fast, learn fast, pivot fast.

Small team with limited resources. Two junior developers shouldn't tackle two platforms.

Specific geographic markets where your target users concentrate. Sometimes depth beats breadth.

Complex UI requirements that benefit from native performance. Real-time data visualization, camera features, AR experiences.

Transit Pulse checked all these boxes. Your app might too.

The Technical Win

Native iOS development isn't just about user experience. It's about developer experience and long-term maintainability.

Swift is a modern, safe language. Xcode is a mature IDE with excellent debugging tools. The iOS SDK is comprehensive and well-documented. When something breaks, you're debugging Apple's well-tested code, not a third-party abstraction layer.

swift
// Clean, native location services
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()

// Direct access to all iOS features
let haptic = UIImpactFeedbackGenerator(style: .medium)
haptic.impactOccurred()

No wrapper libraries. No compatibility shims. No waiting for third-party maintainers to support new iOS features. Direct access to everything Apple ships.

The Market Reality

iOS users spend more money. They download more paid apps. They're more likely to pay for subscriptions. If you're building a business, not just an app, iOS-first makes financial sense.

Development talent concentration. Most mobile developers know iOS or Android, not both expertly. Finding excellent Swift developers is easier than finding excellent React Native developers who understand both platforms deeply.

Beta testing is cleaner. TestFlight integration. Simple distribution. Clear crash reports. Android has multiple testing platforms, each with different workflows and limitations.

The Real Question

Stop asking "How do I build for every platform?"

Start asking "Which platform serves my users best?"

For Transit Pulse, that answer was clear: iPhone users in New York who need reliable subway information. Building iOS-only let me serve them better, faster, and with fewer compromises.

Your users don't care about your technology stack. They care about solving their problem efficiently. Sometimes the most efficient path is the narrow one that goes deep instead of wide.

Choose your platform deliberately. Build it exceptionally well. Expand when success demands it, not when conventional wisdom suggests it.

Share

Need a system that doesn't fall apart in production?

Let's talk.

Clean architecture. Honest timelines. Software that ships on time and stays running. No fluff.

Newsletter

Don't miss the next deep dive

Engineering insights, performance breakdowns, and real-world lessons from the trenches. Delivered when it's worth your time.

No spam, everUnsubscribe anytimeOnly the good stuff