arrow icon
REGISTER

Performance Regression Testing for React Native

2023-02-02
Download your copy of the
Ultimate Guide to React Native Optimization

blog content

Need help with Performance Optimization? 
hire us
Need help with Super app development
hire us
Need help with React Native?
hire us
Need help with migration to React Native?
hire us
Our React Native EU Conference is back
register nowlearn more

Let's talk about developing React Native apps. Or, to be more precise, about developing performant React Native apps and the role of performance regression testing in this process.

React Native is an excellent framework for developing cross-platform mobile apps. It's fast; it's easy to use. However, certain things should be kept in mind while developing React Native apps. One of them is performance.

As React Native applications grow in size, they tend to slow down, which you can read more about in this article. React Native is a JavaScript framework, and JavaScript is a single-threaded language. While the UI is being rendered, the JavaScript thread is blocked, and no other JavaScript code can be executed.

Re-renders as a source of performance issues in React Native

Re-renders are one of the most common causes of performance problems in React Native apps. They can go unnoticed in React web apps; however, in React Native apps, an excessive amount of re-renders leads to serious performance issues and slow UI. On top of that, it's pretty hard to spot code changes that lead to re-renders just by reviewing the code.

When a component re-renders, a serialized message is sent through the bridge from the JavaScript thread to the native platform. The native platform unserializes the message and creates a new native view, which is then rendered on the screen. If the render result is the same as the previous result, it may not result in native view changes; however, the time it takes to re-render a portion of the element tree might block the JS thread.

If the JavaScript thread is unresponsive for a frame, it will be considered a dropped frame. Any animations controlled by JS would appear to freeze during that time; and if it lasts longer than 100ms, the user will surely feel it. Not only animations are impacted; response to touches can be affected as well. In fact, there are many performance issues that re-renders can cause. You can read about possible causes of such problems in the official docs guide on performance.

When does performance regression happen in development lifecycle?

Development lifecycle would make a good topic for a separate blog post, but let me be brief here. In a nutshell, a simplified version of what happens during the development process is as follows:

  1. New feature is introduced
  2. Tests are added
  3. QA goes on
  4. Release takes place

Looks good, right? Especially because in reality, tests are sometimes skipped, or the QA process is rushed for the sake of releasing to prod. Let's assume a best-case scenario where test coverage is maintained in the high percentile, coverage reports are monitored, integration tests are automated, regression tests are executed, etc.

Even in this perfect setting, there might be bugs that escape the QA engineer’s notice. But more importantly, performance problems that fail to be recognized by any test or QA process can occur.

Adding additional re-render can sound like no big deal, but performance regression is like a snowball. As more features are developed, it gets more excruciating to pinpoint or fix performance issues. And once they become apparent to end users, it usually requires a lot of refactoring and a dedicated team working for hours to find the problem and carry out improvements. These, in turn, can introduce breaking changes to the rest of the app and lead to months of further development work.

How can performance regression testing keep your app fast?

So, what can we do about this snowball of performance regression growing over time? How can we know that a new feature reduces performance? How can we catch the unnecessary re-renders and get actual performance metrics without the overhead of having a dedicated team working on performance improvement?

Of course, there is no silver bullet to finding ALL performance problems, especially the ones that originate on the native side. Still, we can address the ones that arise from incorrect usage of React or React Native, like long lists, not using memoization, unnecessary re-renders, etc.

It's not enough to only identify these performance issues, though; we also need to introduce some measuring tools into the development workflow and Continuous Integration to automate performance regression tests. While doing it manually on each PR review is possible, it takes precious development time, introduces complexity to the release process, and increases the chance of performance problems slipping through the PR review process and ending up in prod.

Performance regression testing made effortless with Reassure

Given that there hasn't been any tool for automating performance regression testing so far, we have decided to create one: meet Reassure.

Of course, introducing a new tool means introducing a new workflow. This can lead to lower adoption, as developers need to get familiar with it in the first place. To prevent that from happening, we've based Reassure on React Native Testing Library API as something React Native developers should be familiar with.

Reassure can be easily integrated with your current React Native Testing Library setup. Writing performance tests is pretty close to writing regular tests, as you’ll see in examples later in this blog post.

How to add Reassure to your project with yarn add --dev reassure or npm install --save-dev reassure

After you've added <rte-code>reassure<rte-code>, you can start writing performance regression tests by adding <rte-code>.perf-test.tsx<rte-code> extension.

Since there is a similarity between your regular tests and <rte-code>reassure <rte-code>performance regression tests, creating the latter will usually involve copy-pasting existing tests and altering them to match <rte-code>reassure<rte-code> API.

In a nutshell, instead of using <rte-code>render<rte-code> function from React Native Testing library, you would use <rte-code>measurePerfomance<rte-code> function and pass the <rte-code>scenario<rte-code> function to it, which will execute the scenario to measure.

To run <rte-code>reassure<rte-code>, you will run <rte-code>yarn reassure<rte-code> and get the results.

Let's take a look at a more detailed example, so we can understand how we can not only measure the performance of an existing component, but also refactor it while significantly improving its performance.

Refactoring long lists while measuring performance

Consider the following <rte-code>GameList<rte-code> component.

This component will get games data from <rte-code>useGames<rte-code> hook and render it on the screen. Before measuring component performance and optimizing it, let's first write a simple test for it.

We will create <rte-code>GameList.test.tsx<rte-code> file and write our test there. First, we need to mock <rte-code>useGames<rte-code> hook:

Initially, our component is pulling data from <rte-code>https://api.rawg.io/api<rte-code>, so we will need to match results to be in the same structure as returned from API. As you can see in the code above, we will generate <rte-code>1000<rte-code> game items with random ids, random names, and <rte-code>background_url<rte-code> pulled from <rte-code>imgur<rte-code>.

For the sake of simplicity in this particular example, we use <rte-code>jest.mock<rte-code> to mock our API results. Yet, it's advised to use msw to mock Api call results, which you can read more about here.

Now, let's write the test.

We are using <rte-code>NativeBase<rte-code> for our UI in this test, which means we also have to wrap our <rte-code>GameList<rte-code> with <rte-code>NativeBaseProvider<rte-code> and supply it with <rte-code>initialWindowMetrics<rte-code>, so it can successfully render our UI.

In this test, we have 1000 game items and list component is present. The test passes, but we can probably identify the problem here. There are 1000 rendered game items. Clearly, our component is not optimized and will render all 1000 items, even though they are not visible to the user initially.

Measuring app performance with Reassure

In the previous section, we've set up Reassure, so now, let's use it to measure the performance of our component. Let's copy our <rte-code>GameList.test.tsx<rte-code> to be <rte-code>GameList.perf-test.tsx<rte-code> and alter our performance test to match Reassure API.

Mocking

We will reuse the same mock we've created in <rte-code>GameList.test.tsx<rte-code>, but since the performance test will take way more time to run, we need to limit the test to only 100 items instead of 1000 and increase jest default timeout from 5000ms to a minute by using <rte-code>jest.setTimeout(60_000);<rte-code>.

Note that to get a more reliable performance measurement, Reassure executes each scenario ten times and averages the results (the number of runs can be easily configured using configure function).

Due to a slight API difference between Reassure and React Native Testing library, we also need to change our <rte-code>createWrapper<rte-code> function from the previous test in the following way:

Then we eliminate all our assertions and call <rte-code>measurePerformance<rte-code> function from reassure, passing it to our wrapper.

The final performance test looks like this:

At this point, we can run <rte-code>yarn reassure --baseline<rte-code> to gather baseline metrics to compare during all subsequent runs.

After running this command, <rte-code>.reassure/baseline.perf<re-code> file is created with the following data:

Since there can be discrepancies between the measured performance metrics, Reassure is designed to execute multiple runs (10 by default) and provide the average for two main parameters:

  • render count
  • render duration

In the <rte-code>.perf<rte-code> file, we can see the exact rendering duration for each run and the number of renders for each run. We can increase the number of runs by providing <rte-code>runs: number<rte-code> option to <rte-code>measurePerfomance<rte-code> function.

Introducing scenarios

While measuring performance, we usually want to check whether the component is re-rendered due to UI interaction. In our example, when clicking on a game item, <rte-code>likes<rte-code> for this item are updated. The way it works at the moment is by setting the state on the component and, as a result, triggering <rte-code>GameList<rte-code> re-render.

Let's validate this scenario in our performance test and see how it will impact our metrics.

We create a scenario async function where we can use any React Native Testing library methods.

Now we can pass this scenario to <rte-code>measurePerformance<rte-code> function:

Now, if we run <rte-code>yarn reassure<rte-code>, Reassure will compare <rte-code>.reassure/baseline.perf<rte-code> file <rte-code>with .reassure/current.perf<rte-code> file, and we will see the following results:

✅ Written Current performance measurements to .reassure/current.perf

🔗 /Users/vladimirnovick/dev/Callstack/Reassure/reassuredemo/.reassure/current.perf

❇️ Performance comparison results:

  • Current: (unknown)
  • Baseline: (unknown)

➡️ Signficant changes to render duration

  • GameList perf test: 480.2 ms → 690.7 ms (+210.5 ms, +43.8%) 🔴🔴 | 1 → 2 >(+1, +100.0%) 🔴

➡️ Meaningless changes to render duration

➡️ Render count changes

  • GameList perf test: 480.2 ms → 690.7 ms (+210.5 ms, +43.8%) 🔴🔴 | 1 → 2 >(+1, +100.0%) 🔴

➡️ Added scenarios

➡️ Removed scenarios

Here we can see an increase in the render count of the component and 43.8% increase in rendering time.

It's an excellent showcase of how new interactions during the development of new features can gradually increase rendering time and decrease the component's performance. Having a tool like Reassure gives us a detailed insight into how components' performance changes as the app grows.

Improving app performance with Reassure

Let's set this new metric as our new baseline and start improving our component to be more performant, measuring the number of re-renders and rendering time as we do our refactoring.

First of all, to set up a new baseline, let's run <rte-code>yarn reassure --baseline<rte-code>. As mentioned before, it will write new metrics in <rte-code>baseline.perf<rte-code> file and use it for comparison later on.

Refactoring to FlatList

You might be wondering, why not use FlatList? That’s a fair question. We shouldn't map over items, but rather use FlatList to render game items on the screen. So let's refactor our component accordingly:

Results will be outstanding:

Written Current performance measurements to .reassure/current.perf

🔗 /Users/vladimirnovick/dev/Callstack/Reassure/reassuredemo/.reassure/current.perf

❇️ Performance comparison results:

  • Current: (unknown)
  • Baseline: (unknown)

➡️ Signficant changes to render duration

  • GameList perf test: 687.6 ms → 83.8 ms (-603.8 ms, -87.8%) 🟢🟢 | 2 → 2

➡️ Meaningless changes to render duration

➡️ Render count changes

➡️ Added scenarios

➡️ Removed scenarios

As you can see, there is an 87.8% improvement in rendering times.

If you run yarn test <rte-code>GameList.test.tsx<rte-code> to check if our unit test is working, it will fail due to the FlatList rendering only 10 game items out of 1000 items available. That’s because the remaining items are off-screen and do not need any rendering.

Let's also change our <rte-code>GameList.test.tsx<rte-code> test and switch from

to

For further improvement, let's move likes logic into <rte-code>GameItem<rte-code> component. This will yield the following results:

Performance comparison results:

  • Current: (unknown)
  • Baseline: (unknown)

➡️ Signficant changes to render duration

  • GameList perf test: 687.6 ms → 47.3 ms (-640.3 ms, -93.1%) 🟢🟢 | 2 → 2

➡️ Meaningless changes to render duration

➡️ Render count changes

➡️ Added scenarios

➡️ Removed scenarios

✅ Written JSON output file .reassure/output.json

🔗 /Users/vladimirnovick/dev/Callstack/Reassure/reassuredemo/.reassure/output.> json

✅ Written output markdown output file .reassure/output.md

🔗 /Users/vladimirnovick/dev/Callstack/Reassure/reassuredemo/.reassure/output.md

As you can see from this example, we've successfully improved the performance of our component by 91.4% and reduced rendering times from 687.6ms to 59.3ms.

Using Reassure for performance regression testing in CI

Even though in our example, we've used Reassure as a tool to improve and measure performance, the area where the tool shines the brightest is Performance Regression testing.

As we develop new features, it's easy to gradually degrade performance until the problem becomes noticeable to the user. With Reassure, you can compile a report of performance changes by running Reassure in CI on your PRs.

It's important to note that the speed of the machine on which Reassure is running matters. To resolve any potential inconsistencies in the results, Reassure runs tests multiple times, averages the results, and provides a handy CLI tool to assess machine stability.

By running <rte-code>yarn reassure check-stability<rte-code>, it carries out performance measurements for the current code twice, so that baseline and current measurements refer to the same code. In such a case, the expected changes are 0% (no change). The degree of random performance changes will reflect the stability of your machine. This command can be run both on CI and local machines.

When integrating Reassure into CI, your CI agent stability is even more important than its speed. That’s because we want to see consistent results.

<p-bg-col>Tip: If your machine or CI agent stability is so-so, consider increasing the number of runs in the Reassure configure function.<p-bg-col>

You can create a custom script for CI to run to compare performance between your <rte-code>main<rte-code> branch and the current branch:

In the script above, we set the baseline branch to be the main branch and run <rte-code>yarn reassure --baseline<rte-code> to gather baseline metrics on it. Then, we compare them with the current branch by running <rte-code>yarn reassure<rte-code>. You can read more about setting up Reassure in CI in official docs.

Performance regression testing doesn’t have to be tiresome

Throughout this article, we’ve presented a few simple examples of things that can cause performance problems in the long run. As you've noticed, minor refactoring led to a 93.1% performance improvement. Even though performance issues presented in the article can be caught during a thorough PR review, spotting them can become inherently harder in complex codebases and as your React Native app grows. 

Making Reassure part of your test suite to address potential performance regressions and automate things in CI would greatly benefit you in the long run. Also, if you already write tests with react-native-testing-library (if you don't, you definitely should), creating Reassure perf tests is, to some degree, a copy-paste of existing tests with slight modification, and as such can be quickly introduced into the development workflow. 

If you have improvement suggestions, feel free to create issues in the Reassure repo and the team will address them. 

And if you're still hungry for knowledge, check out The Ultimate Guide to React Native, which discusses not only regression testing with Reassure, but also all things performance-related.

Author:
Vladimir Novick
arrow icon
MORE posts from this author
The super app landscape

What are super apps?

arrow-down

Super apps are multipurpose platforms that integrate a wide range of services and features to answer diverse user needs, all within a single mobile interface. Comprised of modular mini apps that users can activate at their convenience, super apps are the software equivalent of Swiss army knives that deliver a powerful mobile-first experience.

Super apps act as a one-stop shop for customers, allowing them to perform everyday tasks like shopping, paying bills, communicating, and more, all in one place. They’re a powerful tool for businesses looking to captivate users with what Mike Lazaridis, Blackberry founder who coined the term in 2010, defined as a “seamless, integrated, contextualized and efficient experience.”

A good example of such an all-round experience is WeChat, a multipurpose app developed in China. Its core features include messaging, localization, a search engine, a news feed, payments, loans, public services, transportation, and housing – and that’s by no means a finished list. It shouldn’t be surprising that the number of active users on WeChat is estimated to reach 1.102 billion by 2025.

What do super apps offer?

arrow-down

Super apps are made to meet the modern-day demand for smooth, convenient, all-encompassing mobile experiences. What makes them stand out, however, is the way they’re built and how they work. 

Ordinary mobile products offer a variety of features within a single application. Super apps, on the other hand, operate as a platform to deliver modular mini apps that users can activate for personalized experiences. The things that account for the super quality in super apps include:

  • range of services – while a mobile application typically serves a single purpose, a super app aims to be the only piece of software a user needs to perform a variety of actions across services or even industries, like Grab, WeChat, or Gojek.
  • all-in-one toolkit – traditional suites of applications released by tech giants like Google or Microsoft require users to switch between products to access different services. Super apps, on the other hand, shorten the customer journey by allowing users to achieve different goals within a single ecosystem without downloading multiple digital products.
  • data sharing – as opposed to ordinary apps that collect data related to a specific purpose only, super apps gather and process much more user data. While this may raise privacy and security concerns, properly-handled data sharing between respective services is a safe way to ensure an even smoother user experience.
  • financial services – there are limitless combinations of services that super apps may offer, from messaging, social networking, and e-commerce to transportation and health. However, as the examples of Gojek’s GoPay or WeChat Pay within WeChat Wallet show, built-in payment is one of the most prevalent. Super app users are usually required to provide their payment information only once for cross-service transactions – and they don’t need to leave the app to finalize the payment.

What’s the global landscape of super apps?

arrow-down

Ever since the launch of WeChat in 2011, super apps have been on the rise. There has been a notable difference between the emerging and developed economies’ approach to this kind of digital products, though. 

Super apps have taken emerging markets by storm. Among the most notable all-in-one applications released in the last decade are Southeast Asia's leading platforms Grab and MoMo, Latin America-based Rappi, Middle East’s first super app Careem, and WhatsApp, which started turning into a super app in Brazil by launched in-app business directory and shopping features. There are a few reasons why super apps have been booming in developing countries:

  • mobile-first nations – the emerging economies didn’t experience the desktop revolution the same way the developer markets did. Only once smartphones hit the market did they get to easily access the internet, which made many Asian nations mobile-first consumers and contributed to the wide adoption of super apps.
  • unbanked population – a large percentage of unbanked populations was the issue that the emerging economies have struggled with for a long time. To give you an idea, in 2018, over 220 million adults in China, 190 million in India, and 99 million in Pakistan didn’t have a bank account. With financial services often lying at their core, super apps allow users to access their assets and make purchases through mobile devices.
  • regulators’ support – governments in emerging economies have been supporting super apps to drive technological advancement together. For example, WeChat’s been subsidized by the Chinese government since its creation in 2011, while Jakarta entered into a partnership with Grab, Gojek, and other local startups to accelerate the launch of the capital’s smart city project. 

While super apps have been proliferating across emerging markets, they’ve been struggling to gain traction in the West. Among the reasons why are:

  • consumers’ concerns with data security and privacy,
  • rigid data sharing and antitrust laws,
  • cut-throat competition between existing players in most verticals.

What does the super app market look like now, and how will it evolve?

arrow-down

As of early 2023, 68% of the world’s population uses a mobile phone. Over the past year, the community of mobile users grew by 168 million individuals, and over 92% of all consumers use a mobile device to access the internet. These trends make the future look bright for businesses behind all sorts of mobile applications, including super apps, and translate into some promising numbers:

  • In 2022, the global super apps market size was valued at 61.30 billion U.S. dollars and was expected to expand at a compound annual growth rate of 27.8% until 2030. 
  • Gartner predicts that by 2027, over half of the population will be using multiple super apps daily, and their adoption will take place on both personal and enterprise levels. 
  • The survey conducted by statistics bureaus of the US, UK, Germany, and Australia estimated the number of potential day-one users for super apps is estimated to reach 98 million, which would result in an estimated 3.25 trillion U.S. dollars in annual spending on a super app by early-adoption users.

Super apps are widely adopted in Asia, the Middle East, Latin America, and Africa, but developed economies aren’t exempt from this global tech trend. The key to success in the US and Europe is to understand the distinctive needs and qualities of the Western markets. Having that in mind, Deloitte proposed the following direction for super apps in developed countries:

  • Having an established brand with developed user trust will make the organization’s entry into the super app ecosystem smoother, which seems promising for medium businesses and enterprises.
  • While banking and insurance-related features are indispensable in super apps, social media, ride-share, and payment companies are more likely to succeed in the Western market.
  • Unlike in the emerging economies, in the West, it seems unlikely to have one dominant super app; instead, we’re more likely to witness the rise of vertical-specific super apps, which means more opportunities for business growth.
  • Western super apps won’t aim to oust traditional mobile apps, and their competitive advantage is more likely to rely on giving users the ability to “manage fewer accounts, transact faster through consistent payments, save money using loyalty and rewards, and experience a better product enabled by cross-service insights and advice.”
  • Bearing in mind data privacy concerns, super apps targeted at the developed economies’ consumers will likely be more transparent about data use, and their functioning may require closer collaboration with regulators on the business's side.
  • The US and Europe won’t focus on the B2C market alone; we’re likely to witness there the emergence of more B2B super apps that will drive value “through data-driven insights, automated advice, and seamless integration of businesses’ platforms into a single workspace.”
Business impact of super apps

What are the business benefits of super apps?

arrow-down

Super apps have dominated emerging markets, and it’s only a matter of time before their popularity grows in the West. If you’re still wondering if your organization should jump on the super app bandwagon, consider the following business benefits:

  • increased customer acquisition – compared to traditional mobile applications, super apps offer a much wider range of services that cater to the needs of diverse audiences, which translates into a bigger potential user base. As your super app grows, it’s also possible to convert the existing users into consumers of a new service at practically zero cost, much like Gojek did.
  • improved user engagement – providing consolidated services in one place and consistently expanding the offering with new features gives you more touchpoints for interaction with users and makes it easier to keep them engaged. In the words of Dara Khosrowshahi, Uber’s CEO, “when we see customers using more than one product, their engagement with the platform more than doubles.” All of that boils down to bigger profits.
  • business stability and sustainable growth – this benefit relates to the ones we’ve already discussed, but it’s worth paying special attention to it due to the current economic landscape. Super apps embrace vertical growth by encouraging a shift from a product to a platform mindset. Offering a range of services may help your business survive when a given vertical suffers from an unexpected breakdown, as was the case with travel during the pandemic. 
  • increased revenue – services within the super app ecosystem can be provided by either you as the app owner or the third-party partners. Opening up your space to various retailers lets you monetize your product easily.
  • faster bug fixing – you can release fixes and improvements Over The Air (OTA), which means no hassle with Google Play or App Store review processes. Thanks to super app configuration, mini apps can download and install updates instantly without rebuilding the whole app.
  • team independence and development efficiency – while developing super apps in separate repositories, the host of the super app provides the necessary tools and infrastructure. The teams can work independently, which results in faster development, fewer code conflicts, and increased ownership in product teams.
  • security despite users’ concerns with data privacy, a super app is a sandbox where developers can play without breaking anything. You can build an environment where you mock some sensitive parts of your codebase. As a result, the environment is more secure, and external providers can move faster and contribute features to your app.

What makes super apps popular with users?

arrow-down

Super apps collectively have over 2.4 billion active users all over the world. Their enormous popularity in the B2C market can be attributed to:

  • ability to coordinate different aspects of everyday life in one place,
  • convenience and engaging experience without the need to learn how to use multiple apps,
  • time and storage saving resulting from having one user profile and downloading a single app for all services,
  • minimized risk of losing sensitive information when switching between service providers.

These benefits speak to those who haven’t yet had a chance to use a super app. According to a report by PYMNTS and PayPal, seven in ten global consumers express interest in a solution allowing them to manage payments and other everyday activities through a centralized tool. There’s much untapped potential in the developed economies, so why not be among the first to unlock it?

What are the concerns and challenges that come with super apps?

arrow-down

While super apps offer numerous benefits to both businesses and consumers, they come with some serious challenges as well:

  • data privacy – the multitude of services available within super apps is actually a mixed blessing for many users, especially in the West. Having heard hundreds of stories about data privacy abuse and data breaches from big tech companies, consumers are hesitant to share all their personal data with a single service provider, even if it comes with invaluable benefits.
  • regulatory issues – as a result of data privacy infringements, regulators around the world are implementing laws to further protect personal data and restrict sharing of user data between service providers. Another challenge for businesses behind super apps may be the competition legislations adopted in developed economies.  
  • user experience – in terms of UX, the main challenge for the teams behind the mini apps that make the super app is to strike a balance between consistency and uniqueness. On the one hand, the consistent look and feel account for a positive user experience, drive adoption and retention, and foster a sense of safety. On the other, super apps by definition are made to cater to the diverse needs of heterogeneous audiences, all at once. As each demographic segment interacts with digital products differently, the question remains how to maximize usability without overcomplicating the user experience.
Super apps and your organization

What does moving into the super app ecosystem mean for your organization?

arrow-down

Digital products are not developed in a vacuum. The way they’re designed and operate depends on many factors, one of which is communication between the development team. 

As stated by Melvin E. Conway: "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure." In simple words, Conway’s law means that the organizational structure is often mirrored in software design. For example, large corporations still using legacy technologies are much more likely to build stiff monoliths – and so their product reflects the organizational concerns more than the actual user needs.

A tool to tackle this issue is the reverse Conway maneuver, according to which the desired software architecture is what affects the organizational structure, not the other way round. This way, teams are capable of building digital products optimized for changing user requirements and business objectives, just as is the case with super app development.

The super app approach has a profound impact on how you organize the work of your developers. It enables respective teams to independently develop and deploy parts of the host application as mini apps and gives more room for third-party contributions. The way the super app architecture influences team composition and the development process is a great example of the reverse Conway law in practice.

What should you consider when choosing a super app development partner?

arrow-down

Hiring a tech partner to build your super app can be a real money and time-saver. It takes the burden of internal recruitment from you if you lack in-house expertise in this area and opens up possibilities for upskilling. When looking for a reliable super app development company, we advise looking for the following qualities:

  • experience building super apps – it may sound obvious, but checking if the tech partner’s portfolio includes projects like yours is key. Super apps are a special kind of mobile applications, so the software development company of your choice should know its way around building mini apps and integrating them into whole ecosystems. If you’re wondering about our experience, check out how we improved the performance of MoMo’s super app and mini apps by migrating their architecture to Re.Pack
  • consultancy approach – what sets a good tech partner apart from ordinary outsourced teams is proactivity in matching tech solutions with your needs. You should be looking for a company that’s eager to take a closer look at your current product and situation first, without assessing it as good or bad, but focusing on the potential for improvement. Only once the tech partner understands your pain points and objectives better can they suggest a bespoke mix of technology and solutions. 
  • going beyond development – stepping into the super app ecosystem is not a purely technical choice; it also entails a certain degree of organizational change. That’s why the right tech partner should be able to outline the product roadmap and propose relevant changes to processes, workflows, and peopleware.
  • knowledge-sharing – if your in-house team doesn’t have much experience building super app ecosystems, it might be a good idea to look for a tech partner whose developers will share their specialist knowledge with your squad. This will make the long-term development work more efficient and lay the foundations for sustainable business growth.

At Callstack, we’ve got super app development skills and a business-oriented proactive approach. Get in touch with us, and let’s find out how we can help your business succeed with the next big super app.

Super app development in practice

What are key tech considerations for super app development?

arrow-down

The unique experience that super apps offer comes with some special development considerations. Here’s a brief overview of the main factors, which you can read more about in the tech FAQ:

  • tech stack – there’s no one-size-fits-all solution to building a robust and sustainable super app, so you can go for native or cross-platform development, depending on your needs and capabilities. Our experience shows that choosing React Native and Re.Pack means optimal user experience and the ability to leverage code splitting for streamlined development and simplified management of your super app.
  • consistent performance – whether you’re in charge of all services or you’re cooperating with a third-party partner, all functionalities within your super app should have equal operating speed and effectiveness, even on low-end devices and in the low-speed internet environment.
  • user-friendly design – the abundance of features can be overwhelming unless you minimize the friction with a consistent design. To captivate the users, your super app’s design should be visually appealing yet clean and intuitive, especially if you’re planning to win the hearts of Western users, who are accustomed to straightforward navigation and minimalist design.
  • security ensuring user safety should be a priority for every tech business; however, with super apps storing all personal information in one place, their creators should put in even more effort to prevent security breaches. The precautions your development team can take include pen tests, 2FA, code obfuscation, data encryption, and more.

What approach to super app development can you adopt? 

arrow-down

Digital products come in all shapes and sizes, which is why the common answer to many questions in software development is “it depends”. Super app development is no different, as depending on your preferences, you can choose from the following approaches:

  • Native Android application with Feature Delivery
  • Native iOS application with WebViews
  • Cross-platform React Native application with Metro
  • Cross-platform React Native application with Webpack and Re.Pack

At Callstack, though, we recommend going for the latter because it proves to be the most beneficial. Compared to other tools and solutions available on the market, Re.Pack allows you to enjoy:

  • reusable features
  • smaller JS bundle size
  • OTA updates of on-demand features
  • time and cost-effective development experience
  • ability to leverage third-party contributions

If you’re wondering how it works in practice, we encourage you to check out our super-app-showcase.

What exactly is Callstack’s super-app-template?

arrow-down

Our super-app-showcase is a repository demonstrating how to structure a super app when working with Re.Pack and Module Federation to achieve the best business results. It highlights various solutions and best practices developers can employ to tackle challenges and streamline the super app development process. 

The super-app-showcase comprises:

  • the host app, which is the main container for the micro-frontends,
  • the shell app, which functions like a blueprint of the host app with shared dependencies,
  • a few mini apps, each dedicated to a single service booking, shopping, dashboard, and news – the latter being stored in a separate repository. 

You can learn more about the architecture and the intricacies of the template from the case study published on our blog.

How does super app development with Callstack's super-app-template influence your team’s work and developer experience?

arrow-down

By definition, a super app is built as a platform “to deliver a mini apps ecosystem that users can choose from to activate for consistent and personalized app experiences.” This modular approach allows a large development team to split into smaller squads, each focused on a respective mini app, and enables third-party contributions to be seamlessly integrated into the final product. 

When implemented right, such a workflow may lead to greater flexibility, independence, and development speed. Among the steps to optimize developer experience in the super app setup, there are:

  • creating and exposing a sandbox environment that closely resembles your host app, like the shell app in our super-app-showcase,
  • if need be, creating an SDK that contains common and repeatedly used elements,
  • organizing the codebase into a monorepo, which is an optional step.

Using Re.Pack and our super-app-template to build your super app makes the application of these tips in developers’ work much easier.

The super app landscape
Business impact of super apps
Super apps and your organization
Super app development in practice

What are super apps?

arrow-down

Super apps are multipurpose platforms that integrate a wide range of services and features to answer diverse user needs, all within a single mobile interface. Comprised of modular mini apps that users can activate at their convenience, super apps are the software equivalent of Swiss army knives that deliver a powerful mobile-first experience.

Super apps act as a one-stop shop for customers, allowing them to perform everyday tasks like shopping, paying bills, communicating, and more, all in one place. They’re a powerful tool for businesses looking to captivate users with what Mike Lazaridis, Blackberry founder who coined the term in 2010, defined as a “seamless, integrated, contextualized and efficient experience.”

A good example of such an all-round experience is WeChat, a multipurpose app developed in China. Its core features include messaging, localization, a search engine, a news feed, payments, loans, public services, transportation, and housing – and that’s by no means a finished list. It shouldn’t be surprising that the number of active users on WeChat is estimated to reach 1.102 billion by 2025.

What do super apps offer?

arrow-down

Super apps are made to meet the modern-day demand for smooth, convenient, all-encompassing mobile experiences. What makes them stand out, however, is the way they’re built and how they work. 

Ordinary mobile products offer a variety of features within a single application. Super apps, on the other hand, operate as a platform to deliver modular mini apps that users can activate for personalized experiences. The things that account for the super quality in super apps include:

  • range of services – while a mobile application typically serves a single purpose, a super app aims to be the only piece of software a user needs to perform a variety of actions across services or even industries, like Grab, WeChat, or Gojek.
  • all-in-one toolkit – traditional suites of applications released by tech giants like Google or Microsoft require users to switch between products to access different services. Super apps, on the other hand, shorten the customer journey by allowing users to achieve different goals within a single ecosystem without downloading multiple digital products.
  • data sharing – as opposed to ordinary apps that collect data related to a specific purpose only, super apps gather and process much more user data. While this may raise privacy and security concerns, properly-handled data sharing between respective services is a safe way to ensure an even smoother user experience.
  • financial services – there are limitless combinations of services that super apps may offer, from messaging, social networking, and e-commerce to transportation and health. However, as the examples of Gojek’s GoPay or WeChat Pay within WeChat Wallet show, built-in payment is one of the most prevalent. Super app users are usually required to provide their payment information only once for cross-service transactions – and they don’t need to leave the app to finalize the payment.

What’s the global landscape of super apps?

arrow-down

Ever since the launch of WeChat in 2011, super apps have been on the rise. There has been a notable difference between the emerging and developed economies’ approach to this kind of digital products, though. 

Super apps have taken emerging markets by storm. Among the most notable all-in-one applications released in the last decade are Southeast Asia's leading platforms Grab and MoMo, Latin America-based Rappi, Middle East’s first super app Careem, and WhatsApp, which started turning into a super app in Brazil by launched in-app business directory and shopping features. There are a few reasons why super apps’ have been booming in developing countries:

  • mobile-first nations – the emerging economies didn’t experience the desktop revolution the same way the developer markets did. Only once smartphones hit the market did they get to easily access the internet, which made many Asian nations mobile-first consumers and contributed to the wide adoption of super apps.
  • unbanked population – a large percentage of unbanked populations was the issue that the emerging economies have struggled with for a long time. To give you an idea, in 2018, over 220 million adults in China, 190 million in India, and 99 million in Pakistan didn’t have a bank account. With financial services often lying at their core, super apps allow users to access their assets and make purchases through mobile devices.
  • regulators’ support – governments in emerging economies have been supporting super apps to drive technological advancement together. For example, WeChat’s been subsidized by the Chinese government since its creation in 2011, while Jakarta entered into a partnership with Grab, Gojek, and other local startups to accelerate the launch of the capital’s smart city project. 

While super apps have been proliferating across emerging markets, they’ve been struggling to gain traction in the West. Among the reasons why are:

  • consumers’ concerns with data security and privacy
  • rigid data sharing and antitrust laws
  • cut-throat competition between existing players in most verticals.

What does the super app market look like now, and how will it evolve?

arrow-down

As of early 2023, 68% of the world’s population uses a mobile phone. Over the past year, the community of mobile users grew by 168 million individuals, and over 92% of all consumers use a mobile device to access the internet. These trends make the future look bright for businesses behind all sorts of mobile applications, including super apps, and translate into some promising numbers:

  • In 2022, the global super apps market size was valued at 61.30 billion U.S. dollars and was expected to expand at a compound annual growth rate of 27.8% until 2030. 
  • Gartner predicts that by 2027, over half of the population will be using multiple super apps daily, and their adoption will take place on both personal and enterprise levels. 
  • The survey conducted by statistics bureaus of the US, UK, Germany, and Australia estimated the number of potential day-one users for super apps is estimated to reach 98 million, which would result in an estimated 3.25 trillion U.S. dollars in annual spending on a super app by early-adoption users.

Super apps are widely adopted in Asia, the Middle East, Latin America, and Africa, but developed economies aren’t exempt from this global tech trend. The key to success in the US and Europe is to understand the distinctive needs and qualities of the Western markets. Having that in mind, Deloitte proposed the following direction for super apps in developed countries:

  • Having an established brand with developed user trust will make the organization’s entry into the super app ecosystem smoother, which seems promising for medium businesses and enterprises.
  • While banking and insurance-related features are indispensable in super apps, social media, ride-share, and payment companies are more likely to succeed in the Western market.
  • Unlike in the emerging economies, in the West, it seems unlikely to have one dominant super app; instead, we’re more likely to witness the rise of vertical-specific super apps, which means more opportunities for business growth.
  • Western super apps won’t aim to oust traditional mobile apps, and their competitive advantage is more likely to rely on giving users the ability to “manage fewer accounts, transact faster through consistent payments, save money using loyalty and rewards, and experience a better product enabled by cross-service insights and advice.”
  • Bearing in mind data privacy concerns, super apps targeted at the developed economies’ consumers will likely be more transparent about data use, and their functioning may require closer collaboration with regulators on the business's side.
  • The US and Europe won’t focus on the B2C market alone; we’re likely to witness there the emergence of more B2B super apps that will drive value “through data-driven insights, automated advice, and seamless integration of businesses’ platforms into a single workspace.”

What are the business benefits of super apps?

arrow-down

Super apps have dominated emerging markets, and it’s only a matter of time before their popularity grows in the West. If you’re still wondering if your organization should jump on the super app bandwagon, consider the following business benefits:

  • increased customer acquisition – compared to traditional mobile applications, super apps offer a much wider range of services that cater to the needs of diverse audiences, which translates into a bigger potential user base. As your super app grows, it’s also possible to convert the existing users into consumers of a new service at practically zero cost, much like Gojek did.
  • improved user engagement – providing consolidated services in one place and consistently expanding the offering with new features gives you more touchpoints for interaction with users and makes it easier to keep them engaged. In the words of Dara Khosrowshahi, Uber’s CEO, “when we see customers using more than one product, their engagement with the platform more than doubles.” All of that boils down to bigger profits.
  • business stability and sustainable growth – this benefit relates to the ones we’ve already discussed, but it’s worth paying special attention to it due to the current economic landscape. Super apps embrace vertical growth by encouraging a shift from a product to a platform mindset. Offering a range of services may help your business survive when a given vertical suffers from an unexpected breakdown, as was the case with travel during the pandemic. 
  • increased revenue – services within the super app ecosystem can be provided by either you as the app owner or the third-party partners. Opening up your space to various retailers lets you monetize your product easily.
  • faster bug fixing – you can release fixes and improvements Over The Air (OTA), which means no hassle with Google Play or App Store review processes. Thanks to super app configuration, mini apps can download and install updates instantly without rebuilding the whole app.
  • team independence and development efficiency – while developing super apps in separate repositories, the host of the super app provides the necessary tools and infrastructure. The teams can work independently, which results in faster development, fewer code conflicts, and increased ownership in product teams.
  • security despite users’ concerns with data privacy, a super app is a sandbox where developers can play without breaking anything. You can build an environment where you mock some sensitive parts of your codebase. As a result, the environment is more secure, and external providers can move faster and contribute features to your app.

What makes super apps popular with users?

arrow-down

Super apps collectively have over 2.4 billion active users all over the world. Their enormous popularity in the B2C market can be attributed to:

  • ability to coordinate different aspects of everyday life in one place,
  • convenience and engaging experience without the need to learn how to use multiple apps,
  • time and storage saving resulting from having one user profile and downloading a single app for all services,
  • minimized risk of losing sensitive information when switching between service providers.

These benefits speak to those who haven’t yet had a chance to use a super app. According to a report by PYMNTS and PayPal, seven in ten global consumers express interest in a solution allowing them to manage payments and other everyday activities through a centralized tool. There’s much untapped potential in the developed economies, so why not be among the first to unlock it?

What are the concerns and challenges that come with super apps?

arrow-down

While super apps offer numerous benefits to both businesses and consumers, they come with some serious challenges as well:

  • data privacy – the multitude of services available within super apps is actually a mixed blessing for many users, especially in the West. Having heard hundreds of stories about data privacy abuse and data breaches from big tech companies, consumers are hesitant to share all their personal data with a single service provider, even if it comes with invaluable benefits.
  • regulatory issues – as a result of data privacy infringements, regulators around the world are implementing laws to further protect personal data and restrict sharing of user data between service providers. Another challenge for businesses behind super apps may be the competition legislations adopted in developed economies.  
  • user experience – in terms of UX, the main challenge for the teams behind the mini apps that make the super app is to strike a balance between consistency and uniqueness. On the one hand, the consistent look and feel account for a positive user experience, drive adoption and retention, and foster a sense of safety. On the other, super apps by definition are made to cater to the diverse needs of heterogeneous audiences, all at once. As each demographic segment interacts with digital products differently, the question remains how to maximize usability without overcomplicating the user experience.

What does moving into the super app ecosystem mean for your organization?

arrow-down

Digital products are not developed in a vacuum. The way they’re designed and operate depends on many factors, one of which is communication between the development team. 

As stated by Melvin E. Conway: "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure." In simple words, Conway’s law means that the organizational structure is often mirrored in software design. For example, large corporations still using legacy technologies are much more likely to build stiff monoliths – and so their product reflects the organizational concerns more than the actual user needs.

A tool to tackle this issue is the reverse Conway maneuver, according to which the desired software architecture is what affects the organizational structure, not the other way round. This way, teams are capable of building digital products optimized for changing user requirements and business objectives, just as is the case with super app development.

The super app approach has a profound impact on how you organize the work of your developers. It enables respective teams to independently develop and deploy parts of the host application as mini apps and gives more room for third-party contributions. The way the super app architecture influences team composition and the development process is a great example of the reverse Conway law in practice.

What should you consider when choosing a super app development partner?

arrow-down

Hiring a tech partner to build your super app can be a real money and time-saver. It takes the burden of internal recruitment from you if you lack in-house expertise in this area and opens up possibilities for upskilling. When looking for a reliable super app development company, we advise looking for the following qualities:

  • experience building super apps – it may sound obvious, but checking if the tech partner’s portfolio includes projects like yours is key. Super apps are a special kind of mobile applications, so the software development company of your choice should know its way around building mini apps and integrating them into whole ecosystems. If you’re wondering about our experience, check out how we improved the performance of MoMo’s super app and mini apps by migrating their architecture to Re.Pack
  • consultancy approach – what sets a good tech partner apart from ordinary outsourced teams is proactivity in matching tech solutions with your needs. You should be looking for a company that’s eager to take a closer look at your current product and situation first, without assessing it as good or bad, but focusing on the potential for improvement. Only once the tech partner understands your pain points and objectives better can they suggest a bespoke mix of technology and solutions. 
  • going beyond development – stepping into the super app ecosystem is not a purely technical choice; it also entails a certain degree of organizational change. That’s why the right tech partner should be able to outline the product roadmap and propose relevant changes to processes, workflows, and peopleware.
  • knowledge-sharing – if your in-house team doesn’t have much experience building super app ecosystems, it might be a good idea to look for a tech partner whose developers will share their specialist knowledge with your squad. This will make the long-term development work more efficient and lay the foundations for sustainable business growth.

At Callstack, we’ve got super app development skills and a business-oriented proactive approach. Get in touch with us, and let’s find out how we can help your business succeed with the next big super app.

What are key tech considerations for super app development?

arrow-down

The unique experience that super apps offer comes with some special development considerations. Here’s a brief overview of the main factors, which you can read more about in the tech FAQ:

  • tech stack – there’s no one-size-fits-all solution to building a robust and sustainable super app, so you can go for native or cross-platform development, depending on your needs and capabilities. Our experience shows that choosing React Native and Re.Pack means optimal user experience and the ability to leverage code splitting for streamlined development and simplified management of your super app.
  • consistent performance – whether you’re in charge of all services or you’re cooperating with a third-party partner, all functionalities within your super app should have equal operating speed and effectiveness, even on low-end devices and in the low-speed internet environment.
  • user-friendly design – the abundance of features can be overwhelming unless you minimize the friction with a consistent design. To captivate the users, your super app’s design should be visually appealing yet clean and intuitive, especially if you’re planning to win the hearts of Western users, who are accustomed to straightforward navigation and minimalist design.
  • security ensuring user safety should be a priority for every tech business; however, with super apps storing all personal information in one place, their creators should put in even more effort to prevent security breaches. The precautions your development team can take include pen tests, 2FA, code obfuscation, data encryption, and more.

What approach to super app development can you adopt? 

arrow-down

Digital products come in all shapes and sizes, which is why the common answer to many questions in software development is “it depends”. Super app development is no different, as depending on your preferences, you can choose from the following approaches:

  • Native Android application with Feature Delivery
  • Native iOS application with WebViews
  • Cross-platform React Native application with Metro
  • Cross-platform React Native application with Webpack and Re.Pack

At Callstack, though, we recommend going for the latter because it proves to be the most beneficial. Compared to other tools and solutions available on the market, Re.Pack allows you to enjoy:

  • reusable features
  • smaller JS bundle size
  • OTA updates of on-demand features
  • time and cost-effective development experience
  • ability to leverage third-party contributions

If you’re wondering how it works in practice, we encourage you to check out our super-app-template.

What exactly is Callstack’s super-app-template?

arrow-down

Our super-app-template is a repository demonstrating how to structure a super app when working with Re.Pack and Module Federation to achieve the best business results. It highlights various solutions and best practices developers can employ to tackle challenges and streamline the super app development process. 

The super-app-template comprises:

  • the host app, which is the main container for the micro-frontends
  • the shell app, which functions like a blueprint of the host app with shared dependencies
  • a few mini apps, each dedicated to a single service booking, shopping, dashboard, and news – the latter being stored in a separate repository. 

You can learn more about the architecture and the intricacies of the template from the case study published on our blog.

What does the super app How does super app development with Callstack template influence your team’s work and developer experience? look like now, and how will it evolve?

arrow-down

By definition, a super app is built as a platform “to deliver a mini apps ecosystem that users can choose from to activate for consistent and personalized app experiences.” This modular approach allows a large development team to split into smaller squads, each focused on a respective mini app, and enables third-party contributions to be seamlessly integrated into the final product. 

When implemented right, such a workflow may lead to greater flexibility, independence, and development speed. Among the steps to optimize developer experience in the super app setup, there are:

  • creating and exposing a sandbox environment that closely resembles your host app, like the shell app in our super-app-template,
  • if need be, creating an SDK that contains common and repeatedly used elements,
  • organizing the codebase into a monorepo, which is an optional step.

Using Re.Pack and our super-app-template to build your super app makes the application of these tips in developers’ work much easier.

Bundle React Native apps using Webpack features

Discover Re.Pack – a Webpack-based toolkit that allows you to build a React Native app with the full support of the Webpack ecosystem.

learn more

More posts from this category

Ensure your React components perform as intended as your app grows

Discover Reassure - our open-source library that allows you to run performance tests measuring the average rendering time of the in-app components.

business benefits

Performance Optimization

To stay competitive, you need a high-performing app. Improving React Native performance can bring your company many business and tech benefits. To learn more about it, check the page entirely dedicated to React Native Performance Optimization. Discover a real-life example of React Native optimization we performed for Aaqua, a Singaporean platform that enables global users to share their passion through groups.

Bundle React Native apps using Webpack features

Discover Re.Pack – a Webpack-based toolkit that allows you to build a React Native app with the full support of the Webpack ecosystem.

business benefits

Why React Native?

Building an all-in-one platform can bring your company a lot of business and tech benefits like seamless UX experience, global reach, brand growth just to name a few. To learn more about the benefits of using React Native to develop super apps, check out the MoMo case study. Where we helped improve app's performance by migrating architecture to Re.Pack.

stay tuned

Subscribe to our newsletter

You may unsubscribe from these communications at any time. For details see the Privacy Policy.