Driving Success: AutoZone's Journey to App Excellence

We've partnered with AutoZone for years, initially optimizing their web app for mobile and migrating old native apps to React Native. Our collaboration has since grown to include additional features, working closely with their teams to uphold high-performance standards.

CLIENT INFO
AutoZone is a major player in automotive retail. It’s a huge e-commerce company operating through a complex application on mobile and web.
Industry
Automotive
Company type
Enterprise
Region
USA, Mexico, Puerto Rico, Brazil
tech INFO
We continuously improve AutoZone's web and mobile applications.
Technologies
React | React Native
Platforms
Web (Desktop & Mobile)
Tech Stack
TypeScript | React Query | React Testing Library | Playwright
HIGHLIGHT
200%

IS HOW MUCH WE ENHANCED THE APP PERFORMANCE

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.
Autozone
CHALLENGE

The client approached us to enhance their web and mobile applications, which required a transition from outdated native apps to a modern React Native framework. AutoZone's legacy native apps posed challenges with code navigation and onboarding new engineers. 

WORK DONE

MIGRATING FROM NATIVE TO REACT NATIVE

We embarked on a gradual migration to React Native, ensuring a smooth transition without disrupting operations. This approach allowed us to refresh the app's design and functionality while maintaining business continuity. We segmented the app into modules, prioritizing them based on dependency levels. Starting with the store tab, the simplest module, we proceeded with migration. We addressed screen transitions by creating a custom linking layer to send data between old and new screens (between native and React Native). There was no wrapper or support in React Native, so we had to make a custom solution to adjust React Native to AutoZone’s needs.

Key steps:

  • Conducted architecture audit and prioritized migration modules.
  • Implemented a custom solution for seamless integration between native and React Native elements.
  • Developed a brownfield library to optimize migration workflow.
  • Achieved a successful migration in a year and a half, leading to a refreshed app and improved user experience.

IMPLEMENTING NEXT.JS FOR WEB APP DEVELOPMENT

AutoZone sought to improve their web app's performance and SEO rankings. We migrated their custom server-side rendering to Next.js, a React framework for server-rendered web apps. This transition streamlined development and significantly enhanced performance metrics, leading to a notable improvement in SEO.

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.
Key achievements

Autozone Project highlights

  • Enhanced app performance by over 200%.
  • Improved Core Web Vitals metrics to meet Google's standards.
  • Reduced refresh time to ~2s with Fast Refresh feature.
  • Improve code quality and ongoing efforts to add advanced functionalities

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

Our partnership with AutoZone has resulted in significant improvements in both mobile and web applications. By leveraging cutting-edge technologies and fostering a collaborative environment, we've achieved tangible results in enhancing user experience and meeting business objectives.

MOBILE APPLICATION

What we’ve done so far:

  • All user interface (UI) and functionalities are now refreshed 
  • There is a special layer added to parse network responses
  • We introduced advanced push notifications (which required creating a new software development kit (SDK) wrapper) 
  • We implemented mobile payment methods (Google & Apple Pay)

All in all, the mobile app was upgraded and refreshed, which directly translated into a better user experience, and consequently, higher user ratings. The score increased after the migration.

AutoZone app rating

WEB APPLICATION

Our intense work and sound plan resulted in remarkable performance and SEO improvements:

  • Enhanced app performance by over 200% and improved Core Web Vitals metrics
  • Achieved significantly faster loading times
  • Optimized app for enhanced user and developer experience
  • Reduced refresh time to ~2s with Fast Refresh, which a substantial improvement

You can learn more about our performance project in a dedicated case study on AutoZone’s app performance.

Your Success Story is Next
callstack illustration
CALLSTACK APPROACH

Leading-edge technologies

We offer the most advanced solutions within React.js and React Native. We operate in the React Universe, which means we make use of technologies based on React. It lets you add new functionalities to your app over time so you can always stay up to date, and further tailor the app to your needs.

Agile collaboration

From day one we work on the AutoZone apps from the inside, closely collaborating with the client’s teams. As the projects have expanded a lot, it’s been of utmost importance for us to work with alignment and transparency.

Why is this approach better than any other?

  • There’s no need to engage three separate teams (for Android, iOS, and web)
  • You can handle the performance and maintenance of a giant app. We know what to do to take care of huge applications in React and React Native.
  • Everything is done in one stack

Partnership

Our collaboration is always based on partnership and a very comprehensive approach: we get into the project, analyze what is there and what should be done, and plan our work accordingly. We are trusted experts and partners, not just developers who provide code. We operate from within to better meet the client’s needs. This model involves knowledge sharing - by joining an in-house team our developers become expert colleagues who can help.

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

AutoZone is the leading retailer and distributor of automotive replacement parts and accessories in the United States. The company operates more than 6,900 AutoZone stores in 50 states plus the District of Columbia, Puerto Rico, Mexico, and Brazil.

AutoZone is a large ecommerce organization with a complex application for mobile and web. There are quite a few developer teams dedicated to app development only, which means working on the app from the inside - sharing expertise and closely collaborating with the in-house teams.

Introduction

For nearly four years we’ve been working with the AutoZone teams on their AutoZone web and mobile applications. Initially, the primary purpose of our cooperation was to enhance the performance of the AutoZone web app on mobile devices and to migrate old native apps (Android and iOS) into a brand-new React Native app.

As the projects evolved, the scope of work naturally expanded as the client wanted us to take care of more features. That’s why, after reaching the most important milestones, together with the client's teams, we turned to address other needs. Now we are working on securing further improvement and, all in all, making every effort to keep up the metrics at the highest level.

React ecosystem diagram

Migrating from native to React Native

Beginning

AutoZone had two native mobile apps - one for Android and one for iOS. Both were rather dated at that time, filled with loads of legacy code that was hard to navigate and even harder to onboard new engineers. Migrating to React Native was a good opportunity to refresh the client’s mobile app, and it was in line with improving its overall design and functionality. 

Since there were several issues in communication between native and React Native elements, we had to prepare the app for integration with React Native.

Objectives

The declared aim was to get from native to React Native gradually so that the app could work well at all times, and the client could continue its maintenance and releases. Another objective was to create one design codebase for both platforms, Android and iOS, and refresh the app.

Work and technologies

First, we audited the architecture - we created a report with all areas of opportunities along with a proposal on how to handle them. We also checked the existing modules to determine which elements can be transformed into React Native to work better.

The app was divided into small modules (vehicle, store, profile, etc.); all the modules were prioritized from the smallest to the highest number of dependencies. We started the migration from the store tab since it was the simplest module.

Then we took care of screen transitions: we had to create a linking layer to send data between old and new screens (between native and React Native). Also, there was no wrapper or support in React Native, so we had to make a custom solution to adjust React Native to AutoZone’s needs.

gif showing screens in AutoZone mobile app

The entire migration process was gradual - we integrated React Native module by module. In line with that, we created a React Native brownfield library to optimize the migration workflow.

All in all, it was a brownfield project as we worked with the existing native elements throughout to build a cross-platform app with a shared codebase. We had to consistently ensure that the native and React Native components were in sync.

Results and what’s next

We gradually integrated React Native the brownfield way, which means the transition was smooth and controlled. At the same time, the application was up and running during the whole process to ensure business continuity.

It took a year and a half to fully migrate the app to React Native, and the project came to an end. However, the collaboration went very well on both ends, and we agreed to continue developing new features. 

Since we had domain knowledge about the AutoZone system, it was easier for us to understand the client’s business needs and convert them into new features. 

What we’ve done so far:

  • All user interface (UI) and functionalities are now refreshed 
  • There is a special layer added to parse network responses
  • We introduced advanced push notifications (which required creating a new software development kit (SDK) wrapper) 
  • We implemented mobile payment methods (Google & Apple pay)

All in all, the mobile app was upgraded and refreshed, which directly translated into a better user experience, and consequently, higher user ratings. The score increased after the migration.

AutoZone app rating

Web app development with Next.js

Beginning

At first, we were asked to help with AutoZone internal apps already written with React Native. For example, there was an app for drivers to help with deliveries and a B2B app designed for ordering auto parts and accessories by smaller businesses. Gaining more business context and proving our expertise in React and React Native, Callstack developers were asked to work on the AutoZone web app.

The app had already been developed for nearly two years by one of the in-house teams who adopted a mobile-first approach to the project. Consequently, the app’s performance on desktops and mobile devices was unsatisfactory at that time. Our role was then to support the client’s team efforts and accelerate the implementation of the web app in production.

Objectives

The client wanted better (faster) web performance, but the main goal was to improve SEO rankings in Google. In order to help with technical SEO, the AutoZone developers created their own custom server-side rendering (SSR). 

However, without any framework that could facilitate its use, the client’s SSR became problematic. Not only did it make the codebase more complex, but also slowed down the development iteration. On a typical machine back then a developer would need to wait for 5-11s for a full page reload as the hot module refresh failed to work in this setup.

Our objective at the time was to migrate the AutoZone custom solution to Next.js - a React framework for server-rendered web apps. It offers all the functionalities needed to support ecommerce sites.

Work and technologies

Full migration of AutoZone server-side rendering took several months, and we always worked alongside the client’s teams. We became part of the SEO team.

After the successful migration to Next.js, we could finally focus on improving the performance metrics that mattered to AutoZone most:

  • Time To Interactive (TTI), 
  • Largest Contentful Paint (LCP), 
  • First Contentful Paint (FCP), 
  • Cumulative Layout Shift (CLS) accompanied by the Time To First Byte (TTFB) from the server. 

All these metrics make up Core Web Vitals (CWV), and at the time Google made it clear that websites with low performance measured in CWV were going to drop in Google search results.

We set up Lighthouse to continuously check the metrics and worked towards an initial goal of raising the performance score on mobile and desktop. Thanks to Next.js reducing our hot reloading times twice and, later on, introducing Fast Refresh to further improve the results, we were able to iterate quickly. 

One of the biggest reasons for the low score was a large shared JS bundle weighing more than 500 kB. This was after migration to Next.js, which introduced the route based code-splitting. We used Bundle Analyzer and Source Map Explorer to identify the parts of the codebase that could be further lazily loaded and worked our way through it. 

Results and what’s next

Our intense work and a sound plan resulted in remarkable SEO improvement, so the client achieved their business goal.

We enhanced the app performance by at least 200% and improved renewed Core Web Vitals metrics to more satisfactory levels. We achieved much faster loading times. All in all, we optimized the app for quality and better user and developer experience.

Thanks to Hot Module Reloading that came with Next.js, later replaced by Fast Refresh, we could reduce the refresh time to ~2s. This was a massive improvement:

refresh time before and after

Currently, we are continuing to build on the foundation of Next.js. We want to make the most out of the framework by adding new functionalities or more advanced features to the app such as middleware, Incremental Static Regeneration, React Server Components, or SWC.

We are also working on a migration from Redux to React Query. Touching the Redux-driven business and network logic uncovered a whole new level of complexity for this project, most of which was really related to fetching data. Hence the decision to rewrite all the Redux network layers into a dedicated solution like React Query. 

We not only focused on performance but also code quality and DX improvement. To achieve this, we're using TypeScript, Eslint, TypeScript-Eslint, Jest + MSW, and PlayWright.

Being halfway through the effort already allowed us to untangle code, reduce dependencies between unrelated features, remove code, and also code splitting. What’s more, it will finally provide the website with the ability to cache pages on a CDN level.

We continue upskilling the AutoZone developers through knowledge-sharing sessions. To keep the desired results and suggest best practices when making changes, we do the necessary code review.

Our approach

Leading-edge technologies

We offer the most advanced solutions within React.js and React Native. And the technologies based on React let you add new functionalities to your app over time so you can always stay up to date, and further tailor the app to your needs.

Agile collaboration

From day one we work on the AutoZone apps from the inside, closely collaborating with the client’s teams. As the projects have expanded a lot, it’s been of utmost importance for us to work with alignment and transparency.

Why is this approach better than any other?

  • There’s no need to engage three separate teams (for Android, iOS, and web)
  • You can handle the performance and maintenance of a giant app. We know what to do to take care of huge applications in React and React Native.
  • Everything is done in one stack

Partnership

Our collaboration is always based on partnership and a very comprehensive approach: we dive into the project, analyze the situation and what should be done, and plan our work accordingly. We are trusted experts and partners, not just developers who provide code.

We operate from within to better meet the client’s needs. This model also involves knowledge sharing - by joining an in-house team our developers become expert colleagues who can help.

The challenges we’ve solved so far

Related services

Service

Product Development and Growth

Callstack illustration
Service

Product and Process Optimization

Callstack illustration

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.