What are hybrid mobile apps?
Hybrid mobile apps are applications that are installed on a device, just like any other app. What differentiates them is the fact they possess elements from native apps, applications developed for a specific platform such as iOS or Android, with elements from web apps, websites that act like apps but are not installed on a device but are accessed on the Internet via a browser.
Hybrid apps are deployed in a native container that uses a mobile WebView object. When the app is used, this object displays web content thanks to the use of web technologies (CSS, JavaScript, HTML, HTML5).
It is in fact displaying web pages from a desktop website that are adapted to a WebView display. The web content can either be displayed as soon as the app is opened or for certain parts of the app only i.e. for the purchase funnel.
In order to access a device's hardware features (accelerometer, camera, contacts…) for which the native apps are installed, it is possible to include native elements of each platform’s user interfaces (iOS, Android): native code will be used to access the specific features in order to create a seamless user experience. Hybrid apps can also rely on platforms that offer JavaScript APIs if those functionalities are called within a WebView.
What are the advantages of hybrid apps?
Hybrid apps offer a certain number of advantages:
- Combining user experience with an agile development cycle and controlled costs.
- Avoid the limitations of the Apple App Store: to deploy an application on the Apple App Store, the app has to be submitted and there is a waiting time for validation. The delay will vary depending on the time of the year, but also depending on whether it is a first submission or an update. It generally takes between 1 to 7 days. Hybrid apps thus offer a great advantage for developers who wish to update their app frequently as it is not necessary to resubmit the new version if the modifications haven’t touched native code.
- Finding resources: most applications have an iOS version and an Android version. They are thus developed using the corresponding programming language: Objective-C or Swift for iOS, Java for Android. Hybrid apps allow for the use of programming languages used frequently by web developers (HTML, JavaScript and CSS) who can thus reuse their knowledge. This makes finding resources to build a hybrid app easier.
- Reusing the code of the web app part: the code is written once and deployed across all mobile platforms.
- Reducing development time and costs: the code is written once, which substantially reduces development time and costs compared to native apps which require development for iOS and development for Android.
What are the limitations of hybrid apps?
- A limited user interface: hybrid apps have a design that doesn’t have a native feel. The user interface thus isn’t as seamless. Possibilities (3D for example) are also restricted due to the fact that WebView is used and that this doesn’t allow the exploitation of the devices’ full potential.
- The difficulty or impossibility to exploit the platforms’ capacities in full. Each platform, iOS or Android, has unique capacities that a developer may wish to exploit. If this is the case, a combination of specific plugins and code of the platform will be used to achieve this on a hybrid app. This further complicates the app development project.
- Slower performance and transition between pages.
- Dependency on the browser’s speed.
What are the consequences on your testing phases?
Automated testing
Testing a hybrid app can be done in a similar way to a web app. For each test case, a script will be written and at first glance the test phases seem to be simplified.
Learn more with our Automated Testing Guide
Complexity arises when the application also contains native code, which is frequently the case. Each test case will consequently have multiple test scripts, each written in the native language of the platform on which the tests have to be conducted.
One will have to address bugs that can exist individually on platforms, whilst keeping the versions synchronized.
Manual testing
Manual tests for a hybrid app will also differ from the tests conducted on native applications. If this is a given when the testing strategy is written the effort, the type of tests and the steps will have to be adapted to address the graphical aspects thoroughly.
- Calling a WebView introduces an additional risk to the app with a fragmentation notion linked to calling a page in a container: one will have to check that the WebView integration is properly done (no double header or menu for example) but also that there is a proper adaptation to the devices’ screen resolutions (which implies that the scope of the devices that need to be tested will have to be widened).
- Functional tests will also have to be more thorough, particularly on click zones for example or on Call to Actions (functioning, size, …).
- Mobile behavior could also have an impact (no signal, data loss, change of orientation, interruptions) on the web app component. Therefore, special attention should be paid.
- Finally one will have to look into the native-WebView interactions with regards to the account / session dimensions. For example, when a user logs into the native part of the app, a seamless WebView experience is required (no need to reconnect for example).
The challenge with manual testing will therefore be to validate that the user experience is smooth. The choice between a native app and a hybrid app is purely technical and has to do with an internal and organizational decision only. It shouldn’t have any impact or limitation for the users.
How to choose the right app type?
Before deciding to develop a hybrid app, an organization will have to take into account a certain number of factors in order to launch a digital product that brings its future users full satisfaction and the expected business results.
The following questions will help choosing an adequate development strategy for the project to succeed.
- What is the user target group?
- How will our users access the application?
- Should it be available in App Stores?
- Do we need to update it frequently?
- What is the level of complexity of the functionalities that we wish to develop?
- Do we need to use the devices’ native functionalities?
- What kind of user experience do we wish to offer?
- What are our development resources?
…whilst still having the advantages and limitations of hybrid apps in mind.
To learn more about QA Testing, download our white paper, How and Why to Test in the Digital Transformation Era.