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.
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.
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
As a start-up with an often volatile cash-flow, Callstack provided a level of understanding that other organizations may not have done, allowing us to reduce developers when necessary and accommodating a few of our tighter moments. I would have no hesitation in recommending Callstack to others, to provide a flexible solution to an existing workforce or on a longer-term basis as part of a remote team.
Ben Caulfield
-
CEO & Co-founder @ Eedi
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.
In brief
Eedi is a free homework and teaching platform for primary and secondary schools in the UK, targeting teachers, students and their parents. It helps teachers plan their lessons, yearly schedule, and manage their classes, while for students and parents it provides rich insights about pupils progress and upcoming tasks.
A free homework and teaching platform for primary and secondary schools in the UK
Challenge
Finally, the app had plenty of perceptible, interactive components. One good example of it, could be teachers Scheme of Work planner, where one could view and interact with schedule for the whole year, dragging and dropping subjects wherever needed, expand and shrinking them, changing content of each, and all this wrapped within eye pleasing design and seamless animations.
Another thing to consider, was creation of consistent styles. Eedi is visually a very rich and engaging app, and all styles had to be consistent both in core web application, other marketing pages, and yet again, we had to consider mobile application coming in the near future. Solution to keep it consistent was really necessary.
Building an app from scratch, we had to think about future of the whole platform as well. While there was an existing endpoint, we had to figure out how to scale it properly, and prepare to handle requests of different data from different installments. We also had to think about upcoming mobile application, and best fitting solution for it as well.
Going custom with everything
As mentioned before, we had an existing backend service ready, but we had to consider the new requirements that were presented - a lot of new custom endpoints with custom logic, managing state of requests and responses, offline mode capabilities, and much more.
One solution, would be to add those endpoints to the old API, and prepare it for upcoming challenges, another one - built one from scratch, bearing in mind all the requirements.
Besides dealing with the API design we also had to figure out the best way to unify components and their styles throughout all the projects. The best solution that came to our minds, was creating separate GitHub repository with shared components, and then importing those whenever necessary. Creating somewhat a library with all of the building blocks that combined together would bring a beautiful visual experience for the users.
As for the UX part we had two choices - either use one of the existing solutions or to come up with our own custom one. We decided to approach each interactive component separately and create bespoke one wherever the existing solutions couldn’t help to solve the problems we were facing.
GraphQL service as a middleware
The best fitting solution for our backend issues was to use GraphQL service as a middleware between our app and an existing API. GraphQL schema is very easy to scale, it minimizes outcoming network traffic, prevents over- or under-fetching of data, and finally caches fetched resources for future which prevents duplication of request and enables offline mode usage of application. Disadvantage of such solution was the fact, that we had to create this service from scratch, and provide additional resources for this purpose.
To unify the designs we worked very closely with the design team and after many iterations we created a bespoke Design Language System - separate npm package that could be imported from every project from Eedi organisation and used independently by anyone.We have created our DLS with `styled-components`, we have also used React Storybook - development environment for UI components. It not only allowed us to browse a component library, view the different states of each component, and interactively develop and test them, but also helped the designers while working on the new features.The great thing about the DLS was that once the changes were made in the library, they were also automatically updated across all of the applications that were using it.
To create the timeline together with a calendar for teachers we chose to create our custom drag and drop library, a few reasons why we must’ve done it:
lack of support by the existing libraries for the custom features needed,
need for the application to work cross-browser.
Besides for the teacher to be able to drag and drop their topics whenever necessary in the Scheme of Work browser, the user also had to be able to change their length, add holiday units or custom content for each one as required. All the business logic that was responsible for managing order of topic units was backed by unit tests, also, all custom sub-components was tested with snapshots to ensure highest quality of our implementation.
Scalable, clutter-free education platform
Using GraphQL empowered our development process, enabling faster way of requiring custom data. It also reduced amount of performed network requests and decluttered our code.
On the visual part, the DLS improved and speeded up process of creating new views as all the building blocks for those were built beforehand.
The calendar view became approachable and simplified the way teachers could manage their yearly schedule. Creating and editing Scheme of Work is now a pleasant experience where teachers can experiment with different combinations of classes and topic units.