In a nutshell, mobile DevOps best practises for React Native apps, from code to release.
This talk has been presented at React Day Berlin 2022, check out the latest edition of this React Conference.
In a nutshell, mobile DevOps best practises for React Native apps, from code to release.
This talk has been presented at React Day Berlin 2022, check out the latest edition of this React Conference.
React Native developers face challenges such as managing different requirements, processes, and workflows for iOS and Android platforms, including application signing, complex configurations, and ensuring proper testing protocols are followed.
Mobile app deployment is more complex because it requires additional steps such as signing the application with certificates, provisioning profiles, and managing secrets before releasing it to app stores, unlike web applications.
To stay competitive, it is recommended to adopt a two-week release cadence for mobile apps, as opposed to releasing every two months, which can be too slow given the fast-paced market environment.
The key components of a mobile CI/CD process include planning, CI/CD strategy, building, testing, beta releases, production releases, and monitoring the mobile apps post-release.
Automation in mobile development helps streamline deployment, releases, and code reviews, allowing developers to focus more on delivering features and less on repetitive tasks, ultimately speeding up the development process and reducing errors.
It is suggested to run unit and UI tests for every code commit to identify and fix issues early in the development process. This 'fail fast' approach helps in shifting testing left and catching bugs before they reach production.
Post-deployment monitoring is crucial for tracking app performance and stability, such as monitoring app crashes. This helps in quickly identifying and resolving issues that might affect user experience.
Cloud-based CI/CD for mobile applications offers benefits such as easy project setup, customizable workflows, seamless code signing, and a clean, tool-inclusive environment that can save time and reduce configuration issues.
Effective beta testing for mobile apps can be implemented using platforms like TestFlight for iOS and Firebase App Distribution for Android, allowing developers to distribute pre-release versions to beta testers and gather valuable feedback.
Today we are discussing the challenges faced by React native developers in mobile deployment. Signing the application, complex configuration, testing, slow releases, and inflexible CI are some of the issues. Automation is the key to spending less time on tasks and focusing on delivering features. Mobile DevOps or mobile CICD process can address these challenges.
Hi, everyone. Thanks for having me today. My name is Motez and I'm working as a developer advocate at Bit-Trice. So, mainly, every day I'm helping the mobile developers to trying to figure out what are the challenges that they are facing, especially with cross-platform apps or native apps.
So, today we are talking about the mobile deployment. So, as we know, if you are working with React native apps, you have at the end you have two native applications, iOS and Android. And, as we know, each application required like workflows or steps or configurations so on. So, mainly that React native developers are facing like different requirements and processes and workflows for iOS and Android. So, you need to figure out how you can automatically doing it because you need to sign the application before using it to the App Store. As we know, it's not like the web application. You need to sign your application or certificate or provision profile or like secrets and then to be able to release it to the App Store.
Complex configuration, as we mentioned, testing as well. So, shall we run the UI testing on every request or shall we leave it before release? How we can run it? Which framework we are using? Shall we run the unit and UI test and everything for every request? So, how we can deal with this process? And slow releases as well. So, maybe there's a company is releasing every two months, which is huge. So, because if you are like, you have a business and you have different competitors in the market, which is if you wanted to release a new feature, this is a huge or a longer process to release every two months. So, we need to try to eliminate the process for two weeks at least. Like, two weeks release cadence. And inflexible and fragile CI. So, don't waste your time for fixing the CI server's problems and how we can or every day we are dealing with the different problems with the CI.
So, here, Scott Hanselman from Microsoft, as a program manager, he said like the most powerful tool we have as a developer is automation. Automation is not like UI testing. It's automation for everything. So, it can automate deployment, releases, code review or anything as much as we can, we should automate the process. So, the target is we need to spend less time on task that's slowed down or the developer downs and focus more on delivering the features. Because as we know, the developer hours is the main focus or the most important things for the companies. So, because of this, I believe the process that will fix these issues or these challenges, it will be a mobile DevOps or a mobile CICD like process. So, we started with a CICD strategy and then from the measuring or like planning phase. And then we have the strategy for a CICD. And then we are building and testing or releasing and building our mobile apps. And then we are monitoring our mobile apps.
There is a stage for monitoring mobile apps after release. Six steps for mobile developer adoption: planning, CICD strategy, building, testing, beta releases, and production releases. Automating the process involves pushing code to a source code repository, triggering the CI server build, and going through the continuous integration process. This includes cloning the code repository, installing dependencies, running static code analysis, unit and integration tests, and checking for issues. An iOS builder is also part of the process.
It's not like we just release it to the App Store. No, there is another stage for monitoring mobile apps. Such for example, if you wanted to monitor the app crashes or the application performance monitoring in general. So, once you release your mobile apps, you have another tool or another process to start reviewing and monitoring the mobile app release.
So, here we have six steps for a mobile developer adoption. As we mentioned, planning, CICD strategy, building, testing, beta releases. This is especially for mobile. Because maybe for web we don't have... maybe sometimes we are speaking in a web deployment about canary deployment or like blue-green. But this is required for mobile apps, which is beta releases that you are releasing to your beta testers to check that everything works fine in your application. And this can be for test flights, for example, for iOS or for Firebase app distribution or for the App Store, for internal channel. And production releases. And then we have a monitoring.
So, here, let's assume this is like the full process. So, I'm trying here to figure out how we can automate this process. So, for example, you just, like, create a code or like push a code. And then to the GitHub or any source code you are using, the request is raised. Maybe you can you have the CI server. And the CI server build is triggered. And then you are going to the continuous integration process, which is you are cloning the code repository, SSH key for, like, accessing the code. And then it starts installing, as we know, React native apps required. So, like, if you are using your ER. Then you can start running the static code analysis. This will be like the first step. Then you can run a unit and integration test. And maybe you will have a coverage report. And then if everything is okay, it'll check bus. So, this is like the first stage. This is for the React native or maybe for the JavaScript or TypeScript application. Then you have an iOS builder.
We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career
Comments