from Hacker News

Ask HN: How to Build an iPhone App in 2020?

by NavyDish on 9/11/20, 2:26 AM with 15 comments

I am a product person at a B2B startup and have been toying around with getting down to building a few side projects. While I understand the basic components of Ops, Backend, Frontend -- I have very little idea about Mobile app dev. The most that I have done a few years ago is basic JS/CSS for frontend.

If I am looking to build an app like Breaker (https://www.breaker.audio/) in 2020, what are the best practices and starting points that could be helpful?

  • by gt565k on 9/11/20, 3:22 PM

    Use Swift. Go native or go home.

    I've prototyped apps with React Native, and it was a dependency nightmare. More time was spent researching and hacking in fixes and dealing with upgrading the app to the latest version than actually building the app.

    In contrast, we have an iOS app that was build 11 years ago, and it still runs flawlessly on the latest iOS version. Apple supports their environment, whereas, in ReactNative, even minor versions introduce breaking changes.

    Hybrid mobile solutions are a nightmare, unless you're building a basic crud app that doesn't interact with the hardware on the phone. But at that point, just build a solid mobile web applications.

  • by mikece on 9/11/20, 3:44 AM

    First option: PWA

    Second option: Ionic

    Third option: if using web-based/hybrid cannot give you the features you need (which I seriously question) then vendor native is the way to go (Kotlin/Android Studio for Android, Swift/Xcode for iOS).

    Forget cross-platform options like Flutter, React Native, or Xamarin: they give you short term POC success at the cost of doubling the effort to deliver a MVP if you hit any edge cases not covered by their 80/20 approach.

  • by alfonsodev on 9/11/20, 2:06 PM

    I recommend you Let's build that app Podcast course[1]

    It's a paid course, but will give you source code and save you a lot of time, the instructor has a Youtube channel[2] with the same name, in case you want to check his content first and see if you like it.

    [1]https://www.letsbuildthatapp.com/course/Podcast

    [2]https://www.youtube.com/channel/UCuP2vJ6kRutQBfRmdcI92mA

  • by davidhbolton on 9/11/20, 10:46 AM

    If performance is an issue then native tools such as Java, Swift or even C# are indeed the way to go. My own experience with C#/Xamarin on iPhone 6 was that it was very performant, in excess of what I anticipated. A specific example. I built a Uber type app using the Google iOS SDK.

    It held all UK addresses (out of 29 million and 350,000 points of interest-ATMS, supermarkets, railway stations etc) within a 25 mile radius cached in RAM. Scrolling the map with your fingers, it used the lat/lng of the screen centre and was able to search the in-RAM addresses to return the street the map was over as a String. This matched what the map was displaying.

    If you did a search of an address as it was typed character by character, within 1/10th of a second it could return the top 100 matching addresses, sorted by proximity. I challenge anyone to do that in JavaScript!

  • by rahulchhabra07 on 9/11/20, 3:55 PM

    If you can learn both and can do without serving android users for a long long time, choose Swift. Use RN if only you'll need to serve both right in the first 2-3 years.

    On the first glance, RN is less reliable and has performance issues. But mature apps are able to build enough to make sure these aren't issues any more.

    We shifted our app from Native Android to RN. Today, it gives native like experience, have extremely fast dev times and can port it for iOS as well. But for around six months or so, the app had all these issues.

  • by rusinov on 9/11/20, 10:18 AM

    If you want good app that feels like "a native citizen": Xcode and native tools.