Native or Cross Platform

That is the Question.

By: Carol Vercellino, CEO & Co-Founder


Hi, I’m Carol Vercellino, the co-founder of Oak City Labs software development agency, and with me here today is my co-founder and CTO of Oak City Labs, Jay Lyerly. Today we’re going to discuss the differences between native and cross platform applications. It’s a question we get asked about all of the time. Hopefully we’re going to give you high-level [information] and maybe some of the pros and cons between the two. Before we start off, we are  a native shop, so keep that in mind.

Watch the video or read on below to learn more about these two options.


Carol: Jay, I know this is one of your favorite topics. Could you please explain to viewers what we mean when we say native platform versus cross platform?

Jay: Okay, so native means that you’re using the native development language and libraries for an application. So I’m probably going to talk about iOS, but this applies to Android as well. So for iOS, that means using a swift application using the native Cocoa Touch library to interact as a system. On the other hand you have cross platform. That used to sort of mean a web app wrapped in a very simple wrapper where it was really just a webpage. But now that usually means more that you’re using a non-native language like JavaScript or C#. And those have their own libraries. JavaScript would use something like reactnative, or C# would use something like zamron. And that’s an interface layer between your app and the system libraries.


Carol: what about some of the new things in the market like Flutter? 

Jay: Flutter is that same kind of mold. It uses a language called Dash, which is Google’s language. Dash uses the Flutter libraries to talk to the system libraries, so there’s still that extra layer in there to translate between the non-native language.


Carol: Okay, so what are some of the benefits of using a native platform?

Jay: So with the native app, you’re going to get access to everything you’re ever going to need. It’s a wide open field. Also you’ve got one less layer in there. You’ve got your code and the system libraries. So that means less software, and less software means less plugs. There’s less to go wrong. 

Now if you look at something cross platform, the big selling point there is that you get to use a different language. So if you have a bunch of JavaScript experience on your team, you can use JavaScript. Or Microsoft shops often have a lot of C# folks, so they can use Xamarin and make these cross platform apps. And the other big selling point is the right ones run anywhere. You build one app, and you can run that on both ioS and Android and some other weird platform that comes up next year. 

So, the downside with that is – with the “right ones run anywhere” thing, it never really turns out that way. First off, iOS and Android are different. Users expect them to run differently, so you often end up with a lot of bifurcated bits of your code where you have one section doing an iOS kind of thing and one section for Android to do an Android thing. So you get really messy code, which is hard to maintain in the long run. 

Also with the platforms, again because there’s an extra layer in there between your code and the system stuff, sometimes they don’t have access to all features. Especially new things that come out, like in iOS 14, which came out a few months ago. It might have features not yet covered by these cross platform libraries. Or more advanced features. If you have an app that does really fancy camera stuff and you want to have access to advanced camera controls, they don’t always cover the whole breadth of the native API.


Carol: Okay, that makes sense. So Apple is kind of known for being difficult sometimes to get your app approved and in the store. Is that ever a concern with cross platform?

Jay: Sometimes it is, because for example, there are certain private APIs that you’re not allowed to use. And sometimes those things change and so with this extra layer, they’ve got to keep up with those things too. So, sometimes people run into problems where their cross platform library isn’t in compliance and they need to upgrade. That means they need to do things to their code, or that upgrade isn’t available yet. Or it’s not stable – things like that. So sometimes that can be an issue.


Carol: Okay, so it sounds like the pros of a native platform are you don’t have an extra layer there and you get a whole lot more access to function on the hardware and the operating system for what you’re developing for. Cons – do you think maybe sometimes it’s a little more expensive if you need to develop for iOS and Android?

Jay: If you’re doing iOS, usually you get one good iOS team member and one good Android person and they can go to town. I think a lot of problems with a cross platform thing is you get one JavaScript person and you think they’re going to do everything. And they might have to, but then they have to do these platform-specific parts which sometimes require a little more expertise in Android, a little more expertise in iOS. So maybe you’ve got one person, but now they have to wear three different hats, so they’re stretched.


Carol: Okay, that makes sense. So last question, and I’m sure this is going to be your favorite one. What’s a situation when it would be okay to use a cross platform app or build something with a cross platform language? And, I worded it that way because I know you don’t like it!

Jay: [Laughter] So, the biggest issue when you’re looking at this thing is the complexity of your app. The cross platform frameworks make really simple apps really easily. Like it’s a great M.O. –  they can throw together really simple things. But the complexity of those things grows really rapidly. So as your app gets more complicated, the complexity of the whole system grows really quickly.

But with a native app, there’s a little more of a hump – especially if you’re not a native developer – to get into that, but the level of complexity of the app doesn’t grow very fast. It’s actually pretty flat. So with a lot of apps, even basic 1.0 versions of your app, you add enough features that those complexity curves sort of cross, and the JavaScript actually becomes more complicated and you have more burden to add new features than a native app. So in my opinion, the native app is really going to be easier to maintain, develop, and add features to in the long run. If you want to do a cross platform app, the only real application I can see for that is when you have something really simple or really static. You want to take a magazine app [for example]. You want to just make some reader packaged as an app. It’s not going to be really feature rich or really performant.


Carol: So it sounds like if you’re assertive, you’ve got a low budget, and you do for whatever reason have to go cross platform, maybe a good thing would be to plan ahead for potentially rewriting in native in the future. Just know that might not be the app that you scale on.

Jay: Yeah, if you’re doing a first version or [working] on a shoestring budget, I think you’re going to hit the wall pretty quickly, and you’re going to have to rewrite that thing next year.


Carol: Alright, well Jay – thank you for discussing this topic with me. I know it’s one of your favorites, you did a good job not doing a full-on rant on it.

Jay: Thank you, Carol!


Carol: If anyone has questions or would like us to explain anything more, we’d be happy to do that. Just please follow along on our Oak City Labs channel, or you can find us on social media. Thank you so much for watching!


Contact the Oak City Labs team to discuss your app idea!