DARO React Native SDK
DARO | The Most Powerful and Simplest Solution to End Your Ad Monetization Worries
DARO is an ad monetization platform. It supports iOS, Android, and React Native SDKs. It is "the most powerful and simplest ad monetization solution for app developers." If you're struggling with monetization, give it a try.
We recently launched our React Native SDK.
Introduction
Seven years ago, Airbnb announced sunsetting React Native. At the time, their announcement came as a huge shock and raised doubts about the future of React Native. Airbnb's decision—citing that it wasn't suitable for large-scale applications due to performance issues and technical constraints—reminded many engineers of React Native's limitations.
However, React Native survived and has continued to evolve. In particular, the recently introduced New Architecture brought in the JavaScript Interface (JSI) and drastically improved performance, opening up new possibilities for React Native. Despite various ups and downs, it has still survived.
They say the strong don't survive, but those who survive are strong. React Native has steadily adapted to the needs of engineers and technological changes, remaining a viable tool for cross-platform app development to this day.
In this post, I want to share my thoughts and experiences from developing the React Native SDK.
React Native
A cross-platform framework maintained by Facebook that allows you to develop native apps using JavaScript and React.
Why We Developed the React Native SDK
About 40% of DARO's clients were apps developed with React Native. With the number of clients using React Native expected to keep growing, it simply became an essential platform for us. Since we didn't have any React or React Native engineers on the team, I, an iOS engineer, took charge of the development. I just figured the structure of the SDK would feel like building an interface in React Native for the existing iOS or Android SDKs.
A few days after I started developing, version 0.76 was released. React Native changed so that the New Architecture became the default. At first glance, the New Architecture made developing an SDK feel much more difficult. Specifically, apps built with the New Architecture could use SDKs built with either the Old Architecture or the New Architecture. However, apps built with the Old Architecture could only use SDKs built with the Old Architecture. The most ideal approach would have been to build an SDK that supported both the Old and New Architectures, but since I lacked both time and experience, I decided to focus on building for the Old Architecture first and supporting the New Architecture once things stabilized.
I went through a lot of trial and error when creating the initial structure. I tried referring to the expo native module architecture, but the abstraction was too deep and it inevitably created a dependency on Expo. Fortunately, React Native has a very active community, and there were already tools available to easily create native modules. I was able to quickly test things out in a Swift & Kotlin environment using https://callstack.github.io/react-native-builder-bob/create.
Development Experience
As an iOS engineer, I experienced quite a few shocks while writing React code. First of all, React Native's Hot Reloading is still way better than SwiftUI's Preview. While SwiftUI's Preview only works for a single screen, React Native applies Hot Reloading to the entire app, making the cycle of writing code and seeing the results significantly shorter.
Of course, while developing the SDK, I didn't get to feel the benefits of Hot Reloading as much because I spent more time writing native iOS and Android (handled by an Android engineer) code for the interface. But I definitely felt it a lot more when building an app using Expo.
Cursor is the Best Development Tool
If it weren't for Cursor, development would have taken several times longer. Using Cursor's Chat and Compose, I was able to learn and code at the same time. Since it can even parse web content and process images, it's truly an all-around powerhouse tool. As long as I understood the basic concepts, I could easily write not just TypeScript, but Objective-C, Swift, and Kotlin as well.
Wrapping Up
Developing the React Native SDK allowed me to experience the pros and cons of cross-platform development firsthand. From the perspective of an iOS engineer, the convenience of Hot Reloading was a clear advantage. With the help of AI tools like Cursor, I was able to quickly adapt to a new environment and get things built.
Naturally, there were various challenges along the way, such as compatibility issues between the Old Architecture and New Architecture, as well as integrating with native code. Still, I now feel that React Native has firmly established itself as a stable cross-platform development tool.
In the next post, I'll share my experience of using Expo to develop and deploy a weather app for testing the DARO SDK in just 8 hours.