Setting Up a CI/CD Pipeline with Docker and Kubernetes
A well-designed CI/CD pipeline turns deployment into a routine, stress-free operation. Here is how we build one with Docker and Kubernetes, step by step.
· 4 min read
Choosing between React Native and native development affects your budget, your timeline and the long-term maintainability of the app. Here is a decision grid based on technical and economic criteria.
by Agencei · Published on · Updated on · 5 min read
Native development means writing a separate application for each platform with the tools provided by Apple and Google: Swift and SwiftUI on iOS, Kotlin and Jetpack Compose on Android. You end up with two codebases, two distinct skill sets, and immediate access to every new operating system feature as soon as it ships.
React Native, maintained by Meta and a large community, lets you write a single codebase in JavaScript or TypeScript that drives real native components. Since the "New Architecture" (JSI, Fabric, TurboModules), enabled by default in recent versions, communication between JavaScript and native code no longer goes through an asynchronous bridge, which noticeably improves responsiveness.
So this is not a contest between a "real" app and a web page in disguise. In both cases the interface is made of native views. The difference lies in the language, the tooling, the share of code you can reuse, and how you access platform-specific features.
The first criterion is the nature of the app. A business, e-commerce, booking or content application relies mostly on screens, forms, lists and API calls. That scope is fully covered by React Native, with rendering and smoothness that users cannot tell apart from a native app.
The second criterion is how much you depend on advanced hardware or system capabilities: real-time video processing, augmented reality, low-level Bluetooth, widgets, system extensions, 3D games. These cases require native code. They remain possible with React Native through native modules, but the share of shared code shrinks, and so does the benefit of the approach.
The third criterion is human. If your team already masters React and TypeScript, React Native naturally extends those skills and lets you share logic with the web. If you have experienced iOS and Android developers, native remains the most direct and predictable path.
The table below summarises the most structural differences. It does not crown a winner: each row weighs differently depending on your context, your budget and the expected lifespan of the app. Use it as a reading grid, not as a verdict.
Keep in mind that these differences evolve. React Native improves with every release, especially on performance and access to system APIs, while Apple and Google keep advancing their own declarative frameworks, SwiftUI and Jetpack Compose, which narrow the productivity gap on the native side.
| Criterion | React Native | Native iOS and Android |
|---|---|---|
| Codebases | One, in JavaScript or TypeScript | Two, in Swift and Kotlin |
| Logic shared with the web | High if the website is built with React | Low, except through Kotlin Multiplatform |
| Access to system APIs | Through native modules or community libraries | Immediate and complete |
| UI performance | Very good for the majority of apps | Optimal, especially for graphics-heavy work |
| Team profile | React and TypeScript developers | Specialised iOS and Android developers |
| Maintenance cost | One codebase to evolve, dependencies to track | Two codebases, but stable and well-documented tooling |
React Native wins when you need to ship on iOS and Android with a small team and a controlled budget. A single codebase means a single roadmap, a single functional test campaign and fixes deployed simultaneously on both platforms, which greatly simplifies the life of the product.
It is also relevant if you already have a React web application. Data models, validation, API calls and part of the business logic can be shared, which reduces divergence between your channels and the cost of every functional change.
Finally, the Expo ecosystem greatly simplifies configuration, updates distributed without going through the app stores, and cloud builds. For a product that needs to iterate fast and fix issues quickly, that is a concrete, everyday advantage.
The first mistake is choosing a technology for its popularity rather than for the project. A sound decision rests on the feature list, the planned integrations and the available skills, not on current trends or the last article you read.
The second is underestimating maintenance. A mobile app lives for several years: operating system updates, dependency updates, app store policy changes. With React Native you must follow the framework and library releases; with native you must maintain two projects and two build chains.
The third is trying to "do both". Embedding React Native screens in an existing native app is possible and sometimes useful for a gradual migration, but it must be a deliberate strategy with a clear architecture, not a default compromise.
We start with a scoping workshop: features, integrations, security constraints, target users, and the team that will take over the project. We identify the points that require native code and estimate their weight in the overall project, because that weight is what decides.
We then recommend the approach that minimises long-term risk, not just the initial cost. In most business projects that leads to React Native; for apps with a strong hardware or graphics component it leads to native. In both cases the decision is documented and justified.
We analyse your requirements and recommend the most suitable approach, with a realistic estimate of timeline and maintenance.
A well-designed CI/CD pipeline turns deployment into a routine, stress-free operation. Here is how we build one with Docker and Kubernetes, step by step.
· 4 min read
PostgreSQL and MongoDB are two excellent databases built on different principles. The right choice depends on your data model, your consistency guarantees and your team.
· 4 min read
A 500 error says only one thing: the server failed. Finding out why takes a method, not luck. Here is the one we apply, whatever the technology.
· 5 min read
iOS and Android apps from a single codebase with React Native and Expo.
See this serviceNative or React Native apps for iOS and Android, from scoping to app store publication.
See this serviceHigh-performance web interfaces with React and Next.js, design systems and takeover of existing projects.
See this serviceProgressive modernization of ageing applications, with no business interruption or data loss.
See this serviceDescribe your need in a few lines: we come back to you with a first analysis and the next steps.