Native vs Web Development

Native vs Web Development

Which is better for your next project?

When beginning a brand new application project and deciding which stack to use one of the first questions you have to answer is what type of app are you making. Depending on the type of app you are making you could need advanced features like augmented reality or secure permissions for access to the devices hardware. Maybe you don’t, maybe you just need access to the internet and database and can create a fulfilling and robust experience for the user.

Depending on your needs you may need to decide on Native app development or a Web approach. Web development can allow you to build your new solution once for all systems while Native app development can allow you to uniquely tailor your solution for each platform.

As a developer and as student of the mobile application design and development program the question does arise; is one better then the other or are both ideal solutions depending on your needs. Over the course of this post I would like to detail some of the key pros and cons to both methods and help guide myself for my next project.

Native App Development:

Pros:

  • Native App development can give you quick access to tools like SceneKit in Swift or machine learning tools in Kotlin that can allow you to easily add powerful features to your apps
  • Developers that know Native Development can be crucial for certain projects and hard to find, knowing Native development can help you stand out amongst a sea of applicants
  • Native apps can access secure features like storage that web apps are restricted from, allowing access to more powerful features and lifecycle methods on a users device like saving navigation state on suspend and reloading when they resume the app

Cons:

  • Making the same app on different systems can take a lot more work hours and resources that may not be available
  • Native Development can be more complicated to learn and harder to keep up with due to changes happening in multiple languages like Kotlin, Swift, C#, etc.
  • While the speed and performance of a native app might be ideal, your solution may just not require this much power and inexperience with these design patterns could lead to unwanted situations like memory leaks or security issues that could be avoided entirely with a web approach

Web App Development:

Pros:

  • As mentioned previously, the biggest advantage in my opinion for web development is the fact that you can make a fully fleshed out user experience for all platforms with just one code base/ website
  • Web development can be quicker to learn and keep up with due to the similar use of languages like JavaScript and HTML across all frameworks.
  • In most cases with app development we don’t have to reinvent the wheel to make our solution work. With web development we can get access to so many different types of libraries and solutions for our app that we can focus on our core features and what makes our solution stand out.

Cons:

  • Frameworks like React or Vue while amazing and constantly updated by their parent companies of Facebook and Google, you could have to use packages for your project that are not being supported anymore or use codes that has become deprecated causing you to have to make updates earlier than planned.
  • Web apps cannot access persistent storage for devices leading you to have to develop workarounds to cache / save states on your users device that may lead to insecure practices.
  • With a web apps reticence on internet speeds some users may suffer from poor connections in their areas and may never be able to effectively utilize your solution unless workarounds are made.

As we can see their are both strong advantages and disadvantages to both Native and Web development although at the end of the day we are the developer.

If we want to practice a new language or we just want to shove our app onto the App Store we are totally in control and depending on your solution both methods could even be applicable.

I say as long you have a general idea of what you want to code just jump in with either solution and see how it goes.

Cheers, Ravi.