

Updated: November 1, 2026
In short: React Cordova means building your app as a regular React web application and packaging it with Apache Cordova into native iOS and Android apps that run inside a WebView, with device features (camera, GPS, push notifications) available through plugins. Getting a project running takes 6 steps, and the same React codebase serves web, iOS and Android. It is a strong fit for business apps, portals and internal tools; for games, real-time chat or heavy animation, React Native is the better choice.
React Cordova refers to the combination of React — Facebook's popular UI library — with Apache Cordova, the open-source mobile framework that wraps web applications inside a native container. Together, they allow developers to build a single web application using React and ship it as a native iOS and Android app, with full access to device hardware through Cordova plugins.
This hybrid approach has been a core tool in cross-platform mobile development for years. If your team already knows React, adding Cordova is a natural extension to reach mobile users without rebuilding your product in Swift or Kotlin.
Apache Cordova works by embedding a WebView — essentially a browser window — inside a native iOS or Android shell. Your React application runs inside this WebView, just as it would in a desktop browser. Cordova's JavaScript bridge then provides access to native device APIs: camera, GPS, push notifications, file system, Bluetooth, and more.
The workflow looks like this:
cordova plugin add) to access native APIs through a JavaScript interface.Here's a step-by-step approach to getting a React Cordova project running:
You'll need Node.js installed, then run:
npm install -g cordovacordova create my-app com.example.myapp MyApp
cd my-app
cordova platform add ios androidInside the Cordova project, initialize a React application. You can use Create React App, Vite, or a custom webpack setup. The key requirement is that the build output must target a relative path, not an absolute one — otherwise Cordova's WebView won't load the assets.
In your package.json (for Create React App), set:
"homepage": "."Or in your Vite config:
base: './'Cordova expects its assets in the www/ folder. Configure your React build output to write to www/ instead of the default build/ or dist/ directory. Update your build script in package.json:
"build": "react-scripts build && cp -r build/* www/"Plugins provide the bridge to native APIs. For example:
cordova plugin add cordova-plugin-camera
cordova plugin add cordova-plugin-geolocation
cordova plugin add cordova-plugin-pushAccess them in your React code via the global cordova.plugins or navigator objects, after the deviceready event fires.
Cordova fires a deviceready event when the native environment is ready. You must wait for this before using any Cordova plugins:
import { useEffect } from 'react';
function App() {
useEffect(() => {
document.addEventListener('deviceready', () => {
// safe to use cordova plugins here
console.log('Cordova is ready');
}, false);
}, []);
return <YourApp />;
}As a React Cordova app grows - several screens sharing user data, offline queues, plugin events arriving from the native side - passing state through props becomes hard to follow. Redux keeps all application state in one store and changes it only through dispatched actions handled by reducers, so every change is predictable and easy to trace. It is the same approach we use for complex custom and SaaS applications on the web, and it carries over unchanged into a Cordova build.
A minimal example: create a store from your reducers, subscribe to changes, and dispatch actions:
import { createStore } from 'redux';
import todoApp from './reducers';
import { addTodo, toggleTodo } from './actions';
const store = createStore(todoApp);
store.subscribe(() => console.log(store.getState()));
store.dispatch(addTodo('Sync orders when back online'));
store.dispatch(toggleTodo(0));In new projects, Redux Toolkit's configureStore and createSlice are the recommended way to write the same logic with less boilerplate. Two Cordova-specific tips:
pause, resume and online/offline after deviceready, and turn them into actions so the UI reacts in one place.This is the most common question teams face when choosing a cross-platform approach. Here's an honest comparison:
For many B2B and enterprise use cases — employee tools, client portals, CRM mobile extensions, field service apps — React Cordova delivers excellent results at lower complexity and cost. For a wider comparison that includes fully native and Flutter, see our mobile app development guide, and for a framework-level take on hybrid apps, JOPS hybrid mobile apps.
The most common criticism of Cordova is performance. Here's how to mitigate it:
config.xml, set HardwareAccelerated preference to trueReact Cordova is a solid choice for these app categories:
At UIDB, we've built production mobile apps with React Cordova for enterprise clients who needed a fast path from existing web products to iOS and Android. The key is matching the technology to the product requirements — not chasing the newest framework.
deviceready: Always gate native API calls behind this event or your app will crash silentlyYes — for the right use cases. React Cordova has a mature ecosystem, a large plugin library, and a stable community. Ionic Framework, one of the most popular Cordova-based frameworks, continues active development and supports React. For teams that have existing React web apps and need mobile reach without a full React Native rewrite, React Cordova remains a pragmatic, cost-effective choice.
The decision comes down to your app's performance requirements and your team's existing skills. A customer portal, internal tool, or B2B dashboard doesn't need the rendering performance of a native social media app — and React Cordova can deliver a polished, functional experience at a fraction of the development cost.
For apps that are mostly forms, lists, dashboards and content - employee tools, customer portals, SaaS companion apps - yes. Cordova lets a React web team ship to iOS and Android from one codebase at lower cost. For apps where rendering performance is the product, choose React Native or native development.
Cordova runs your web app inside a WebView and reaches native APIs through plugins; React Native renders real native UI components from JavaScript. Cordova maximizes code sharing with the web, React Native gives near-native performance. Our React Native development services guide explains when that extra performance is worth it.
Yes. Cordova generates an Xcode project for iOS, and Xcode runs only on macOS - the same constraint that applies to Flutter and React Native, as explained in can Android Studio make iOS apps. A cloud macOS build service is an alternative to owning a Mac.
Cordova loads the app from a file:// URL, where browser history routing does not work. Use HashRouter in Cordova builds and set the build to use relative asset paths.
If the app has several screens sharing data, offline behavior or native events that affect the UI, yes - a single store with explicit actions keeps the state predictable. For a small app with a few screens, React's built-in state and context are usually enough.
UIDB is a boutique R&D software company specializing in cross-platform mobile app development, React applications, and enterprise mobile solutions. We help SaaS companies and organizations build and maintain mobile products that scale.
Explore our development services or contact us for a free consultation — whether you're choosing between Cordova and React Native, starting a new mobile project, or maintaining an existing hybrid app.
We'd love to hear about your challenge and propose a tailored solution.
Let's Talk
Leave a comment