I'm Sticking with Native iOS Development

https://riveralabs.com/posts/native_ios_development/

35 points by riveralabs on 2024-05-15 | 21 comments

Automated Summary

The article 'I'm Sticking with Native iOS Development' expresses the author's preference for native iOS app development using Swift and SwiftUI over cross-platform frameworks such as React Native and Flutter. The author attributes this decision to their familiarity with Swift, the efficient app development experienced with SwiftUI, and a personal desire for a simplified lifestyle that focuses on a single platform. They argue that Swift is the programming language they know best, and SwiftUI allows for faster development despite its current limitations. Additionally, focusing on a single platform reduces the need for implementing a backend, thereby simplifying the development process.

Comments

pzo on 2024-05-15

I'm doing the opposite even though been ios dev for a decade and now learning react / react native. Reasons: - golden days of mobile apps are gone, these days less and less people download apps

- it is more important to have desktop / mobile web app these days

- pwa and mobile apps and tech are slowly getting good enough

- if you are native ios or android you are limiting your jobs and business opportunities - native mobile dev is like niche inside niche these days. Probably half of jobs is typescript/javascript/ python related.

- in current market and ai landscape your have to prototype and ship fast to be competitive even at the cost of slighly worse UX

sandofsky on 2024-05-15

> - it is more important to have desktop / mobile web app these days

On what are you basing this? Every normal person I know picks a native app over a web app.

> - pwa and mobile apps and tech are slowly getting good enough

This has been claimed for well over a decade, yet I can't tell the difference as a consumer.

> - if you are native ios or android you are limiting your jobs and business opportunities - native mobile dev is like niche inside niche these days. Probably half of jobs is typescript/javascript/ python related.

Technically a brain surgeon has fewer job opportunities than a dentist, yet they make way more money.

> - in current market and ai landscape your have to prototype and ship fast to be competitive even at the cost of slighly worse UX

This is quite a generalization. I think that in some markets users will tolerate a worse UX, and in some markets UX is everything. My company has done quite well by not compromising UX.

I think it's a false dichotomy that you can either build fast with a web app or slow with a native app. I can build some things in SwiftUI way faster than if I used web technology.

refulgentis on 2024-05-15

I've really enjoy your commentary for years and you have one of the sharpest wits and intellects, if not the sharpest, in tech.

I am challenging myself today, been struggling for many moons with how to word this without being aggressive, and it seems impossible: you have a persistent blind spot about the efficacy of iOS. It's virtually impossible to launch iOS-only today without enough funding that you can ride out the ensuing 1-2 years to also now build out and staff a web app, etc. IIRC you have a distaste for that sort of funding (which I share)

The old Mac indies have brand names and a benefit of a smoother transition since they were there before the App Store. You and your partner were both influencers in the Mac indie community dating back *2 decades* now, and benefited greatly from the visibility of that: didn't Apple have Halide on the Apple Store phones at some point?

It's very, very, very, hard to get to market, get attention, and get to a competitive wage in the US, just on UX and an iOS app, even with a year or two of patience.

sandofsky on 2024-05-15

> It's virtually impossible to launch iOS-only today without enough funding that you can ride out the ensuing 1-2 years to also now build out and staff a web app

Not every product needs a web app.

If you absolutely need a web app, and it matters more than an iPhone app then build a web app first.

> The old Mac indies have brand names and a benefit of a smoother transition since they were there before the App Store.

The only real Mac app I've ever shipped came four years after the App Store. If you're going to call out my privilege, I need you to get the details right.

> didn't Apple have Halide on the Apple Store phones at some point?

Yes, after it had gained traction. The pre-install was an amusing distraction that made zero impact on downloads.

> It's very, very, very, hard to get to market, get attention, and get to a competitive wage in the US, just on UX and an iOS app, even with a year or two of patience.

That is a universal problem with building anything, whether it's a native app, web app, or protein shake. However, I'll argue tons more ways to build traction in native apps than web apps, on both a technical and marketing level.

refulgentis on 2024-05-16

For the record, I'm not "calling out your privilege".

In the stronger tone you've consistently led me to believe you appreciate: I have absolutely no idea what your first mac app being in 2011 has anything to do with what I said, that you might have a slightly skewed perspective on the ability to build a sustainable product on just iOS. I guess that's your way of saying you didn't think you were even getting started / well-known until 13 years ago.

Take it for what it is: someone who benefited greatly from your and a select few others is saying you seem bizarrely myopic when you handwave about "normal people" and "as a consumer". "Prototyping in SwiftUI" made me absolutely cringe. Please try a modern web dev flow, Flutter, probably React Native. Then bizarrely combative coupled with "well if you need web build web" -- oh okay! Good to know an iOS app is enough and rest is irrelevant, unless it isn't.

sandofsky on 2024-05-16

> I have absolutely no idea what your first mac app being in 2011 has anything to do with what I said,

You literally said, "The old Mac indies have brand names and a benefit of a smoother transition since they were there before the App Store." I told you I was never an old Mac indie. My one Mac project shipped years after the iOS App Store was well established. I am showing you that your whole thesis is just factually wrong.

> "Prototyping in SwiftUI" made me absolutely cringe.

I can't find "prototyping" anywhere in the thread.

> Please try a modern web dev flow, Flutter, probably React Native.

I've tried React Native, and even dug into its implementation. It is exactly the convoluted, leaky abstraction that it looks like. In my spare time, I act as therapist for friends forced to support React Native at work.

> you seem bizarrely myopic when you handwave about "normal people" and "as a consumer".

Google "app vs website usage" and you'll find plenty of data to back up what I'm saying. Or just ask your non-technical friends and family how they use their phones.

> Then bizarrely combative coupled with "well if you need web build web" -- oh okay!

Normal people want apps. Sometimes web apps are better from a logistical perspective; for example, if your product is a party-invite platform, it's easier to send a link to a website than ask everyone to install an app.

What absolutely sucks is building a native app with cross platform tools, for reasons that have been explained to death over the last 15 years. It's the homeopathic medicine of software, and just as much a waste of time to debate with practitioners.

dreamcompiler on 2024-05-15

Completely agree. "Download our App!" is a huge red flag. It suggests at best that some VP at the company wanted to check a box and at worst that the company wants to harvest your sweet, sweet personal data and they cannot do so with a mere website.

There are some apps whose existence makes sense like Uber and turn-by-turn navigation but the vast majority of apps now should just be websites.

Ologn on 2024-05-15

There are three billion Android devices in active use. Writing native applications for a platform with three billion active users is niche, but not that niche. Over 100 billion apps were downloaded on Google Play last year.

There probably are more Javascript/React jobs, but there are also more Javascript/React programmers. In mid-2022, many places had trouble finding good senior Android programmers. In the past few months I saw OpenAI, Anthropic, Perplexity etc. looking for Android programmers.

In terms of knowing Java and Kotlin well, there are plenty of Java/Kotlin backend jobs around (don't know about that in hot startups, but outside of Microsoft-world, JVM has been the bedrock of backend for almost 30 years). So that's a logical shift out of an Android job if desired.

Also, Android gives analytics to the business that they have more trouble getting on web. On the web companies are at the mercy of Chrome, Safari etc., with Android they're writing their own app to their own specifications (with some Google Play restrictions).

Where I work, Android and iOS sometimes are ready to launch before the web team has finished their work. How does that fit into prototyping and shipping fast?

It's possible the golden days of launching an app like Instagram and getting acquired a year and a half later for a billion dollars is over, but there is plenty of money to be made. Also, even if a company does launch on web first (most, but not all, companies), if they're successful they often look into launching a mobile app. Even if they start with React Native, KMM or the like they often move to native later (although there are exceptions, I believe Discord launched with RN and it works for them - so different platforms work for different scenarios).

riveralabs on 2024-05-15

I don't disagree with you. Especially the native development limitations. I don't think there's a right or wrong answer here. You just have to adjust your expectations and learn to live with your choices.

yatz on 2024-05-15

Unless you are in the business of building apps for others, in my experience, cross-platform development rarely works. The amount of time you spend on implementing platform-specific conditional logic, dealing with UI latency, additional debugging time due to cross-platform masking actual errors, and above all keeping your codebase in order, outweighs the benefits by a huge margin.

The team that originally started might do a decent job but over time new people come on board, deadlines and other challenges make people start cutting corners and making design choices inconsistent with the original designers leading these codebases to become unmanageable.

What can work with some serious dev team discipline is to build common frameworks that you can use cross-platform and never dare to attempt cross-platform user interfaces.

refulgentis on 2024-05-15

For what it's worth, economically for an individual, it's sort of the reverse in my experience. I feel like I snuck into Google in ~2016 because pure-iOS is so rare. I only had 1 out of 7 interviewers who worked on iOS, 2 who had tangential brief experience, 4 who had never used it. Also, Swift was new, so the people who did know iOS couldn't really speak to it when I used it to write code.

If I'm launching a product, I'm doing Flutter. To me, it's Swift but with no rough edges. Most importantly for a product, it lets me maximize leverage and get cross-platform. The performance is really astonishing compared to my days with React Native, it's native in that it's not being JIT'd.

But if I'm happy with a nice gig / set of consulting clients doing iOS, that's great, probably can do that until the end of time. I think we're seeing the first wave of startups doing Flutter to maximize engineering leverage, but long-term, it's too divisive to have a singular Flutter codebase for most large businesses. They'll specialize.

flax on 2024-05-15

I understand the author's point, sticking with what's comfortable and working.

In a sense, I'm doing the same thing, but what's comfortable and working for me is Flutter. I don't have any Apple devices to develop on (but I do have a work macbook, and can borrow my wife's iPhone), so to target iOS at all, I vastly prefer cross-platform. Apple still makes that artificially difficult in many ways. You can't even upload a build without xcode (mitigated by codemagic.io). My distrubution certificate recently expired and I spent a lot of time on the Apple connect site before realizing there's no way to request a new certificate without using Apple tools that only run on Apple hardware. It should be a button in the same UI that shows the certificate!

Anyway, without cross platform tools like Flutter, I wouldn't target iOS at all. Apple just takes every opportunity to try to leverage you into their ecosystem, and I'm not going to do that.

And now that the WebAssembly target is officially supported, maybe I won't bother anymore.

airstrike on 2024-05-15

IMHO SwiftUI is so good, no amount of describing its greatness can do it justice... you have to try it to really understand it

rumori on 2024-05-15

I could not disagree more, SwiftUI is a black box that is great when it works but is infuriatingly incomplete to this day. I filed dozens of radars in the past year. I’ve worked on app of the year type applications and they use zero SwiftUI for a reason.

airstrike on 2024-05-15

that's mostly due to the fact that it is "new" (relative to UIKit), but not because it is A Bad Idea

akmarinov on 2024-05-16

Cross platform does seem to be slowly eating away at native apps - if you look at a lot of big companies out there, all of them use cross platform - like GM uses React Native for their car apps, Microsoft uses it in their Office Suite, Skype, Amazon, Shopify, Walmart, Tesla and many many more.

It seems that if you play at scale and are a big company - you're pretty much on React Native or maybe Flutter though that doesn't make a ton of business sense imo.

I wonder at what point Apple looks at things and wonders why they even bother investing so much in Swift and SwiftUI. At which point they'll either

1. Leave it to dry on the vine

or

2. Go the other way and put in a "no cross platform frameworks" in their developer agreement and force companies to use native code.

munchler on 2024-05-15

I think this is a niche of a niche of a niche, but it’s interesting to see the creative decisions young developers are making to carve out a sustainable career. I hope this path works out for you!

riveralabs on 2024-05-15

Thanks!! I'm usually making this decision because I'm an older developer. I'd rather try making it on my own than having 25 year old manager micromanaging me. At this point, I'd rather switch careers than getting a traditional 9-to-5 development job.

moribvndvs on 2024-05-17

That’s great for you. I don’t have the resources to build the same app from scratch for three different platforms at the same time.

giantg2 on 2024-05-15

Isn't true native iOS development objective-C?

But yeah, this article is basically the same for me, only I'm an Android dev. I don't release anything on iOS. I probably would if it wasn't for that $100/year Apple dev fee. My stuff is free, so why should I pay Apple such a high fee. If I did write for iOS, I'd probably do Swift or SwiftUI at first to learn it. Then maybe I'd look at a cross-platform framework.

pjmlp on 2024-05-15

Metal is the last Framework that was designed Objective-C first, everything else now is focused on Swift.

However a big difference to Android, is that you don't see Objective-C shots from Swift team, as Kotlin/Compose folks do against Java (while using Java 8 as counter example, and ignoring the ecosystem Kotlin depends on), which has really put me off from Android.