Let’s Talk Strategy: Hybrid vs. Traditional Mobile App Development
I’m a huge proponent of hybrid mobile app development. I work on the Ionic team at OutSystems, I create content around Ionic’s tools and services, and I’m even writing this for the Ionic blog so it’s completely fair to say I have a bias (as well as a vested interest) in the success of Ionic. We create elegant solutions that solve the problems developers face and I take pride in sharing those solutions because I believe it makes development easier.
Today, I want to take a different approach. As someone who has defined strategy for mobile app development projects I want to remove my Ionic cap and take a holistic look at the hybrid versus traditional mobile app development debate in a way that doesn’t focus on what Ionic has created. During my time working on mobile app strategy I found myself directly contributing to native and hybrid codebases so I can speak to the challenges associated with multi-platform development without needing to focus on specific technologies. My goal is to analyze the conversation to help you choose what’s best for your project and get you on a path that helps make your projects successful. Whether that includes Ionic or not!
Caveats
First, there are a ton of caveats to mobile app development strategy but in my experience there are likely three main categories that development teams look at when choosing a technology: Time, money, and resources. While there are development teams that don’t have to take these categories into consideration, every mobile app development project I have worked on has been constrained in one way or another by one of these categories. Given my experience with mobile app development I am making the assumption that you and your teams are likely constrained by these categories.
Second, there’s a lot of fanaticism in app development especially when defining which technology or approach is “better”. If I have learned anything in the last ten years of app development it’s that “better” is relative to the boundaries of your project. In the words of Adam Savage, “Every tool’s a hammer” so you can really make your mobile apps with a lot of different technologies but I would rather put nails in a wall with an actual hammer instead of my MacBook Pro. My point is that I want to help you frame the scope of your project to narrow down the list of tools instead of just handing you an irrelevant tool. My aim isn’t to overcome the fanaticism of certain tools or technologies so I’m making an assumption that you are defining strategy agnostically. Of course, if your team is technology locked then do what’s best for you and your team with the tools available to you.
With that being said, let’s dive into it!
Background
According to a recent article from Ionic, “there are more than 5.5 million Android and iOS mobile apps on the market.” This means that developers and development teams are required to produce high-quality applications to not only meet industry standards for an ever-evolving regulatory landscape but also exceed user expectations defined by an ecosystem shaped by much larger development teams. Mobile apps are getting more difficult to build in order to stay compliant but you and your teams are competing against much larger development teams to get users in your mobile apps. The reality is that creating compliant mobile apps with killer user experiences can take a significant amount of time, money, and resources and those larger development teams likely have what they need to do that.
However, creating high-quality mobile apps that exceed user expectations while staying on budget and meeting deadlines is difficult even with well-equipped development teams. There are challenges creating mobile apps with any approach that you and your teams use. Fortunately, there are ways to streamline the software development processes and produce superior mobile apps but it requires us to look at what strategies are available to us.
Strategies
When discussing mobile app development there are typically two main styles of application development strategies that people refer to: Traditional & Hybrid app development.
Traditional mobile apps, or native apps, are written in a language and format specific to their platforms. In this case it would refer to Swift/SwiftUI/UIKit for iOS in Apple’s ecosystem and Java/Kotlin for Android in Google’s ecosystem. These traditional mobile app development ecosystems use different languages as well as approaches to build apps, test apps, deploy apps, and require specific expertise depending on if you’re building mobile apps for iOS or Android.
Hybrid mobile apps are written in a single codebase and installed directly on the user’s device. While you still need to work with the nuances in iOS and Android when it comes to testing, deploying, and managing the apps the complexity gets drastically reduced by having a single codebase. You don’t need to have specialized talent working individually on an iOS or Android app in parallel to deliver for both platforms and every developer on your team can contribute to both platforms. This is accomplished by wrapping the underlying code in a native container that runs on the user’s device.
Fundamentally, traditional and hybrid applications rely on three layers of architecture: The data layer, the business layer, and the presentation layer. While the debate of traditional and hybrid app development strategies typically focuses on the presentation layer it’s important to understand that every part of the architecture contributes to determining the strategy of what will be chosen for the presentation layer. The data and business layers each consume their own time, money, and resources so limitations can have a significant impact on what can be done with the presentation layer. For instance: if you have a limited number of full-stack developers whose talents all rely on JavaScript, and they utilize JavaScript throughout the architecture of the application, then it’s more likely that the team will try to utilize that skillset in the presentation layer to reduce complexity when building the app. Teams can definitely go against this but the time, money, and resources required to build the app can grow dramatically.
The Benefits and Challenges Of Traditional Development
As someone who has contributed to native codebases, there are benefits to choosing traditional development when you are building your mobile apps. The benefits include the ability to use the latest – and greatest – features of the platform you are developing for, the ability to have more polished user experiences, and the chance at having the “most performant” app. It might seem contradictory to discuss these benefits of traditional mobile app development on the Ionic blog but I do think there is a time and place for traditional app development.
In my opinion, I believe the greatest advantage to traditional mobile app development is the ability to utilize the newest or platform specific features developed by Apple and Google for their ecosystems. The reason this is an advantage is because hybrid platforms tend to lag with native integrations for these features (requiring you to develop the integrations yourself) or it’s just not practical because the feature you are developing wouldn’t benefit from a hybrid development approach. A perfect example of this can be found in a recent article I wrote on using AR Quick Look with Capacitor where I leveraged Apple’s AR technologies in a hybrid app. You can do it but, outside specific use cases outlined in the article, it doesn’t make sense to integrate it into most projects since that feature only exists in Apple’s ecosystem and it would just be easier to develop it there.
The next advantage is polished user experiences. Apple and Google both have their own user interface guidelines for building successful apps within their ecosystems that vary from one another. Users in those ecosystems expect their mobile apps to look and function in specific ways so, in a hybrid approach, you might be making some level of sacrifice for cross-platform capabilities that you wouldn’t have to take in a native development approach. You also have the ability to fine-tune in greater detail each platform’s user interfaces and user experiences than what is available using a hybrid development approach.
The last benefit is performance. The reality is that with a hybrid approach you are adding a layer and there is a cost in performance that happens that wouldn’t necessarily exist with a traditional mobile development approach. This is especially true with Apple’s ecosystem where the code is literally developed for the hardware that it’s running on. This means that with native codebases you can technically create “more performant” apps than what you can utilizing a hybrid approach.
While these benefits look good on paper, practically, it’s not beneficial when developing your applications in most cases. Few projects utilize the newest features within the first several months of release and, by the time development teams do plan on integrating those features, they are usually available for use in hybrid development approaches or the features wouldn’t be beneficial on multiple platforms (i.e. the AR Quick Look project I mentioned earlier). In the case of fine-tuned user experiences, the experiences become overly engineered to the point that you lose cohesiveness between the different versions of your mobile apps and they turn into completely separate applications making it increasingly difficult to manage. Then performance, if you read my article on performance, is a diminishing return that is drastically dependent on the actual architecture of your apps and has minimal impact when directly compared.
These challenges aren’t the only ones associated with traditional development. Code reusability is a fairly significant challenge especially when speaking of any of the potential benefits that I outlined above. A development team can use the latest features released by Apple or Google but, in order to have both versions of the mobile app utilize those features in a traditional app development approach, it has to be developed twice and usually in different ways (i.e. this issue I encountered with a video streaming app’s protocols). Another challenge is security as both platforms require individual security implementation and rigorous testing to ensure that your apps are secure.
This isn’t to say that a traditional mobile app development strategy is a flawed approach, there are benefits as I outlined above, but I think it’s important to understand that the time, money, and resources necessary to see those benefits realized is a high bar to reach for most teams. Unless your organization is all-in financially and ready to have dedicated iOS and Android developers your teams are likely to hit a wall before those benefits are realized.
The Benefits and Challenges of Hybrid Development
As someone who has also contributed to hybrid codebases, there are benefits to choosing this strategy for building mobile apps as well. The benefits for this strategy include code reusability, the ability to leverage existing web development talent, and the ability to include a significant amount of native features. While not all hybrid development tools have these benefits, and it’s important to research which tools do, the tools that Ionic offers do have these benefits.
The greatest benefit of hybrid mobile app development strategies is the ability to reuse code. In a hybrid development approach a development team can develop their project in a language like JavaScript then deploy the project to iOS and Android utilizing just that single codebase. Not only does that ensure that developers don’t have to create a separate iOS or Android codebase (saving time, money, and resources during development while getting to market faster) but they can also manage both versions of the code from that single codebase. The other significant advantage is that some hybrid development frameworks like Capacitor actually offer more than just the ability to deploy to iOS and Android but also the web and desktop.
The next benefit is the ability to leverage existing talent. In my experience, development teams don’t typically have the resources for dedicated iOS and Android developers or the team composition to support that type of development. This means that mobile app development projects usually end up getting supported by web development teams that then have to try to learn the required skills to build mobile apps. Not only is this incredibly time consuming but it puts a significant strain on developers when they are already juggling a fairly substantial workload. In the case of hybrid app development, web developers can use their existing skills to build mobile apps significantly reducing the challenges associated with learning new languages. Further reducing the time, money, and resources needed to start new mobile app development projects.
Another benefit of utilizing a hybrid mobile app development strategy is ability to leverage native features cross-platform. While this somewhat plays into code reusability, the ability to communicate with device-level features (i.e. camera, push notifications, etc.) on iOS and Android via simple plugins makes hybrid mobile app development strategies incredibly powerful especially when a significant amount of device-level features are supported. It demonstrates that you don’t need to employ a traditional mobile app development strategy to deliver fully functional mobile apps for the vast majority of use cases. Sure, there are some outliers like what I mentioned when talking about traditional app development strategy but most projects are covered by what is already available. If there is a plugin that’s missing then there are solutions that allow you to create your own plugins.
There’s a lot of benefits to utilizing a hybrid mobile app development strategy but there are challenges as well. While I outlined a good portion of the challenges when discussing traditional mobile app development there is a challenge that I didn’t discuss: You still need some functional knowledge of working within Apple’s and Google’s mobile app ecosystems. While you have a singular codebase that code still needs to be deployed to the individual app stores and they both have their own processes for testing and deployment. There are tools to help make this process easier but your team will still need some level of native app deployment knowledge that they might not otherwise know.
Determining A Solution
While choosing a strategy is dependent upon the boundaries of your project there are a few factors I have learned that can help you narrow down your strategy. These factors include team composition, the requirements of your project, costs, ongoing maintenance, and the future state of your project. Luckily, these can be answered by asking yourself a few simple questions:
- Does your team have the skillset to build native mobile apps? If not, do you have the budget to scale up?
- Does your project require you to utilize the bleeding edge features from Apple and Google?
- Does your project have the budget for building two mobile applications?
- Will you have enough resources to maintain and build new features for two mobile apps once your project is completed?
- Is this mobile project a long-term strategy and/or do you have a significant development window to release your application?
If you answered “no” to the majority of these questions then you would likely benefit from utilizing a hybrid mobile app development strategy for your project or at least it’s worth plotting out what that path would look like for your team. If you answered “yes” to the majority of the questions then you might be better suited to the traditional strategy.
There’s caveats to these questions but, if you’re still skeptical or want to understand more about how those factors help define strategy, be sure to check out my in-depth talk where I go into further details on factors and strategy.
Final Thoughts
Determining whether to utilize a traditional or hybrid mobile app development can be a daunting task but, by understanding the different benefits and challenges, it can help make the decision easier. By taking the fanaticism out of the decision and thinking about the different strategies as tools to help you accomplish your app development project it’s much more effective to narrow down a strategy for your use case. Of course if you have any questions about strategy or how our tools can help you with your strategy then be sure to check out our YouTube channel, blog, discord, or reach out to us directly and we’ll be more than happy to steer you in the right direction!