Home
|
Case Studies
|
Zephyr Cloud

Empowering Zephyr Cloud With a Customizable White-Label App

We integrated ZephyrCloud into a React Native super app with Re.Pack to create multiple micro frontends, and developed an app as an example and test playground for Zephyr’s Re.Pack integration.

CLIENT INFO
Zephyr Cloud Platform is a service that enables organizations to deliver value to their customers through their innovative approach to cloud deployments.
Industry
IT | Developer Platform as a Service
Company type
Venture-Backed Startup
Region
USA
tech INFO
We created a white-label app for Zephyr Cloud to showcase their ability to deliver tailored digital experiences to future clients.
Technologies
React Native
Platforms
iOS | Android
Tech Stack
Re.Pack | Zephyr Cloud | TypeScript | React Native Paper | Rspack | Nx
OBJECTIVE
Before 14.5s
After 2.5s
35k
lines of code
7
months of work
800
code commits
88%
decreased shimmer render time
50%
quicker load times for chats on subsequent visits
50%
faster rendering time for chats
18%
less frame junk when scrolling
before
The refresh time was 5-11 seconds
after
The refresh time was reduced to ~2 s

Instant Preview

Developers can instantly preview code changes on real devices without a complex setup.

The primary goal was to showcase a robust, scalable,  and customizable white-label solution that could cater to diverse business needs.

As an implementation partner, we have built similar apps for Zephyr Cloud’s customers, and we wanted to bring it to light. 

The app needed to:

  • Ensure seamless integration and operation of federated mini-apps.
  • Maintain consistent branding and user experience across implementations.
  • Enable ease of customization for future clients.
Zephyr Cloud
CHALLENGE
Key Features and Innovations

Sharing UI Components Across Mini-Apps

With the underlying goal of team autonomy and increasing the velocity of value creation. The app was developed within a single Nx-managed monorepo, enabling seamless code sharing across multiple packages, mini-apps, and utilities. This approach allowed us to create a centralized UI library, ensuring a consistent look and feel across various parts of the user experience. Additionally, any changes to the shared UI library were easy to test and integrate. The app ensured:

  • Consistency in UX: Shared theming and accessibility standards.
  • Branding Control: Unified branding elements and assets across all mini-apps.
  • Efficiency: Streamlined updates to UI components without duplication.

This approach utilized libraries like React Native Paper or custom-built solutions to achieve design goals efficiently.

State and Data Management

The app employed a hybrid approach to state management, differentiating between server and client states:

  • Server State: Managed using TanStack Query to provide a shared cache across mini-apps, ensuring up-to-date and synchronized data.
  • Client State: Managed independently for each mini-app, with tools like Zustand and React Context to minimize coupling.

This structure allowed teams to work independently while enabling shared server states for critical data synchronization.

Federated Navigation Management

The app’s navigation system was optimized for the React Native environment, where traditional web-based routing is not applicable. The team evaluated multiple approaches and chose a centralized navigation strategy:

  • Unified Navigation: A single NavigationContainer managed by the host app, simplifying linking and navigation updates.
  • Challenges Addressed: While this increased coupling, it enabled better integration with mini-apps containing isolated screens.
  • Future-Ready Options: The architecture allows for potential shifts to decentralized navigation to support more standalone features.

Dependency Management

To ensure consistent library versions across the project and fully leverage the OTA functionality provided by Zephyr Cloud—along with its near-instant rollbacks and deployments—we prioritized efficient and effective dependency management. To achieve this, we implemented the following strategies:

  • Streamlined dependency alignment across all mini-apps and reduced maintenance overhead by utilizing Microsoft's rnx-align-deps.
  • Managed react and react-native singleton versions using the Re.Pack Module Federation plugin.
  • Coordinated ZephyrCloud deployments to ensure that corresponding native builds used the correct JavaScript bundle files.

Read more about how to achieve it from Zephyr Cloud’s documentation.

Shared Services with Mobile-Core SDK

A mobile-core SDK layer was developed to centralize shared services, including authentication, data storage, and localization. This provided:

  • Code Reusability: Reduced duplication and simplified maintenance.
  • Consistency: Ensured uniform behavior across mini-apps.
  • Scalability: Allowed seamless addition of new mini-apps without re-implementing core services.

Asset Management

Handling assets in a federated mobile application presented unique challenges. The solution involved:

  • Inline Assets: Used Repack’s Assets Loader to embed assets directly into the app bundle, ensuring availability across mini-apps.
  • Extended Asset Support: Configured loaders to handle formats like Lottie animations, broadening the app’s visual capabilities.
define
Identified confirmed/reported issues such as re-renders and created a backlog for potential improvements.
measure
Used Macro tool measurements.
ANALYZE
Selected the most promising performance changes.
IMPROVE
Implemented changes following React Native best practices.
CONTROL
Re-measured with the Marco tool and compared to the 4.58.0 native version.
Deployment
 Developed the release process for both Android and iOS.
API DESIGN
Proposed an API based on the Rive Android library features.
INTEGRATION
Implemented Rive SDK integration for Android and created an example app for testing.
iOS SUPPORT
Extended the integration to iOS after successful Android testing.
AUTOMATION
Created a Github Action workflow for automated library releases.
PUBLIC RELEASE
Made the library publicly available on platforms like CocoaPods and Maven.
DEPENDENCIES
Managing dependencies, including Expo and react-native packages for each new release.
RELEASES
Automating the release process with custom GitHub Actions.
TRAINING
Providing React Native training through pair programming, code reviews, and workshops.
Challenges and Solutions

Overcoming Obstacles and Implementing Solutions in Mini-Apps

Loosely Coupled Mini-Apps
Ensuring independence between mini-apps while maintaining necessary communication was a priority. The team addressed this by:
  • Isolating client states and minimizing shared states.
  • Allowing server state sharing through a centralized query client.
Navigation Complexity
Balancing centralized and decentralized navigation posed challenges. A centralized approach was chosen to simplify integration during initial development, with flexibility for future changes.
Dependency Maintenance
Managing native and JavaScript dependencies required meticulous configuration, streamlined by tools like rnx-align-deps and Re.Pack’s shared fields.
01
CODE REFACTORING
Kicked off the project with refactoring the whole socket.MIGRATION Migrated the codebase to TypeScript.
02
MIGRATION
Migrated the codebase to TypeScript.
03
DEPENDENCIES
Upgraded major dependencies such as Expo, React Navigation, and React Query.
04
PAYMENTS
Created two options: In-app purchase with Google Play or App Store and credit card payment.
05
linking
Sorted out links, integrated content, and implemented html rendering.
We provided full front-end support, project configuration, feature parity, and expert advice on technical and user experience. We also implemented a new design guideline, including dark mode with auto theme detection.
01
RN PAPER
Forked the React Native Paper library.
02
ci
Established continuous integration for automated code updates.
03
testing
Set up a Storybook for component testing.
04
design
Developed the basis of the design – color, layout, and typography.
Once we had the basics down, we started working on the UI library components. The components we developed included: AppBar, TextField. Button, Icon Button, Toast, which included animation and swipe-to-dismiss, Match Status, Search, and many more!
Apart from all the fixes and improvements, we provided metrics that should be tracked over time so the client knows exactly what to monitor and correct to maintain great performance levels long term.
16.8s
App start time, before 48.5s
 8.6s
Report screen load time, before 15.9s
2.5s
Sending a message, before 14.5s
60FPS
Average FPS on LHN
2.6s
Search screen load time, before 11.8s
01
Together
we acted as staff augmentation within Advantys’ team.
02
Engaged
in collaborative problem-solving and solution exploration.
03
supervised
by Advantys' CTO, the project utilized GitHub, Notion, and Slack for communication.
01
migrating
from a custom server-side rendering (SSR) solution to Next.js 
02
Focusing
on Core Web Vitals metrics
03
Optimizing
a large shared JS bundle 
04
Introducing
Fast Refresh for accelerated development iterations
The introduction of Fast Refresh in Next.js further accelerated development iterations. All in all, it contributed to an enhanced user and developer experience.In a span of several months, our team effectively overhauled the AutoZone app's performance, which initially struggled on both desktop and mobile devices. To find out more about the whole AutoZone project, head over to the case study on main case study title
01
strong
architecture with professional maintenance and continuous updates
02
high
code coverage with quality-compliant unit and integration tests
03
Comprehensive
testing, including end-to-end.
04
Faster
time-to-market with mobile process automation.
05
New PoC
features like biometrics and mobile health kit integration.
Last but not least, our collaboration significantly enhanced the knowledge of Thriva's development team regarding React and React Native.
Autozone app
  • Students new to programming and React Native
  • Web developers unfamiliar with device APIs and native apps
  • Native developers exploring web app frameworks and React Native's UX potential
  • React Native developers prototyping and sharing ideas
  • Library maintainers creating examples and documentation
  • Users providing reproducible cases for bug reports
  • Speakers and workshop presenters conducting live coding sessions
Callstack person image
Results

The white-label app successfully met Zephyr Cloud’s requirements, offering:

  • Enhanced Scalability: Modular architecture supports new features and mini-apps with minimal effort.
  • User-Centric Design: Consistent and accessible UI across all mini-apps.
  • Operational Efficiency: Streamlined dependency and state management processes.

The collaboration between Callstack and Zephyr Cloud showcased the power of modern React Native technologies in creating scalable, customizable solutions. The white-label app positions Zephyr Cloud as a leader in digital innovation, ready to meet the diverse needs of its clients. 

This collaboration also brought direct benefits to the community, with NativeWind support being added to Re.Pack.

Your Success Story is Next
callstack illustration
CALLSTACK APPROACH
get in touch

Trusted by

“The team at Callstack are the most experienced and trusted engineers in the React Native community and ecosystem.”

Nader Dabit

DevRel + XD at EigenLayer / EigenDA

at Amazon Web Services

This information will be used only to contact you. For details, check our Privacy Policy.
Callstack Cosmos

-

In brief

We optimized the client’s mobile app performance and introduced a custom tool to measure performance regressions. We set up performance tests and documentation to enable a seamless transition of knowledge with the in-house team of developers.

Client Info
Entain is one of the world’s largest sports betting and gaming entertainment groups.
Industry
Commercial gaming
Company type
Enterprise
Region
Australia, Asia & Oceania
Tech Info
Performance optimization project with the best practices, approaches & tech solutions
Technologies
React Native | Native
Platforms
iOS | Android
Stack
Redux | Tanstack | Reassure | GraphQL

Performance Boost

87.5%

In 87.5% of the screens, the number of rerenders decreased or remained the same, which affected the acceleration of the initial performance.

React Universe

In brief

Setting new best pracices
Table of contents:
Arrow

The challenges we’ve solved so far

Related services

No items found.

get in touch

Fill in the form and tell us a little bit about your enquiry. We’ll get back to you promptly to discuss your requirements.

This information will be used only to contact you. For details, check our Privacy Policy.