Need advice about which tool to choose?Ask the StackShare community!

Apache Cordova

705
892
+ 1
218
React Native

33.2K
28.7K
+ 1
1.1K
Add tool

Apache Cordova vs React Native: What are the differences?

Introduction

Apache Cordova and React Native are both popular frameworks used for developing mobile applications. While they serve a similar purpose, there are key differences between the two technologies. In this article, we will examine the main differences between Apache Cordova and React Native.

1. Architecture:

Apache Cordova is based on a hybrid app development approach, where apps are built using web technologies (HTML, CSS, and JavaScript). The app is essentially a web page running in a web view container. On the other hand, React Native uses a native app development approach, where the user interface is built using native components specific to the target platform (iOS or Android). This allows React Native apps to have better performance and access to more native features compared to Apache Cordova.

2. Performance:

As mentioned earlier, React Native apps have better performance compared to Apache Cordova. This is because React Native uses native components, which are optimized for the target platform, whereas Apache Cordova relies on web view containers, which can be slower and less responsive. React Native apps also have smoother animations and faster loading times, giving them a more native-like feel.

3. UI Components:

Both Apache Cordova and React Native provide a wide range of UI components and libraries to build the app's user interface. However, React Native has a more extensive library of pre-built components that are specifically designed for mobile app development. These components closely resemble native UI elements, making it easier to create visually appealing and intuitive interfaces.

4. Development Speed:

React Native offers a faster development speed compared to Apache Cordova. This is because React Native allows developers to use a single codebase to build apps for both iOS and Android, reducing the need for separate development and testing efforts. On the other hand, Apache Cordova requires separate development and testing for each platform, which can slow down the development process.

5. Access to Native Features:

One significant difference between Apache Cordova and React Native is the level of access to native features. While Apache Cordova provides plugins to access device features and APIs, React Native offers a higher level of access to native features. React Native apps can directly interact with native modules, allowing developers to leverage the full capabilities of the platform's APIs and functionalities.

6. Maintenance and Upgrades:

In terms of maintenance and upgrades, Apache Cordova can be easier to maintain compared to React Native. Apache Cordova apps rely on web technologies, which are well-established and widely supported. This makes it easier to find resources and updates to keep the app up-to-date. React Native, on the other hand, is a newer framework and may require more frequent updates to stay compatible with the evolving platform technologies.

In summary, Apache Cordova is based on a hybrid app development approach, while React Native uses a native app development approach. React Native offers better performance, smoother UI components, faster development speed, higher access to native features, while Apache Cordova is easier to maintain and update.

Advice on Apache Cordova and React Native
Needs advice
on
FlutterFlutterNext.jsNext.js
and
React NativeReact Native

I'm planning a social media mobile app. I would like to prototype using a cross-platform native solution, leaving room for a future web client. In mobile dev, I'm most experienced with Flutter but I use Next.js for web projects. Since I'm not a designer, I think material 3 would be a fair design system and it's integrated into Flutter. React Native does not have material 3 yet but it would allow an easier web implementation (I have found flutter web to be too slow)

What do you suggest?

See more
Replies (2)
Recommends
on
FlutterFlutter

I think this is a good choice, so many design elements are considered for you such that even if you're not a great designer, as long as you're focused on layout and functionality it's relatively trival to go in later and apply themes and custom widgets. I'm using flutter for the same reasons as you it sounds like and for what it's worth people have been extremely pleased with the tools I've built for them even though I didn't really consider design. Knowing I don't have to worry about making things pretty for them to be attractive to end users is a huge boon for me and I hope it can be for you as well.

RE Flutter Web, I'm sure it will improve with time, I've only ever really seen it slow when it's first starting up. but once the app is "loaded" into the web server so to speak, it's generally been pretty performant assuming I'm doing things like caching appropriately.

See more
Mostafa Zaki
Front-End Engineer at Epam · | 4 upvotes · 7.5K views
Recommends
on
FlutterFlutter

I got a task at my previous company to compare between Flutter and RN and Xamarin. And Flutter was the better choice among the others, that was before version 3, and now after version 3 it becomes better, so I would recommend Flutter for you.

See more

Hello,

We're just brainstorming for the moment and we have a few questions.

We have an idea for an app that we want to develop, here are the prerequisites:

1) cross-platform (iOS, Android, and website);

2) as easy to maintain as possible / well documented / widely used;

3) Visual Studio Code and Copilot compatible;

4) Text to speech;

5) Speech recognition;

6) Running in background (screen off with TTS and speech recognition);

7) could be using TypeScript;

8) Monetized through ad and in-App payment for premium version;

9) Display on lock screen (Android only I guess)

So what would you recommend?

I've been trying to review the options available, and I've considered:

  • NativeScript

  • React Native

  • Flutter

  • Any other?

Thanks in advance for your help, and I'm open to any comments.

See more
Replies (2)
Gabriel Alao
Lead Developer at The Web Gurus LLC · | 2 upvotes · 12.3K views
Recommends

Use Flutter and Firebase as a backend service, Firebase also helps to speed up the development and rollout of the app. The cloud-hosted NoSQL database provides a real-time database that helps you store and synchronize data between the clients. This indeed makes it easier for you to access the data using any of the devices.

See more
Recommends
at

Hi there, for cross-platform functionality in terms of 3D assets if any, echo3D can help you with that. It's 3D asset management on the cloud so you can write your references to the objects and update them in the echo3D web browser. echo3D is not yet on this platform but it will be soon!

See more

I would like to evaluate a good option to migrate an existing WordPress portal, where the customer can continue to access the news and also have a private area where they can receive personalised information and can demand or interact with the company and also have mobile support on both iOS and Android.

Currently the whole back system is in SAP and my main doubts are;

  • Best solution for the web portal that can generate content and can render well in the mobile solution.
  • Best option for the mobile implementation of the same portal and its private area ( React Native?)
See more
Replies (2)
Recommends

I think that React Native or Vue Native is the best choice for modern cross-platform mobile applications. And both of these frameworks have a large community. Apache Cordova was the pioneer in this way. We used it in projects in 2014. Ionic is also an old tool and in 2014 it was based at Apache Cordova. I don't think that it has so a big community like React Native or Vue Native.

For a web system, React or Vue is a good and modern choice too.

See more
Brad Jones
CTO/founder at Meet Kinksters · | 2 upvotes · 15.9K views
Recommends

No shade on the hard work of/on Ionic and Cordova over the years, but they are not the future and you will be going down a dead-end for maintainability going forward. React Native is an excellent bridge for any pre-existing JavaScript/TypeScript skills you might already have from web development.

Flutter is worth considering as a close second but I would recommend RN for the above reasons. Also consider using Expo to ease your build process.

See more
Bhupendra Madhu
Web Developer at Ecombooks · | 8 upvotes · 524.4K views
Needs advice
on
FlutterFlutterReact NativeReact Native
and
XamarinXamarin

I want to learn cross-platform application frameworks like React Native, Flutter, Xamarin, or Ionic, and I'm a web developer. I can learn other programming languages as well. But I'm confused about what to learn, which framework is best, and which framework will last long as the application grows further into complexity.

See more
Replies (3)
Myo Win
CTO at Myanmar Web Designer (MWD) Co., Ltd. · | 5 upvotes · 37.2K views
Recommends

Flutter is the best one. If you are a new comer in mobile app development, choose Flutter.

But if you have strong experience in JavaScript and you have a lot of JS websites that you want to develop into mobile apps, choose React Native.

Ionic also has its strong points such as a lot of prebuilt components for different platforms and minimal dev environment requirement (you only need a browser).

See more
Recommends

React Native has a very rich ecosystem and if you're already a web developer, the skills that you already possess will transfer over very well. React is the second most popular web framework according to Stack Overlow's 2022 Developer Survey. No one framework is the 'best' as they all serve different purposes and have different use cases. If you're looking to pick up something popular, I would recommend React Native.

See more
Kubilay Cagri Yildirim
Senior System Architect at Profelis Bilisim ve Danismanlik · | 1 upvotes · 4.8K views
Recommends

The easiest and fastest for you right now is React Native. I dont know about the Xamarin but I dont like microsoft.

See more
Needs advice
on
FlutterFlutter
and
React NativeReact Native
in

Hi, I'm considering building a social marketplace app on android, ios and web, Flutter seems to be a good UI framework for cross-platform apps, it's safe type, hot reload, and native compiling on native machine code (thanks to Dart). My question is, for an MVP product is it a good choice? if yes, will it be on the mid-term, long term? Or will I have to change as the users grow?

thank you

See more
Replies (3)
Recommends
on
FlutterFlutter

I agree with John. For the most part, Flutter has been easier to maintain as time goes on when comparing to react native. And in the landscape, the people at Flutter appears to be very active with the framework, a lot of things cooking. Flutter web is very new, but it'll only get better, more stable.

See more
Recommends

For the most part, Dart/Flutter is a great choice for cross-platform application development. The platform is developed by Google, and will be around for a long time. Unless you need to do very low level stuff, like bluetooth tethering or 3D drawing, flutter should be able to handle anything you need it to.

See more
Anand Verma
Associate Director Engineering at Sunstone Eduversity · | 1 upvotes · 12.7K views

We also had the same discussion, but ended with Flutter cause of it's great community support & great set of packages. Also achieving calling native feature is super smooth. And Flutter support Web as well while React Native don't. Learning curve is also a great point to choose flutter all doc's official videos are super rich to help you out.

See more
Aarav Varma

Can React or Flutter replace native technologies? I'm a founder of a Social Network called Orbiting, I'm basically a nontech guy, everything about tech is self-taught so I'm confused about what should I do taking forward the product, I've stupidly built Native mobile apps for Android (Kotlin) and Ios (Swift), post-beta, I'm thinking to move towards a language like React Native or Flutter as it decreases strain on my frontend side, keeping the team lean is one of my most important aspects in terms of growing the company but at the same time I don't want to compromise on user experience.

See more
Replies (3)
Saamer Mansoor
Founder at The First Prototype · | 7 upvotes · 29.1K views

We have experience with React Native, Flutter or Xamarin, the lion share of the native cross-platform tools used. They all allow you to create very good user experiences. You can check their reddit pages to see the beautiful designs people recreate. I highly recommend using cross platform tools vs native if your app has generic functionality that doesn't use advanced functionality of the app like VR/AR. So, for something like a dating app without those features, you would probably be better off with cross platform native instead of single platform native (swift/kotlin). If budget is low, a lot of companies have success just using Expo (a framework on top of React Native). It limits you further, but it's the easiest and most affordable to find developers with. Eventually you might decide to move away from it, but at that time ou ll have a lot more money and react native will be an easy tech to move towards.

Xamarin is the oldest of the cross platform native tools and so there's a lot more documentation and supporting libraries.

Flutter is super fast & fluid, and since it uses pixels(skia), it's even more performant than all the other technologies including native single platform. But it doesn't come with the amazing libraries that Xamarin and React Native is able to leverage

See more

As the previous commentor said, Next.js or React Native + Expo may be a better option. There's also the options of AssemblyScript + React/Next.js, or NativeScript and Ionic, both of which give you mature ecosystems of tools and close-to-native experiences. Flutter, you're likely to have the same experiences you had with Swift and Kotlin. Flutter requires higher separation of concerns between platforms, doesn't have nearly the third-party support of any of the other options, and is fairly large in binary size. Still, it's a growing system and in the future it may actually outcompete the other options when it has a large enough ecosystem.

See more
Anand Verma
Associate Director Engineering at Sunstone Eduversity · | 2 upvotes · 12.7K views

Framework like Flutter or React Native can never replace native technologies, Both platform launches their features onto their official framework and Flutter or React Native adopt these new feature via their community support that so you might need to wait or you can write on your own. Also performance is a great factor if your are more focused on performance then it's always advised to go with native on. One of the emerging technology is Kotlin Multiplatform you can try this one if you are building app for both platform. KMM can help you to put all you business logic at single place and can construct UI on the native language.

Still if you wanna move toward the Flutter or React Native my advice is to go with Flutter cause of it's increasing community support & industry choice.

See more
Needs advice
on
IonicIonicPhoneGapPhoneGap
and
React NativeReact Native

Looking for some advice: we are planning to create a hybrid app for both iOS and Android; this app will consume a REST API. We are looking for a tool for this development with the following attributes:

  • Shallow learning curve; easiness to adopt (all team is new into mobile development, with diverse backgrounds: Java, Python & AngularJS),

  • Easiness to test (we discarded Angular-based tools already: creating a unit test in Angular we considered time-consuming and low value. At this point of the project, we cannot afford UI testing with Selenium/Appium based tools).

  • So far, we are not considering any specific capability of the device. Still, in the mid/long term, we would require the usage of GPS (geolocalization) and accelerometer (not sure if it's possible to use it from a hybrid app). Suggest any other tool if you wish.

See more
Replies (4)
Alcides Costa
CEO, Co-founder at inPlace · | 5 upvotes · 61.7K views
Recommends
on
KivyKivy

If your team has a strong background in Python and you want to release some prototype soon, you could try Python and Kivy. Kivy is an open-source, cross-platform Python framework for rapid development of mobile GUIs. It supports both iOS and Android. I have passed a similar situation recently: to start a mobile app with no background in mobile development. Kivy saved me a lot of time. I could develop a prototype and release it faster than I thoght.

See more
Frederico Bezerra
Recommends
on
ExpoExpoReact NativeReact Native

To be honest , You need to think these points :

  • Developer Experience

  • Tooling

  • Maintainability

My vote for now is going with React Native with Expo , using Typescript...

With this stack You could follow some patterns and principle that the Java and python programmers are familiar with.

Typescript is a javascript Superset that you can follow Procedural , Functional and OOP approaches and an easy learning curve.

With Expo you need to concern only with the shared layer (Typescript) and the Native ones will be expo responsibility.

Please check Expo.com and try to get started using typescript.

Good performance and with EAS (paid plan) you can create a full CI CD pipeline for your app connected to the stores(Apple and Android).

See more
Recommends
on
CapacitorCapacitorIonicIonic

If you already know how to build web apps, give Capacitor a try. You can think of it like "electron for mobile" in that you can build a web app but access native functionality. Pair it with Ionic if you want a UI kit that is optimized for mobile, or build your own UI from scratch.

A bonus to Capacitor is your app will run without modification on the web as a PWA, iOS, Android, and more.

See more
Recommends
on
React NativeReact Native

Other tools have very slow performance. They are usually selected because someone on the team likes Angular, but your customers won't care what framework you're using. They'll just know the app is slow.

See more
Louw Pretorius

Hi, Stackshare community. A few friends and I are enrolled in an "appathon". We are given +- a month to develop an app. We chose the agricultural sector. We want to develop an app that can keep track of livestock vaccinations. So we would have to utilize quite a big database. We only have a month to develop a Minimal Viable Product. What stack is preferred? Our JavaScript skills aren't the best. We do know Java and Python quite well, however. What stack would benefit us?

See more
Replies (4)

I think you should go with Flutter any day because there is a large variety of widgets inventory for it which can fasten up the development time to at least roll out a minimal viable product out there. Performance of Flutter Apps are also better than React Native apps. And as an added bonus, if in future you want to add a web interface for the same, you can do it using the existing codebase if written in Flutter (dart).

See more
Ephemeral Astronaut
Software Engineer at Rivi · | 10 upvotes · 64.4K views

IMO if you need to build a simple and quick UI for your app, I'd suggest you go for either React Native or Android with Java or Better Yet, Kotlin (It won't take much time for you to get familiar with it if you know Java. See this https://play.kotlinlang.org/koans/overview). For Backend APIs you can use Python with something like Flask

See more
Jake Shapley
Application Developer at Washington Department of Fish and Wildlife · | 4 upvotes · 17.3K views

It depends. If you only need it to run on Android, you might be able to develop it faster in Android Studio (Java/Kotlin) with your experience with Java. Kotlin syntax is different than Java, but Android Studio has conversion from Java to Kotlin built-in.

If you need apps for both iOS and Android, or you are willing to be pushed out of your comfort zone and build experience, definitely go with Flutter/Dart. I was able to translate my iOS and Android native skills to Flutter/Dart very quickly. Performance is as good or better than native, and much better than React Native. Development is actually faster than a single platform native app, as well.

See more
Recommends
on
AnvilAnvilPythonPython

If a web app would work, you can use your Python skills to build it quickly with Anvil. They handle hosting and deployment, with built-in database and user authentication. There's a drag-and-drop UI designer. But we're not talking a "no code" solution here. You write all the logic (both server- and client-side) in Python.

See more
Saber Hosney
Senior software engineer at Shortcut · | 7 upvotes · 273K views
Needs advice
on
FlutterFlutterIonicIonic
and
React NativeReact Native

Greetings!

I have been searching lately for frameworks to build mobile apps.

We are trying to make something like a quiz app as a way for customers to contact us. I considered Ionic and React Native because we use JavaScript most of the time in websites, e.g., Vue.js/Nuxt.js. But Flutter seems a decent choice as well, especially since you can use Android/iOS-like components. We are looking for something that works in the long term, something that's time and cost-effective, especially when paired with backend services like Firebase or a GraphQL server. I would like to know your opinions and recommendations. Thank you!

See more
Replies (5)
Devon Ray
Software Engineer at Djinn Digital LTD · | 14 upvotes · 67.4K views
Recommends
on
FlutterFlutter

I think in the long term Flutter would be your best bet, I work with both flutter and react native daily and I am constantly finding reasons why flutter is better then RN, some general things I've found with flutter are the following:

  • User base is growing massively and a lot of companies are switching over to flutter
  • Performance is much better than React, both usage and compile times.
  • Managing framework updates with Flutter is a breeze and not so great with React.
See more
Krunal Shah
Technical Lead at Infynno Solutions · | 8 upvotes · 69K views
Recommends
on
React NativeReact Native

I have been exploring the Flutter lately it's good but if I am building something which is really huge then I will definitely use React Native for these reasons

  1. React Native is used by so many big companies so there are libraries for everything you need.
  2. As of now React Native community is bigger and more active than Flutter so if you're stuck anywhere it will be easy to get help or just find a solution from stack overflow.
  3. Since you're already working on JS you wouldn't need to learn anything new and you can focus on building your product.

The question you should be asking yourself Do I want to spend my time learning a new framework and then build the product or should I just building the product with the framework I know.

See more
Jake Shapley
Application Developer at Washington Department of Fish and Wildlife · | 4 upvotes · 29.6K views
Recommends
on
FlutterFlutter

I would definitely go with Flutter. I have been writing native apps in iOS (Objective-C/Swift) and Android (Java/Kotlin) for over 6 years. For public-facing apps, we have generally written and maintained 3 code bases (iOS, Android, Web), so we have tried cross-platform solutions, including Ionic and React Native. React Native was definitely better than Ionic, but still lagged significantly behind native, in terms of performance. Flutter is a game-changer. I have been tasked with writing a public-facing app to help users identify fish species. It is backed with AWS Amplify (AppSync/GraphQL). I was able to write a platform-aware UI, with native-looking elements in less time than it would have taken me to write it natively for a single platform. It looks like with just a few UI and backend tweaks, we will also be able to deploy it for Web. I haven't run tests to confirm, but performance appears to be at least as good as native. Here are some additional benefits when using Flutter/Dart with VSCode:

  • easy to set up and start coding
  • easy to integrate/manage dependencies
  • hot reload across multiple devices, on save
  • auto-formatting
  • quick-fix suggestions for syntax, etc. errors
See more
Marek Kapusta-Ognicki
Senior Fullstack Dev/Lead at Dataminers · | 4 upvotes · 25.8K views
Recommends
on
CapacitorCapacitor

Capacitor is a perfect tool for creating hybrid apps with any of the leading JS framework, so you don't have to worry about switching from JS to anything else. It also has a great ecosystem, as well as the native functions bridge plugins, most of them require zero-to-minimum effort to set them up. Unlike in React Native/Vue Native, you are not limited to specific components or logic, you are also free to choose any fitting UI kit, and the final product looks and behaves exactly the same regardless of the platform.

See more
Recommends
on
CapacitorCapacitorIonicIonic

I'll second the recommendation to check out Capacitor, optionally with Ionic. Capacitor provides a sort of "electron for mobile" that runs web apps on iOS, Android, Desktop, and as a PWA on the web, giving you access to the full native functionality on each platform through plugins or custom native code. Ionic then provides a native-quality UI layer and opinionated developer experience that ultimately uses Capacitor under the hood.

Sounds like your team already has a lot of web experience and existing web code, so Capacitor on its own or with Ionic would be a great choice since it's a standard web environment and can run any JavaScript app.

See more
Needs advice
on
Apache CordovaApache Cordova
and
Vue NativeVue Native

Heya, I'm very new on here! And I hope I can get advice on this matter :

We are working on a new app. The web version is on Sails.js (V1)/node.js/vue.js. Started with the Web App default settings (including login and payments, which we are using use). We started with a web version to give access to the customer to start creating the data while building the mobile version. (iOS and Android)

I heard of Apache Cordova, that using the same JavaScript/css could be used to not re-code the front-end of the app for iPhones and Androids. I've been told that it is end-of-life now (? - I couldn't find this info myself).

I saw that Vue Native might be an alternative and would only need a few adjustments from our web version as we are using Vue.js for the frontend.

I know next to nothing on this, so I would really appreciate it if you guys could point me to possible solutions you've used and why instead of searching through all the existing solutions. (I'm very open to know if there are alternatives to those two too !!)

We will need to be using the GPS functions of the mobiles, which is a big part of the app.

Thank you!

See more
Replies (1)
ahmed Tirhmert
Fullstack Web Developer · | 3 upvotes · 70.3K views

i don't have any experience with the vue native what so ever but i think Quasar and Ionic are the best options for an HTML/CSS/JS based mobile app ionic has full support of vue and quasar is built on vue you may have to change some configurations in your project files

See more
Decisions about Apache Cordova and React Native
Reza Babakhani
DotNet & Flutter Developer · | 7 upvotes · 26.7K views

So far, I had tried several times to start mobile programming with different technologies. I tested from Java and Xamarin to React Native. In Java, we had to work hard to get a beautiful visual effect. In Xamarin and React Native, the performance was never satisfactory (compared to Java). When the flutter market was heating up, I told myself that this is the same. Until recently, I tested this a few months ago. It was wonderful! When you are working with Flutter, you really feel fun and not boring at all. In addition, if you have worked with C family languages ​​for several years, you can learn Dart in an hour or two.

See more
Anand Verma
Associate Director Engineering at Sunstone Eduversity · | 4 upvotes · 49.5K views

We did a lot of POC on this topic, Had multiple discussion between our developer a lot of R&D , Then we made our mind. Flutter community is going better day by day, and a support of calling native code is going to help you achieving anything that you can't do in flutter. Hot Reload is really hot. And one of the good reason is it's web support.

See more

I wanted to develop a student app that possibly could be used by many teams (students from other schools)

I chose Ionic, because:

  • single codebase: previously, we used React Native for Android and Angular for web/PWA, which was troublesome

  • portability: runs on PWA (which is important, because iOS license is too expensive for school app), web, Android iOS (+ others, if needed)

  • full use of web technologies: Next.js, Tailwind, React in this example (in oppose to Flutter/Java/Kotlin)

  • stability and maintainability: low-entry level due to basic web technologies without new syntax (in oppose to React Native and Flutter), web is really stable and won't lose support (which doesn't have to be true with Flutter/Dart)

See more
James Bender
Lead Application Architect at TekPartners · | 5 upvotes · 54.5K views

I've yet to see a non-native application that I felt performed as well and/or provided the same user experience with Cordova/PhoneGap/Xamarin. Frankly, at best they all seemed like underpowered web applications deployed to a sandbox that ran on a phone. They didn't feel "slick" or "mobile-first" and in some cases the performance was unacceptable. At previous companies, we built a few of these apps at the client's insistence, and in every case, they re-engaged us about 18 months later to re-write the app(s) natively.

We are doing some research on React Native and Flutter, but I am not yet convinced that they can provide the same level of experience and performance as native, though I am trying to keep an open mind.

See more
Gabor Galazzo

As a startup, we need the maximum flexibility and the ability to reach our customers in a more suitable way. So a hybrid application approach is the best because it allows you to develop a cross-platform application in a unique codebase. The choice behind Ionic is Angular, I think that angular is the best framework to develop a complex application that needs a lot of service interaction, its modularity forces you (the developer) to write the code in the correct way, so it can be maintainable and reusable.

See more
Nithin f

Native development with the same awesome React framework!? SIGN ME UPPP!

It's the best of both worlds! The large, mature, and barebones set-up of React, combined with the native development approach of Flutter. What is there not to like?

Being familiar with JS and the React framework, I didn't want to learn an entirely different language like Dart.

Furthermore, I prefer functional programming. While React is not purely functional by any standard, its barebones approach makes it easier to customize the framework to your prefered paradigm and style, which is why I prefer it over other alternatives like Angular JS and Flutter.

Using React Native has opened me up to mobile development from the comfort of Javascript, and it's just been a really fun experience :)

See more

Our stack roughly divides into three major components, the front-end, back-end and the data storage.

For the front-end, we have decided to go with React Native via Expo. This allows us to target both Android and iOS with a single codebase. Expo provides "managed workflows" and an SDK that will simplify development and deployment.

For the back-end, we have decided to use Python. Python is the language of choice for machine learning (ML). It has extensive support for traditional ML algorithms (e.g. random forests) via Scikit-Learn and the SciPy ecosystem. On top of this, our industry partner has provided us their current solution written in Python. We decided to expose the back-end as a REST API using FastAPI. This allows us to nicely separate concerns from the rest of the codebase. FastAPIs use of static type hints, validation with Pydantic, and automated documentation allows us to build better APIs faster.

For data storage we decided to use a MongoDB Atlas, a NoSQL database. We decided to use a NoSQL database because we need to store large amounts of data (e.g data from the wearable IMUs). Moreover, due to the ever changing nature of a startup we require flexibility. NoSQL databases are schema-free which enables us to modify our schema as we see fit.

We plan on using GitHub Actions (GA) to orchestrate our CI/CD. Given GAs broad support of languages and workflows, it's hard to go wrong with this decision. We will also be using GitHub for version control and project management, so having everything in one place is convenient.

The major components of our CI/CD for the backend will consist of black for autoformatting, flake8 for linting, pytest for unit-testing, and mypy for static type checking and codecov for coverage reporting. We plan to use separate Docker containers to package the back-end and front-end components and use Docker Compose to launch the app. This allows us to better separate concerns, manage dependencies, and ensure our app is deployable anywhere.

See more
Julie Quintero
Machine learning/ software engineer · | 4 upvotes · 102.7K views

We will use Flutter for our athlete-facing mobile app. Flutter is a cross-platform app development framework, which boasts native performance and allows for creating beautiful, fluid user interfaces.

React Native may sound like a more appropriate option given our choice of frontend technologies, but we foresee little to no feature overlap in the web dashboard and mobile app. Ease of use, performance, good user experiences are key to encouraging athletes to use our app, something which React Native makes difficult, and is where Flutter excels.

We will use the test and flutter_test packages to test our Flutter app

See more
Christopher Chow
Software Developer at University of Toronto · | 4 upvotes · 102.6K views

We chose Flutter since we are developing a mobile application that needs to be performant (to handle displaying large amounts of data and video uploading) and would cover both Android and iOS systems. Since we want the app to be cross-platform, two frameworks comes in to mind: Flutter and React Native. As shown below, Flutter's performance and out-of-the-box support impressed us to pick it as our framework for our mobile app.

React Native has been a dominant force in cross-platform app development since its launch by Facebook. The ability to write React-like code and have it compile to both iOS and Android makes developing mobile apps much easier. However, the overhead done to bridge Javascript code into native code means React Native apps might not be as performant. Moreover, React Native, much like React, is an unopinionated framework that covers minimal functionality out-of-the-box. This means that most functionalities would have to be relied on third-party libraries or developers would have to write their own native code.

Flutter, on the other hand, is a much newer framework developed by Google. While Flutter uses Dart, a relatively new language compared to JS, syntax-wise it is similar enough to that a JS developer should be able to pick it up in no time. The Flutter engine also compiles directly into native code, making it more performant when compared with React Native. Flutter is also an opinionated framework, with a much large stack of Widgets to choose from out-of-the-box. The Widgets are also designed according to Material design principles, making styling easier.

See more
Pierre Canthelou
Responsable app mobile at Le Point · | 5 upvotes · 122K views

I've made 6 professional/business applications with React Native before choosing Flutter/Dart for the new version of WinMinuteConso (historical in Ionic...). Multi Platform is far more stable, Dart is far more powerful, the whole process is really better... It is just hard to find the proper software architecture...

See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Apache Cordova
Pros of React Native
  • 48
    Lots of plugins
  • 35
    JavaScript
  • 26
    Great community
  • 25
    Easy Development
  • 18
    Easy to learn
  • 15
    Cross platform
  • 7
    Open Source
  • 6
    Easy, fast, not buggy in my experience with my code
  • 6
    Lots of descendants; PhoneGap, Ionic, Intel XDA etc
  • 4
    Can use CSS3
  • 4
    Rich HTML 5
  • 4
    Easy debugging
  • 3
    HTML, CSS and JS
  • 3
    Fast and hot reload
  • 3
    Rich css ui
  • 3
    Use what you code in your browser
  • 2
    Need a light system
  • 2
    Native Web Technologies
  • 2
    Without extra tooling needed
  • 2
    One code base everywhere
  • 213
    Learn once write everywhere
  • 173
    Cross platform
  • 168
    Javascript
  • 122
    Native ios components
  • 69
    Built by facebook
  • 65
    Easy to learn
  • 45
    Bridges me into ios development
  • 39
    No compile
  • 39
    It's just react
  • 36
    Declarative
  • 22
    Fast
  • 13
    Virtual Dom
  • 12
    Insanely fast develop / test cycle
  • 12
    Livereload
  • 11
    Great community
  • 9
    It is free and open source
  • 9
    Native android components
  • 9
    Easy setup
  • 9
    Backed by Facebook
  • 7
    Highly customizable
  • 7
    Scalable
  • 6
    Awesome
  • 6
    Everything component
  • 6
    Great errors
  • 6
    Win win solution of hybrid app
  • 5
    Not dependent on anything such as Angular
  • 5
    Simple
  • 4
    Awesome, easy starting from scratch
  • 4
    OTA update
  • 3
    As good as Native without any performance concerns
  • 3
    Easy to use
  • 2
    Many salary
  • 2
    Can be incrementally added to existing native apps
  • 2
    Hot reload
  • 2
    Over the air update (Flutter lacks)
  • 2
    'It's just react'
  • 2
    Web development meets Mobile development
  • 1
    Ngon

Sign up to add or upvote prosMake informed product decisions

Cons of Apache Cordova
Cons of React Native
  • 2
    No native performance
  • 1
    Hard to install
  • 0
    Hard to install
  • 23
    Javascript
  • 19
    Built by facebook
  • 12
    Cant use CSS
  • 4
    30 FPS Limit
  • 2
    Slow
  • 2
    Generate large apk even for a simple app
  • 2
    Some compenents not truly native

Sign up to add or upvote consMake informed product decisions

What is Apache Cordova?

Apache Cordova is a set of device APIs that allow a mobile app developer to access native device function such as the camera or accelerometer from JavaScript. Combined with a UI framework such as jQuery Mobile or Dojo Mobile or Sencha Touch, this allows a smartphone app to be developed with just HTML, CSS, and JavaScript.

What is React Native?

React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React. The focus of React Native is on developer efficiency across all the platforms you care about - learn once, write anywhere. Facebook uses React Native in multiple production apps and will continue investing in React Native.

Need advice about which tool to choose?Ask the StackShare community!

What companies use Apache Cordova?
What companies use React Native?
See which teams inside your own company are using Apache Cordova or React Native.
Sign up for StackShare EnterpriseLearn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Apache Cordova?
What tools integrate with React Native?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

Vue.jsSpring BootUnity+7
2
1223
What are some alternatives to Apache Cordova and React Native?
Xamarin
Xamarin’s Mono-based products enable .NET developers to use their existing code, libraries and tools (including Visual Studio*), as well as skills in .NET and the C# programming language, to create mobile applications for the industry’s most widely-used mobile devices, including Android-based smartphones and tablets, iPhone, iPad and iPod Touch.
PhoneGap
PhoneGap is a web platform that exposes native mobile device apis and data to JavaScript. PhoneGap is a distribution of Apache Cordova. PhoneGap allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development, avoiding each mobile platforms' native development language. Applications execute within wrappers targeted to each platform, and rely on standards-compliant API bindings to access each device's sensors, data, and network status.
Electron
With Electron, creating a desktop application for your company or idea is easy. Initially developed for GitHub's Atom editor, Electron has since been used to create applications by companies like Microsoft, Facebook, Slack, and Docker. The Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on io.js and Chromium and is used in the Atom editor.
Ionic
Free and open source, Ionic offers a library of mobile and desktop-optimized HTML, CSS and JS components for building highly interactive apps. Use with Angular, React, Vue, or plain JavaScript.
Flutter
Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android.
See all alternatives