Settings

Theme

I'm Sticking with Native iOS Development

riveralabs.com

35 points by riveralabs 2 years ago · 24 comments

Reader

pzo 2 years ago

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 2 years ago

    > - 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 2 years ago

      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 2 years ago

        > 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 2 years ago

          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 2 years ago

            > 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 2 years ago

    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 2 years ago

    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).

  • riveralabsOP 2 years ago

    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 2 years ago

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 2 years ago

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 2 years ago

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 2 years ago

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 2 years ago

    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 2 years ago

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

akmarinov 2 years ago

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 2 years ago

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!

  • riveralabsOP 2 years ago

    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 2 years ago

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 2 years ago

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 2 years ago

    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.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection