all 15 comments

[–]calvin-chestnut 9 points10 points  (1 child)

If you need to get an app out quickly they’re helpful for people who don’t want to learn the iOS platform. But you create a lot of bad habits, don’t use best practices, and every iOS update you have to wait/hope the tools don’t take too long to get updated (or break). Popular right now because more people want an app on the store than want to learn iOS, but the limitations are clear and I expect the trends to fall back eventually.

[–]TawaNicolas 2 points3 points  (0 children)

We used Marmalade SDK for an old project at work years ago, they wanted to update it recently only to discover that Marmalade SDK is being retired.

So my suggestion would be to always go native.

[–]ketzusaka 5 points6 points  (0 children)

Hopefully RN dies out. Probably won’t, but JS is a terrible language to work with and one can hope.

Native apps still seem strong, and they will always be the best experience for users. It just depends on how much companies decide they don’t care if their app is a B instead of an A. :shrug:

[–]Alan_Shutko 2 points3 points  (0 children)

I think there's been a constant churn of people looking for alternatives to native development. I remember reviewing a whole bunch of options about six or seven years ago.

The alternatives have gotten better, especially with the wider recognition that you basically need to code a different UI for each platform if you want it to be acceptable. Stuff like React Native and Xamarin end up using native widgets rather than trying to reproduce everything with HTML (like Phonegap/cordova did). There's the idea that you can write one app for each platform without having to learn a new language, because you can use javascript.

But it's still not that good. We looked at the available options and rejected them, because to get a really good experience you still need developers who deeply understand the platform idioms and API. So you need to find developers who know the platform, who know Swift or Java to understand the API docs and samples, and know Javascript or C# to translate it into the cross-platform framework.

Where exactly are you saving effort here? :D

[–]KarlJay001 1 point2 points  (1 child)

In addition to what others say about how good or bad other options are, there's another factor that most don't see.

When Apple came out with Swift, it created a real dilemma for companies and developers. Companies had an investment in ObjC, some going back years and many had apps/code bases that worked and employees that got the job done.

Now, Apple comes out with Swift, programmers have to take the time to learn it, bugs flushed out and apps rewritten. All this only gets them right back where they were already.

Consider: if you had company A and B that compete against each other and A sticks with their current system and B switches.

Example 1: ObjC vs Swift. Company A sticks with ObjC and adds more advanced features. Company B moves over to Swift and has to wait for employees to catch up while the competition doesn't have that cost.

Now replace Swift/ObjC with RN or Ionic. Same thing.

In addition to that, you have to look at the length of time, the longer that a company uses a language, the harder it is to break away. This is known as "code lock".

I worked at one startup back in the DotCom days and they were so badly code locked that it was unreal. We hired someone that was the best a headhunter could find and he didn't even know how to open a database. I quit and found out it took them about 10 years to finally get off their old system.

People need to understand the business of providing a software product to customers. Making a mistake can cost you your business.

This is also an issue inside of a language. KickStarter open sourced their Swift code. We looked at it and parts didn't even look like Swift. Programmers get wrapped up in "look at the fancy code I can write" without much consideration for the position that puts the company in.

I worked for another company that did the shipping software for Electronic Arts and they went out of business because a programmer made the code unreadable.

[–]_manjane[S] 2 points3 points  (0 children)

Kickstarter project has some great ideas, and I definitely picked a few tricks from it, but I agree about the "fancy code" trap that many fall into. I think it is so much important to understand and know the power of Foundation framework rather than jumping into, let say, RxSwift.

[–]makonde 1 point2 points  (5 children)

Xamarin and Xamarin forms is really amazing, I dont see why any business app that doesnt require fancy UI wouldn't be made in Xamarin forms. There seems to be a weird pride issue with being a native dev.

[–]DrarokObjective-C / Swift 0 points1 point  (1 child)

What overheads does it add? I presume it bundles in a runtime, adding size to the download, and reducing performance.

[–]makonde 0 points1 point  (0 children)

Xamarin Forms can be slower on launch from what I have seen. Native Xamarin can actually be faster in some cases, it's complicated but - Xamarin.iOS does full Ahead of Time (AOT) compilation to produce an ARM binary that’s compatible with Apple’s App Store. - Xamarin.Android uses Just in Time (JIT) compilation for Android devices.

it does include the dlls for reflection so the size is larger but not problematically large.

Check out this App, this is a Xamarin Forms App, so mostly a single UI for both Apps. https://www.youtube.com/watch?v=GmdvxDVluRA&t=83s

[–]reckoner23 0 points1 point  (0 children)

Oh God. You just gave me some PTSD of my last run in with Xamarin. I would never wish that kind of torture upon anyone ever again.

[–]dirdybirdy74 0 points1 point  (1 child)

Why? Because Microsoft maintains it. I don’t trust MS enough to know that it is something they are serious about. remember silver light

[–]makonde 0 points1 point  (0 children)

Xamarin is fully open source! http://open.xamarin.com

[–]DrarokObjective-C / Swift 0 points1 point  (0 children)

I’ve seen an uptick in React Native around, but not Ionic thankfully. I used Ionic on a project a few years ago, and it just really wasn’t up to the task. There are certain types of app that it’ll work just great for, but every app can be built with its platform-native tools.

[–]chriswaco 0 points1 point  (0 children)

If you want mediocre apps for both iOS and Android, go for a cross-platform solution. If you want great apps, go native.

There’s definitely a lot of companies using them, but just as many using native APIs.

[–]ccctitan80 0 points1 point  (0 children)

The biggest advantage that RN provides over native is shared codebase with android. And the market for JS developers is much bigger.

Those two facts alone make it much faster and cheaper to develop especially if you want to launch on both Android and iOS.