Why I'm still writing iOS apps

8 min read

This morning I read Wiwi from NiceChord’s post “Why Not Apps” and felt a lot of resonance, though I also have some different thoughts.

Wiwi advocates for building tools with web technologies: write once, cross-platform, no installation, no review process, aligned with the free software philosophy. Rather than locking software in closed stores, he wants users to be able to “just open and use” it.

As an iOS indie developer for 10 years, I often wonder: Should I fully switch to web or cross-platform? After all, platform risk is real: one policy change, one account suspension, and all your efforts are wasted. Worse, anything written in Swift is hard to port to other platforms in the short term.

It’s also possible that iOS 26’s ugly Liquid Glass UI design has made me seriously doubt Apple. What are they thinking? Please give me back my minimal Flat Design!

If there were a powerful enough E-ink Android phone, or a truly open-source phone platform, I’d probably switch.

My iOS developer journey

About ten years ago, as a CS graduate, I faced a major life choice: frontend or backend? If frontend, web or iOS or Android?

I’ve never been interested in backend or algorithms (so even now I still can’t solve LeetCode problems). For me, building products people love to use is more important than whether you can scale to millions of users. Without good user experience, no one will use it anyway! So frontend was the obvious choice.

And to have good user experience, you need to be able to turn design into code. Back then, I hated writing CSS1 the most. Seeing all the browser compatibility issues, responsive design, floats, positioning… I gave up on web. Android had too many screen sizes, lax review process leading to poor user experience, and poor users, so I decisively chose iOS.

Coincidentally, Stanford had the famous CS193P - Developing Apps for iOS course available, and I later became a TA for that course. From then on, I embarked on the path of no return, my entire career has been iOS development. (By the way, iOS has fewer interview questions too!)

The love-hate relationship with the App Store

Let me start with what I hate.

Notification spam is annoying. Every app wants to remind you: time to come back! Time to pay! Time to watch ads! I’ve turned off notifications for all apps on my phone, but it’s still hard to prevent. The more developers push, the more users use, the higher the app ranks.

Subscriptions are even more evil. Apps that used to be $10 one-time purchases now cost $10 per month. Under the guise of “continuous updates,” many just treat you as an ATM or cash cow. Many apps don’t need to be subscriptions at all.

The App Store is like a big casino. Look at the top 100 free games - they’re all garbage games trying to drain your wallet and attention. Games like Survivors.io, Clash Royale - they’re all addictive, but they’re all using psychological tricks to get you to spend money. Like you can waste 1 minute of your life watching an ad to get game currency, but save so much time! Or they set growth curves so players will inevitably hit walls, but you can immediately break through if you buy the monthly pass! Of course you’ll immediately hit another wall at a higher level, and this goes on forever. Very disgusting.

And Apple takes 15-30%2. App ranking is primarily determined by how much you can make for Apple and how long users use your app. This leads developers to only choose subscriptions and enable notifications. Garbage mobile games and unscrupulous developers are disgusting, but why fight against money and stock prices? So the entire system rewards evil in some ways.

But… I’m still in this system. Why?

The benefits of the App Store

The App Store is actually a win-win for both users and developers.

For users, the App Store solves a real problem: trust.

My parents don’t know what HTTPS is or how to judge if a website is safe. But they know that downloading from the App Store and buying apps there “should” be fine. This trust mechanism alone is already very valuable.

For developers, the App Store actually handles a lot of annoying stuff for us:

  • Payment processing (have you tried handling refunds and invoices yourself? Super annoying)
  • Global distribution (automatically handles taxes in different countries)
  • User trust (new brands have a hard time building trust)
  • Organic traffic (search and recommendations)

Yes, Apple taking 15-30% is expensive. But if you think of it as an “infrastructure usage fee,” it’s not entirely unreasonable.

Technical advantages of native apps

After discussing the App Store, I also want to talk about the technical advantages of native apps.

Experience and capabilities: If your app needs to frequently access the camera, process low-latency audio, provide widgets, integrate shortcuts, execute reliable background tasks, manage offline databases, connect to Bluetooth devices… these are all mature and stable on native platforms, with relatively controllable development and debugging costs.

Web is of course improving, and web apps are getting more powerful. And compared to native apps, they have the advantage of no installation required, making distribution and sharing much easier. But every time I see “Chrome supports it but Safari doesn’t” or “users need to manually allow this and that permission,” I’m glad I chose native development. At least on iOS, an API is an API, no need to worry about browser differences.

(Of course, this might just be an excuse I’m making for not wanting to write JavaScript.)

Real advantages of native apps

Beyond the technical level, the business advantages might be more important:

1. Distribution and retention: Although the App Store has review barriers, rankings, ratings, and editorial recommendations are still important traffic sources. For new apps without brands, the chance of being discovered in the App Store is still easier than starting from scratch in the vast ocean of the web.

My app has no website and no marketing. All users come from App Store search. If it were a web version, I’d have to do SEO myself, buy ads, manage social media… just thinking about it is exhausting. Also, just seeing all the positive user reviews every day makes me happy.

2. Users are willing to pay: On the web, people expect things to be free. In the App Store, paying is the norm. Especially since other app peers and pioneers have paved the way for you, you just need to follow their footsteps and set similar prices. You can charge for the same functionality when its an app, but not a website. That’s reality. (Unless you’re doing SaaS.)

3. The power of notifications: Sounds annoying, but for certain applications (learning, fitness, habit formation), regular reminders are core value. Web apps have a hard time doing this.

4. Local computation is more private: Ironically, the controlled App Store actually makes local computation apps more prevalent. Many apps, including mine, don’t need servers at all and don’t need internet to run. All data is on the user’s phone, which not only saves battery but also prevents data leaks. Apps with Google Analytics or ads are a different story.

Realistic compromises (or excuses)

To be honest, it’s mainly about money.

Web versions are indeed free, but freedom doesn’t pay the bills. My apps bring stable monthly income, allowing me to be a full-time indie developer. If I only made web versions, I’d probably have to go back to work.

And there’s a harsh reality: having revenue gives you motivation to keep improving the product.

I’ve seen too many open-source projects that start with enthusiasm but stop updating after a few months. It’s not that developers don’t want to do it, but running on passion alone is really hard to sustain. On the contrary, when users are willing to pay, it not only provides the strongest signal for “is my app useful,” but also gives me responsibility (and motivation) to continue optimizing and providing better products.

No right or wrong, only personal trade-offs

If you ask me for advice, as an iOS indie developer I’d answer like this:

Want freedom? Build web versions. Accept the reality that maybe not many people will use it, but at least you don’t have to worry about Apple.

Want to make money? Build iOS apps3. Accept being charged commission, being reviewed, being controlled, but at least the probability of supporting yourself is higher.

Want impact and to provide the most value? Honestly, choose whichever platform can reach more people. Impacting 100,000 people but not being free might be more meaningful than being free but only impacting 1,000 people. (Of course, this is just my thought, not necessarily right.)

This is also a bit like the question of whether writers should use social media to promote their articles. According to the above advice, if I wanted impact, shouldn’t I use the social media platform that reaches the most people? I still don’t want to use social media. Maybe because I think the harm it brings to me outweighs the benefits.

Currently for me, using the App Store has more benefits than drawbacks. It seems okay for now, no need to change careers yet. I can continue to criticize the App Store as evil while continuing to publish apps. At most I’ll just remove ads.

It’s contradictory, I know, but people are inherently contradictory beings with double standards.

I think Wiwi’s consistent pursuit of free software is much more consistent than me, worth learning from!

Long term, I probably still want to break free from iOS and the App Store platform. This personal website and newsletter are small attempts at removing platform risk.

Maybe one day Apple really does ban me, and I’ll write another post “Why I’m no longer building iOS apps.” But until then, I’ll keep opening Xcode and writing Swift.

Footnotes

  1. Honestly, with Tailwind and AI now, writing CSS doesn’t seem so scary anymore. This website is built that way. But when it comes to building products that make money, I’m already too deep in the iOS pit to climb out.

  2. Apple provides the App Store Small Business Program, which charges 15% instead of 30% if annual sales are under $1 million USD

  3. As for Android or cross-platform? My advice is to find Product Market Fit on iOS first. Only consider supporting Android if there’s real demand, because just thinking about all those versions, screen sizes, and brands to support is daunting - it adds a lot of maintenance costs. As a one-person team, I’m too lazy to support it, so I’m currently still focused only on iOS. But I’m watching and getting tempted!