React Native em 2025

What’s new, what’s changing and what’s next in hybrid development

Walter Gandarella • April 18, 2025

Sometimes we fall in love with a programming language, but it's inevitable that they change over time, gaining more features and occasionally becoming more complex. React Native is no exception. Since its launch by Meta (then Facebook), the framework has undergone several transformations that have shaped the current landscape of hybrid mobile development.

The Current Landscape of Hybrid Development

When we talk about hybrid development, we need to understand that there are essentially two major approaches:

1. WebView-Based Development

The first approach uses technologies like Cordova, Capacitor, and the descendants of the good old PhoneGap (which, believe it or not, some still bet on its comeback). This method relies on HTML, CSS, and JavaScript, and what the framework does is load a WebView, which acts as a "browser" inside the app.

The advantage? You program exactly like on the web. The downside? All communication with native resources (camera, GPS, sensors) becomes more complex than in other alternatives. It's like trying to make a duck swim on dry land—it works, but it's not its natural environment.

2. Compilation to Native Code

On the other hand, we have frameworks like React Native and Flutter, which compile our code into something the operating system understands directly.

React Native uses specific components that are compiled into equivalent native components. For example, a <View> in React Native becomes a UIView on iOS and a ViewGroup on Android.

Flutter takes a different approach. While we code visually with widgets, Flutter doesn't compile to native components—it works as if the app were a blank canvas, drawing components pixel by pixel. It's like, instead of borrowing furniture for the house, you bring your own and place it there.

This has interesting implications. For instance, when a new iOS version introduces changes to native visual components, a React Native app automatically adopts these changes because it uses native components. With Flutter, you must wait for the new version of the Cupertino package (which mimics the iOS interface), update your code, and republish.

React Native vs Flutter: The Eternal Battle

Let's be honest: this debate about which is better has spawned more threads on X than family group political discussions on WhatsApp. And just like family discussions, it often comes down to preference and context.

Flutter was born from a game engine (Skia, later Impeller), so it has a different approach. While React Native requests components from the operating system (like buttons, text fields, and calendars), Flutter draws pixel by pixel on the screen.

This gives Flutter greater control over the visual output. It doesn't need to request components from the OS—it just draws what it needs. However, this comes with challenges, such as responsiveness issues. If you design an app for a phone and then stretch it for a tablet or foldable device, you might run into problems if not planned well.

The choice between React Native and Flutter often boils down to:

  • What is your end goal?
  • What is your initial expertise?

If you aim for more elaborate visual experiences, with refined control over animations and effects like parallax, Flutter might be easier. On the other hand, if you already work with React on the web, transitioning to React Native will feel more natural.

It's also worth mentioning KMP (Kotlin Multiplatform), which is coming "like in that Monty Python meme of the running man who will someday arrive." It's been around for a while, but it's a promising alternative that combines Kotlin's power with cross-platform development.

React Native's New Architecture

One of the major recent evolutions in React Native is the so-called "New Architecture." This change addressed one of the biggest pain points in React Native.

How It Worked Before

When we write code in React Native, we use JSX (or, as some joke, "socially acceptable PHP"). The visual and component part is compiled into native code, but the business logic runs in a JavaScript VM inside the app.

For communication between JavaScript and native code, there was (and partly still is) a piece called the Bridge. It was through this that JavaScript code requested resources from the OS.

The problem? This bridge was:

  1. Unidirectional—JavaScript sent requests and received responses via callbacks.
  2. Asynchronous—which created complexities and potential performance issues.

What Changed with the New Architecture

In React Native's New Architecture, this bridge is gone! Now, JavaScript can communicate synchronously with native code, without complex callbacks, and the communication is bidirectional.

The implementation was well thought out. Instead of making a breaking change, Meta introduced the new architecture as optional, disabled by default. Now it's enabled by default, but you can disable it if your app relies on plugins that haven't been adapted yet.

Speaking of plugins, many have already been adapted for the new architecture, but some developers of more complex plugins have declared they won't migrate. So, for now, we live in a hybrid world where you can choose whether to enable "Bridge mode" for different parts of the app.

The Expo Universe: A Turning Point

When talking about React Native, it's impossible not to mention Expo. For many developers, Expo is the gateway to the React Native world, and for good reason.

Expo acts as a superset of tools that greatly simplifies development. It provides easy access to resources like the camera, Bluetooth, maps, and much more. Over time, Expo has added more and more features by default.

In 2019, if you wanted to access native code, you had to "eject" your Expo project, which meant losing some of the convenience Expo offered. Today, this process has evolved, and it's rarely necessary to leave the Expo ecosystem.

One of Expo's biggest strengths is its active community. If you encounter a bug (which happens with any technology), the Expo team is often extremely responsive. It's not uncommon to report a detailed issue and receive a patch within hours or days.

Over time, some libraries have been deprecated or incorporated into Expo. For example, the QR code reading feature previously provided by Expo Barcode Scanner is now integrated into Expo Camera. The same happened with Firebase—it used to require installation via React Native Firebase, but now there's Expo Firebase (though with limited support for some features).

The Challenges of Updates

A recurring theme in mobile development is the challenge of updates. Although Expo, for example, officially supports only the last three versions, it's not uncommon to find projects running much older ones.

Updating a React Native project can be a laborious process, especially if you're several versions behind. It's like building a house—unexpected problems always arise. The ground might be uneven, or you might discover you need to redo part of the foundation.

When updating:

  • Some libraries might stop working.
  • Others might have been deprecated.
  • Some features might have been merged into other libraries.
  • Cyclic dependencies might appear, where one library depends on a newer version that another doesn't support.

The process is rarely linear. What seems like a one-week update can easily stretch into a month, especially for larger projects.

And let's not forget that React Native depends on the native Android and iOS SDKs, which are also constantly evolving. When Android Studio updates and changes the required Java version, or when Apple migrates from CocoaPods to Swift Package Manager, these changes also affect React Native development.

Why Companies Choose React Native

The decision to use React Native (or any hybrid framework) often stems from considerations beyond purely technical ones.

Code Reusability

The promise of hybrid development is "write once, run anywhere"—you develop the code once, press a button, and voilà! Your app works on both iOS and Android.

In practice, it's not that simple. You still have to deal with each platform's quirks, especially when interacting with native APIs. But even so, code reusability is significantly higher than developing separate native apps.

Leveraging Existing Skills

If your company already has React developers working on web frontend, the learning curve for React Native is much smaller than learning Swift/Objective-C or Kotlin/Java from scratch.

React Native was specifically designed to make life easier for those coming from the web. Even the styling system is inspired by CSS (though it uses Yoga under the hood), with similar properties. If you know React for the web, much of your knowledge is transferable.

Ecosystem and Community

The React ecosystem is already massive, and React Native benefits from it. As the Stack Overflow Developer Survey consistently shows, JavaScript and React are among the most popular technologies, meaning a large base of developers and resources is available.

Big companies like Tesla, Shopify, and several in the crypto space use React Native in production, some even with open-source repositories that serve as learning resources.

The Job Market for React Native Developers

The market for React Native developers is booming, especially for experienced professionals. In Europe, for example, there are many opportunities, though most seek senior developers with at least 3-4 years of specific React Native experience.

For those just starting, the entry point is often through React for the web. Since there are proportionally more web applications than mobile ones (not every website needs an app), there are more initial opportunities in web development.

A common strategy is:

  1. Learn HTML, CSS, and JavaScript (the foundation of everything).
  2. Learn React for the web.
  3. Land a job as a React developer.
  4. Transition to React Native when the opportunity arises.

TypeScript, though optional, is increasingly used in both React and React Native, and at some point in your career, you'll likely need to learn it, whether you want to or not.

Tips for Getting Started with React Native

If you're taking your first steps with React Native, here are some valuable tips:

1. Understand the Basics First

Before diving into React Native, make sure you understand:

  • HTML, CSS, and JavaScript.
  • How React works for the web.

This will help you distinguish what's part of React "core" and what's specific to React Native, making problem-solving much easier.

2. Build Projects for Your Portfolio

Creating projects is the best way to learn and showcase your skills. Some useful resources:

  • Sites like Dribbble, which provide designs you can implement.
  • Try different technologies in each project (Firebase in one, Supabase in another, etc.).
  • Document your projects well on GitHub with detailed READMEs.

3. Stay Updated with the Mobile Ecosystem

Keep up with what's happening in the mobile world:

  • What Apple is doing with iOS (annual releases in September).
  • Google's news for Android (events like Google I/O).
  • Explore popular libraries in the ecosystem (Firebase, Expo, etc.).

4. Be Flexible with Initial Opportunities

If you're just starting, don't turn down opportunities just because they're not exactly what you want:

  • A web developer role can be an excellent entry point.
  • Smaller companies often prefer hybrid solutions for cost reasons.
  • Internships can be a great way in with a lower barrier.

5. Invest in Professional Social Networks

  • Keep your GitHub active with regular commits.
  • Share your projects and learnings on LinkedIn.
  • Post challenges you've completed or problems you've solved.

So, Excited About React Native?

React Native continues to evolve and remains one of the top choices for hybrid mobile development in 2025. The New Architecture solved fundamental issues, the Expo ecosystem made development more accessible, and compatibility with React for web knowledge eases the entry for new developers.

As with any technology, there are challenges, especially around updates and third-party library compatibility. But the active community and corporate backing from Meta ensure React Native will remain relevant for a long time.

If you're considering entering this world, remember that the most common path is through React for the web, but with dedication and a strong portfolio, you can find opportunities directly in mobile development.

At the end of the day, as we say in tech, it depends! The choice between React Native, Flutter, or native development will always come down to your context, goals, and the skills you already have or are willing to develop.

And remember: no matter which language you choose, the bills will keep coming. So pick something you enjoy and that's in demand in the market!


Latest related articles