By: Carol Vercellino, CEO & Co-Founder

If you’ve read the news or seen the new series in the ‘Trending Now’ section of Netflix, you’ve probably heard about the guided meditation app, Headspace.

Headspace is a digital health platform that teaches users how to meditate in only a few minutes a day. As of 2020, it has a post-money valuation in the range of $500M to $1B and 2 million paying subscribers.

As you know, creating a successful app doesn’t happen overnight – or on a small budget – but there are valuable lessons and takeaways startups like you can glean from Headspace to apply to your own app development project.

In the video below, we’ll walk you through the onboarding section of the Headspace app and give you a breakdown of the features they include that help convert their trial users to subscribers.



Carol: Hi, my name is Carol, and I’m the co-founder and CEO of Oak City Labs Software Development Agency, located right outside of Raleigh, NC. I also have with me Jay, our co-founder and CTO. 

Today, we’re going to talk about the app, Headspace. What it’s all about, how it works, and why it’s one of the most popular apps in the health tech market today. And maybe what it costs to build an app like Headspace.

So, let’s dive in.

First, what is Headspace? 

Headspace is one of the top meditation, sleep, and focus apps in the app store. We’re going to walk through how it works (to some extent).

So, when you download Headspace – and this is an important feature for most apps – you need to log in. And one of the features that I like that Headspace has is that it includes using your Apple ID to log in. 

Jay, why might that be a good feature?

Jay: The sign-in with Apple ID is something Apple introduced fairly recently. It’s tied to your iCloud account, and you can use that to log in to an app. It’s a privacy-focused login, so the people on the other end get an email address they can contact you with, but it’s a smudged email that’s private that you can turn off later. It’s one of the ways you can centralize your login to make it easier to access your apps, but it also keeps your information private.

Carol: I like that better than signing in with a social network, like Facebook.

Okay, so as you walk through Headspace, we’re in what we call the onboarding screen. The onboarding section is the first two screens you see in an app that tells you what the app is and how it works. 

Now, Jay, I know there are different opinions about onboarding screens. Some people think you should have them, and some people think you shouldn’t. What do you think?

Jay: It sort of depends on your app and what industry you’re in. Onboarding screens serve as a really good introduction for a user. It tells them what your app is all about. 

If it’s a really niche utility app, maybe people who come to your app already know what it is. But, an app like this, where they eventually want to sell you services, they really want to make you feel like you’re welcomed. It will provide some value for you, and they can focus on the benefits that you, the new user, are going to get out of that.

So, on this screen in Headspace, they’re already talking to you about what you’re trying to get out of the app and how you can personalize it, and do some recommendations and stuff later based on your responses.

Carol: That’s on the tech side – where we talk about recommendations. It’s kinda like in Amazon where they say, ‘Other people like you may like things like this’. 

Okay, let’s choose some options.

What’s kind of cool here is that the screens change, so you get different colors, which is nice. Let’s go with ‘staying focused’. 

It tells you what you might expect from the app as well. Now, this is an important screen, particularly if you’re going to sell a subscription, which many people will do because sometimes, with the apps, you can’t make as much revenue as you’d like. 

Now, Jay, with the subscriptions, what’s an important thing for somebody to think about, especially since this is through the app store?

Jay: So, with the app store, they’ve got a pretty tight set of rules about what needs to be on the screen. When you’re making the screen, you can go to the app store for examples and iterate on those examples and put your branding in. 

You’re required to describe what the features are and your subscription options. You’ve also got to have the link to ‘Terms and Conditions’, and a link to restoring purchases if the user has a new phone or something like that. These features are what the app store will look at in the review process to make sure it ticks all those boxes with its guidelines and regulations.

Carol: One of the features I like here in Headspace – in the upper right-hand corner – is you can exit out of this section. I think that’s important because users don’t want to feel trapped. They want to feel like they have options. That’s my theory and personal preference. If I can’t exit out of something, I’m done. I don’t want to subscribe.

Jay: That’s what I would be looking for on these open screens too.

Carol: So, I’m going to exit out of this because I’m not ready to subscribe just yet. Okay, so now see the option to set up notifications. This is where you can control it. Why is this screen important, Jay?

Jay: Because the way iOS works, when an app asks for notifications, it’s going to pop up that system dialogue we’ve all seen a billion times. You, as a developer, get to put two lines of text in there, and that’s it. 

It’s considered best practice to have a screen like this where you step people through notifications and the benefit of allowing notifications. Explain why it’s beneficial to the user to click the ‘Allow’ button. As a developer, you only get to ask this once. If the user says no, to enable it later, they have to go into settings and dig through a couple of layers of menus. The chances they’ll do that go way, way down.

Carol: So, we’re still in onboarding mode, which for me, even with an app like this, might be a little long, but we can explore now. And, we can still exit out of here. 

Okay, so if I go to ‘begin’, now it wants to walk me through an exercise. What I like about Headspace are the animations. I’m sure that’s super easy on the development side, Jay?

Jay: Yeah, as long as you have a big team and a lot of time, and budget, you can have animations.

Carol: Let’s talk about the use of haptics as you’re breathing in and breathing out. I can feel it on my phone, which is nice. Is that something developers have to think about?

Jay: Absolutely, you’re integrating that in with animations and graphics. It’s a next-level type of integration.

Carol: So, I exited from there, and on this screen, they want to know how I’m feeling. I’m going to say ‘relaxed’. And we’re still in this beginning stage. I’m going to say ‘maybe later’ because I’m ready to get to the app. The first thing that I notice on the app is that this looks like a native app. Would that be right, Jay?

Jay: As far as I can tell, it looks like a native app. The interface feels native, but it’s also heavily customized and branded. This is a tier 1 app for sure.

Carol: There’s heavy use of graphics and animations. So, when you think about video and animations, there’s probably a lot of costs behind that as well. Wouldn’t you say?

Jay: I would think so. Not only are you looking at development efforts to do the fancy animation and integrate all the video, but you’ve got to have somebody – like a graphic artist or animator – to do the actual graphical elements you’re integrating. And also, there’s a lot of really professional videos in this app, so there are probably teams doing that.

Carol: That’s a good point. A developer can build the app all day long, but if you’ve got a constant heavy app like Headspace, there will be a lot of marketing, and there’s going to be a ton of content creation. And then you have to think about how does that content makes it into the app? So, your developer is not necessarily going to sit down and create content and put the content in there. They may create an interface for other people to put that content in there. So, the administration portion is sometimes a component of development that some people don’t think about.

On this screen, we’ve got a play button with a lock on it. So, if I tap on the button, it will tell me I need to start a trial. If I start a trial, do I have to put in a credit card? How do payments work for this?

Jay: With all iOS apps, Apple has you go through the app store, so this will use the credit card that’s on file with the app store. I don’t think you could have downloaded the app to start with without that already on file. With the free trial, again, that’s through the app store with the normal subscription process. You can manage that on your iOS device. What’s the free trial for this one? A week? Yeah.

The developer can pick that.  A lot of trials are one week long. Once you sign up, it’s going to start automatically. It’s on you as the user to unsubscribe after the trial. If you can get folks to agree to the trial, it’s a good chance they’re going to at least do the first month or first year, and you can convert that to an actual sale.

Carol: If you are thinking about building an app, one thing to consider is the subscription fee. Headspace is $70 annually. How much of that subscription fee do you get to take home, Jay?

Jay: In general, Apple takes a 30% cut. There are programs for small businesses where if you have revenue through the app store of less than one million a year, you can cut that down to 15 percent. For obviously a big tier-one app, they’re going to be paying 30 percent.

Carol: Is there anything else you want to point out with Headspace? For example, when I went to my profile, there’s a ‘share with a buddy’ link. If you can get other people on board, that’s more users for your app, and you can get a network effect.

Jay: Yeah, a little bit of a viral spread of your app.

Carol: So, Jay, how much do you think it costs to develop an app like Headspace?

Jay:  Carol, I’m going to say a lot! Like we talked about, this is a complex app with a lot of machinery behind it in terms of graphics, animations, and video teams. Just given that, you’re talking millions of dollars. 

Carol: And we googled before we did this video that Headspace has over 400 employees, so you think about the costs of the employees and the marketing of the content behind it. This is not a small app. This is certainly something to keep in mind if you want to create an app like Headspace. There’s a whole company behind Headspace that allows you to do all these animations and personalizations for the end-user.

So, we talked about onboarding screens, revenue models, and how that all works behind the app with the administration and recommendation engines.

Jay:  I think you hit on everything. For an app like this, it’s also all the other things that go along with it, the development cost is one thing, but there’s the marketing and content creation. With an end-user app like this, there’s so much marketing and advertising that goes into it.

Carol: Exactly. Thanks for watching if you made it this far. If you liked this video, don’t forget to subscribe to our channel to not miss out on any other videos. And please feel free to leave us some comments and give us some feedback.

**The above interview has been transcribed for clarity and brevity.**


Want to learn more about streamlining your users’ experience? Check out this post to learn how to make a great first impression in your app.

By: Carol Vercellino, CEO & Co-Founder

Today, I’m going to highlight our top 3 programming languages in 2021 and discuss their benefits. I’m going to talk about Javascript, Python, and Swift. And also the reasons why we’ve selected these three as our top picks. 

If you’re new to the programming world, make sure to use this video in conjunction with our other video, How to Choose a Programming Language for Your Product

But, let’s get to the programming languages.


First up, we have Javascript. Javascript is widely used now because it was first used for prop and programming language. What that means is it’s used to render the very first thing that your eyes see when you go to a web page

It also began being used on the backend as well, which is all that code on the back that tells the server what to do. And it was really facilitated by Google in trying to help people learn more software development. And so, that’s why it’s a top pick for 2021.


Next up, we have Python. Python has been around for a long time. But, it’s widely used for statistics and science, and pretty much anything. You can spin up a website really quickly with Python, and you can do a whole lot of complex things on the backend, especially for a complex app. It continues to grow because of interest in data science and analytics. So, that’s why it’s our second top pick for 2021.


Finally, we have Swift. If you google the top languages for 2021, Swift may be a little bit lower on the list. And, yes, I am biased because we do use Swift a lot in our company. But, Swift is the language you would use for an iOS application, or a Mac application, or anything that’s going to run on an iPad.

It’s not only growing for those types of apps, but it’s also starting to be used on the server side. You’ll see Apple really push Swift going forward for the next few years. And we’re super excited to see what they do with it as well.

For 2021, we’re going to keep that as our third top pick at Oak City Labs.


I hope this was helpful, and let us know what programming language you’re interested in learning more about in the comments. We’d love to create more content that helps you as you’re developing your software or app.


Know what programming language you want to use? Read this post next about setting expectations for your software development project.

By: Carol Vercellino, CEO & Co-Founder

One of the hardest questions you’ll ask when you start developing your software product is what programming language should you use?

Let’s talk through some of the concerns and considerations you should make when choosing your programming language. 

But, before we dive in, if you aren’t familiar with some of the most popular programming languages, we recommend watching our video on the top 3 programming languages in 2021 first. Then come back to this post.

Let’s dive in.


Carol: So Jay, when it comes to creating software or apps, what factors do you need to consider when choosing a programming language?

Jay: Well, there are a couple of things you have to think about. One of them, to start with, are there some requirements?

For iPhone apps, you’re going to do those in either Objective-C or Swift for a native app. If that’s the thing you’re looking for, those are your two choices. Objective-C is sort of the legacy at this point, and most new developments use Swift. Similarly, for Android, you’re going to look at Java or Kotlin, Kotlin being the new thing.

On the backend, you’ve got a lot more flexibility. There are several languages: Python, Ruby, Go, Swift, and some others you can use for the backend. 

Another important thing you need to think about is the availability of developers in your area. You’re probably going to start with one developer, so you just have to find that one. But as your product and your team scale, you’re going to need to augment your team and hire people. Is there a big pool of developers in your area who are familiar with that technology?

Carol: So, JavaScript is super popular, right? And it’s mostly used on the frontend, but a lot of people are using Javascript on the backend now?

Jay: Yeah, people use JavaScript on the backend with Node. I think it’s really popular. It got popularized by folks doing frontend work who wanted to do backend work and didn’t want to learn another language. Google sort of facilitated that with developing Node and taking their javascript engine, and making it available on their server.

A lot of people feel like it’s easy to slide from frontend development to backend development with JavaScript.


Carol: Like the chicken and egg question, should you choose your programming language first and then find a software developer who understands that language or the other way around?

Jay:  It’s really hard to say. It depends on your project again. If you’re in one of those situations where your project and the space you’re working in determines what language you’re going to use, then that’s pretty much it. 

If you’re building a more generic backend thing, like an API for a service, you’ve got some flexibility there. So, you have more freedom to choose or interview different developers and maybe let them make some of those technology decisions.

Carol: What if you found a developer you really liked, and, not to be too controversial, they use Perl or PHP. What would you say to that?

Jay: Those are both sort of what I would consider legacy languages. Perl especially and PHP moreso. That’s certainly not terrible. A lot of the web runs on PHP. 

Again, as you scale your team, you attract new developers that are going to be versed in that kind of thing. Younger developers aren’t going to be into PHP, and maybe some older ones want to move away from PHP. So, those are some of the concerns you might have.


Carol: And let’s wrap up with talking about potential roadblocks. What are some common mistakes people make when choosing a programming language?

Jay: The most common one is to go for the new shiny thing. The new language comes out, and it’s all built cool, and they’ve got really good demos, and they solve some problems. Maybe they take something that used to be hard in an old language, and they do it really, really well because they made the language to do that. 

But, once you get into a really serious project, you have problems with, for example, is their tooling around that? Is it too young to have really good tools to work with? Is it robust? Can it handle edge cases that maybe some of the older languages have already worked out? 

Does it have a really rich library of tools to interface with other things? Python is a really old language at this point. There is a Python library for just about anything. If you need to access this weird service, some dude somewhere in a basement in Nebraska, wrote a library to do it. 

A lot of the newer languages just don’t have that sort of coverage. 

Carol: And support too, just community support. Can you google it and find an answer to it?

Jay: Exactly. Do you want to be out there on the bleeding edge? Maybe not.

Carol: I think we did a video about interviewing software developers, so it might be helpful for people to check out as well.

**The above interview has been transcribed for clarity and brevity.**

Need to find the right developer for your project? Make sure to ask the right questions to get the best fit. Learn how in our video, How to Find an App Developer

How to Find an App Developer

So you’re an entrepreneur, and you’ve got this amazing idea for an app.  Now you’re probably wondering how to find an app developer who can deliver what you envision and help you bring it to market. 

Building an app can be really expensive. A lot of folks have a budget for basically just one shot at version one. So you want to make sure you get the best app for your money, and get a good start to your business. My business partner Carol is joining me to discuss how to screen developers and pick out one that might be right for you. 

Read on or watch the video to learn more about how to find an app developer that’s right for you. 

Jay: Carol, where do we even get started looking for developers?


Carol: Well, oftentimes, I would suggest people can ask around in their network. And a lot of people these days might do a Google search. But more often than not, a referral is the very best place to start.


Jay: Okay, so we need a referral. Maybe get a couple [of referrals] you’d want to talk to. What kind of questions do you ask those developers?


Carol: I might ask them different questions than a lot of people, but most importantly, you want to ask them about their experience. Ask what kind of apps they’ve built before and if they’ve built anything like what you’re looking for. Or if they haven’t built what you’re looking for, maybe learn more about their track record and their history. 

And I often learn from people based on what questions they ask. So just kind of going through that process should help you out. 

Also you may want to ask about things like quality. How did they build quality into the product? How long do their projects typically take? You probably can’t figure out the cost on the first round of questions. But focus on experience, quality – things like that.


Jay: Okay. So when you talk to developers, a lot of times you get sort of a firehose of tech speak coming at you. If you’re not really technically-minded, how do you decode that?


Carol: So the way I do things is – for example, if they use an acronym, I will ask them to explain it to me like they just met me on the side of the street. And I have no problem being completely ignorant to what somebody is talking about. And I will ask them over and over to explain it to me until I get it, which you are probably familiar with, Jay! But it doesn’t matter if you don’t know what they’re saying, but know that if they can’t communicate a complicated topic to you, then they may not be a good partner for you.


Jay: That makes sense. And what kind of red flags do you look for?


Carol: Oh, my goodness, let’s see. Red flags you might look for are if they’ve never done development before, or if they can’t explain complicated topics to you. If they don’t know what testing is. You may want to ask them to explain things like the difference between a unit test and a functional test, and then ask them how to [perform] those tests. Ask them what types of tools they use for testing and what kind of language or platform they’re going to use to build your project. 

And then ask them why. If they’re going to do a cross platform app for you, ask them why they like that. And ask them if that makes it a buggier app, or how easy it is to troubleshoot a cross-platform app. Or if they’re going to go [with a] native [platform]. Ask them about how they know what Android would look like, or if they are going to start with iOS, what that development process would be like.


Jay: And what other advice do you have for folks who are looking for a developer for their project?


Carol: General advice would be looking at that history that we talked about, making sure that they understand testing and have good quality software development practices. Ask them how they stay up to date on things and make sure that they have an excellent explanation as to the tools and the languages that they use. 

You know, sometimes it’s not always the best to go with a developer that uses the latest flashiest network or language that’s trending that day, because it’s going to make it hard for you to find developers to take that project over in the future. And the same thing [is true] with the older languages. I hate to say it, but PHP may not be used for new projects these days. And so if you talk to developers that are going to build your whole app in PHP, see if that’s a trending job post on Indeed in your area, and it might give you a good idea of whether that’s a good idea or not.


Jay: All right, well thanks for taking us through all that today, Carol. I always hate to see somebody who sinks a huge chunk of cash into a project that ends up with a bad app or an app that just doesn’t work. So folks if you have an app idea or more questions for us, you can contact us on our website and be sure to follow us on social media and subscribe to our YouTube channel for more tech tips. Thanks.


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

App Development

By: Carol Vercellino, CEO & Co-Founder

As an entrepreneur or business owner, you probably have a great vision for the product that you want to build. But, do you know how much it’s going to cost and how long it’s going to take?

Much like building a house or buying a car, informing yourself and understanding the process can really help set your expectations and help you have a great relationship with the software development partner that you choose. 

So today we’re going to talk about three things that are really important to understand with software development – or for pretty much anything else you’re going to spend a ton of money on. 

Read on or watch a quick video here.

We call them kind of the three levers in software development: time, quality, and cost. 

What do we mean by those things? Well, when you buy a car, if cost is the most important thing to you, then you might be willing to forgo quality a little bit. And you might be willing to understand that the car is not going to last 10 years and may not retain its value for a decade.

In software development, it’s the same thing. If cost is a driving factor for you, then understand that quality may not be as great. And the delivery of the product timewise may not be as great. 

We often see people who prioritized cost as the most important factor but end up coming to us because the project never got completed [with their first developer]. And what did get completed didn’t have testing built in. If you don’t know what testing is, I’m pretty sure we’ve got a video on that!

So, what if you prioritize quality? You can bake quality into a product really well. But if you have a partner that overemphasizes quality, your timeline can get drawn out. And I know it sounds crazy to say quality may not be as important, but sometimes you need to ship your product to get it out to market. 

Well, what about time? If you emphasize time, then you may find a development partner who deemphasizes quality as well as cost. If you want [an app] done quickly it’s going to cost you more, and the quality may not be there. 

So, understanding these three things and understanding how those categories impact a project can be incredibly helpful to set your expectations – and your partner’s expectations as well. If you have any questions about time, quality, and cost, shoot us an email. We’d be happy to help. 


By: Carol Vercellino, CEO & Co-Founder

Today we’re going to talk about software testing. Sometimes software testing can sound a little boring, but today we’re going to cover some really simple terms. Hopefully this can help you collaborate with software developers or even hire a software developer for your project.

Read on or watch our video here.

Why test apps?

Software testing is critically important. Bugs can range from minor things like a misspelling in an app to major things like one single action deleting all of the data in your database. It’s something developers need to place a priority on, and you should too. It will be a part of your risk management plan and can save you money in the future.


The Pyramid (Not a Scheme, We Promise!)

So to really break things down, we like to think of software testing as a triangle. At the bottom of the triangle is unit testing.

Unit tests are just that. They’re testing really small bits of code to the lowest level possible. They’re fairly inexpensive too, and you can have tons of them. You can run them through automatic testing when code is entered. That’s your first level of defense against a software bug.

And then in the middle of the pyramid we have what we call integration tests. These test third party bits or something your app is going to integrate with. This could be an API for Google Maps or it could be your internal database – really anything that’s a third party. 

And then at the top we have UI testing, sometimes called end-to-end testing or functional testing. The terminology doesn’t really matter. At the end of the day, you want that first line of defense, second line, and the third line of defense.

All of these things should be as automated as possible. Something to think about in software development is that the bottom of the pyramid is your least expensive test. It’s the developer’s time but it’s going to save you because it’s your first line of defense. The top of the pyramid tends to be the most costly because somebody has to write those functional end-to-end tests and automate them, or you have to have somebody manually test those things.


Questions to Ask

So we’ve got unit tests at the bottom, integration tests, and then UI tests or end-to-end tests at the very top. When you’re talking to developers, those are important concepts to understand. Ask them, “Where do you put the most importance? What tests are important to you, and what kind of test coverage do you have in each of those categories?’ It’s okay to ask developers those questions, and don’t worry if you’ve never written those tests before. You should be able to talk to a developer, and they should be able to help with those things.


If you found this helpful, please subscribe to our youtube channel, find us on social media.

Email us with your ideas for tech topics we should break down in less than three minutes!


Additional Resources:

Mobile App Testing

Questions to Ask Your App Developer About Testing

By: Carol Vercellino, CEO & Co-Founder

Mobile app testing sounds really important, but as an entrepreneur with an app idea, what do you really need to know about it? What questions do you need to ask the developer you’re going to work with to build your app to ensure it’s being tested thoroughly, especially if you don’t have a software development background? 

I’m Carol Vercellino, the cofounder of Oak City Labs, and this is my cofounder Jay Lyerly, who also serves as our chief technology officer. He’s going to share his knowledge of testing. 

Watch the video or read on below to learn more.

Carol: Alright Jay, let’s start with the basics. Why is it even important to test your mobile app?

Jay: Testing is all about risk management and how you can manage any changes to your application. So as your app grows and develops, it becomes more and more complicated. It’s easier to introduce problems when you make changes. So, a good solid testing foundation minimizes those kinds of issues.

Carol: So, risk management. Does it also help with the expense later down the road? Does it make it cheaper later?

Jay: Yeah because since you’re doing that risk management, you can feel safer in making changes later. And those later changes are less likely to cause catastrophic failures that sneak up on you.

Carol: You wouldn’t know anything about that! (laughing)

Jay: (Laughing) No, no no!

Carol: So if you were an entrepreneur and you were going to hire an app developer, what advice or what things would you ask about testing?

Jay: So the first thing I would ask is just really generally, “What kind of testing do you do?” Hopefully they don’t say “None!” So what you’re looking for after that is what kind of automated testing they do. Some developers will just do it all by hand. Manual testing is an important step, but you also want to have some automated tests to go with it. 

[You’ll also want to] talk about test coverage. That’s how much of your application gets tested in an automated way. It’s really hard for an end user application like a mobile app to have 100 percent test coverage just because there are a lot of weird cases that aren’t worth testing. But you probably want at least half, 50 percent. Up to 70 or 80 percent would be great numbers to hear.

Carol: Okay, so if a developer said yes, they do automated testing, and have over 50 percent coverage – or they say 100 percent coverage – are there any red flags someone should look for? Especially if they really don’t know what automated testing is, or what test coverage really even means?

Jay: Well, 100 percent test coverage is a little bit scary because there are always some bizarre cases that are really difficult to reach, and that’s not really an efficient use of a developer’s time. As far as other red flags, you might ask about how those tests get run. Is it all part of an automated, continuous integration kind of thing where they have a system that reproduces tests and builds the product for them? Or is it by hand, just sort of on the fly from their laptop?

Carol: Okay, or you can do what I do. Just ask what tools they use and madly Google them afterward to see if they’re actually legit. (Laughing)

Jay: (Laughing) That’s also a good idea, yeah!

Carol: Alright Jay, before we close – just one question I have to ask. Can you share a nightmare, or a war story from where you should have had a test, but maybe you didn’t test, and things didn’t go so well?

Jay: So one of the hard things is [deciding] how much to test. So we had an app we built one time where people made a list of stuff and could share the list with their friends. And their friends could pin those lists so they could come back to them later. And we had an issue where if a user pinned somebody’s list and they came back and unpinned or deleted that pin  later, there was a database mistake and it would cascade that deletion. It would actually delete the list, which was obviously super bad.

Carol: Yes!

Jay: We had tests to check if the list would go away if the [author deleted his own pin]. But we were not checking for those sort of secondary effects. So, that was a surprise and not good. But you know, the first thing we did was go back and add the test for it. So that’s an interesting way you can use testing to do bug fixes. If you get a bug, you can write a test that illustrates that bug. Then you go fix the bug and that test turns green, which means it passes. That’s a safety check in the future so when you make more changes down the line, you don’t reintroduce that bug back.

Carol: That also could be a good interview question for an entrepreneur who is hiring a developer. You could ask them, if you get bugs, what do you do? Ask about their process with bugs and if they’re writing tests.

Jay: Absolutely.

Carol: Jay, thank you so much for your wisdom on testing. I know you have helped us a lot at Oak City Labs with that, and we’re very thankful for that. If anyone has any questions or would like to hear more about testing or any other topic, just feel free to leave a comment, like this video, follow us on social media or go to our website Thank you!

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

Success as an entrepreneur requires more than a great idea. The great idea must have the potential for exponential growth and scale. Is your idea viable? 💡

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 littlemore 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!

One way to end the year well and set yourself up for success in 2021 is to look at your 2020 metrics! Discuss what worked and why so you’ll know how to move forward.


Learn From Your 2020 Metrics

Subscribe for the latest updates

Where problems get solved.

© 2020 Oak City Labs | A Well Refined Website