Need advice about which tool to choose?Ask the StackShare community!
Apache Cordova vs Ionic vs Xamarin: What are the differences?
**Key Differences between Apache Cordova, Ionic, and Xamarin**
Apache Cordova, Ionic, and Xamarin are popular platforms for building cross-platform mobile applications, but they differ in various aspects that impact development and performance.
1. **Language and Framework**: Apache Cordova uses HTML, CSS, and JavaScript for app development, Ionic is built on top of Cordova and uses Angular for the framework, while Xamarin uses C# and .NET framework.
2. **User Interface**: Ionic offers a set of pre-built components and UI elements for creating visually appealing interfaces, while Apache Cordova and Xamarin require more customization for UI design.
3. **Performance**: Xamarin generally provides better performance as it compiles down to native code, while Apache Cordova and Ionic rely on web technologies, which can affect performance.
4. **Community and Ecosystem**: Ionic has a large community and a rich ecosystem of plugins and tools, while Apache Cordova and Xamarin also have strong communities but with different levels of support.
5. **Native Features Support**: Xamarin offers the most robust support for native features and APIs of the underlying platforms, followed by Ionic, while Apache Cordova may require additional plugins for accessing diverse native functionalities.
6. **Cost**: Xamarin is a paid platform with a free trial, while Apache Cordova and Ionic are open-source and free to use, which can be a determining factor for small projects or budget-constrained developers.
In Summary, Apache Cordova, Ionic, and Xamarin differ in language and framework, UI capabilities, performance, community support, native features access, and cost considerations for app development.
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.
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.
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).
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.
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.
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!
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.
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
- React Native is used by so many big companies so there are libraries for everything you need.
- 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.
- 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.
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.
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
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.
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!
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
We are developing an AWS IoT app for large boats. The IoT devices have sensors all over the boat for engine oil pressure, position, water depth, fuel level, crew location, etc. When the boat has internet, we interact with AWS cloud using lambda and Amazon DynamoDB. When the boat is offshore, the captain and crew still need normal and emergency alerts and real-time sensor information. The crew might have an Android or IoS phone or a Windows or macOS PC to receive alerts and interact with sensors. We may use the AWS GreenGrasss edge computing solution and either MQTT or HTML for that function.
Question: We want to develop a cross-platform client to run on Windows, Mac, Android, IOS, and possibly Linux. We are primarily Python programmers, so PyQt or Kivy are options for us, but we have heard good things about React Native, Flutter, Xamarin, and others. We think an AWS Greengrass core on an RPI4 could communicate to the client with MQTT or a local webserver with a client web interface.
Any thoughts would be much appreciated.
I don't know much about Xamarin but I know about PyQt and React Native.
However, I don't recommend PyQt because the apps made using PyQt are not that suitable for mobile apps. If you take a look at the PyQt interface, you will be able to see that the features are more of a desktop apps kind.
React Native uses JavaScript. React Native is immensely flexible in upgrading your apps because it allows you to formulate your app code into independent blocks.
In Xamarin, you have to write the code in .NET . The best thing about Xamarin is, that it extends the.NET developer platform with tools and libraries specifically for building apps for Android, iOS, tvOS, watchOS, macOS, and Windows
While the best choice for you depends on various factors but React Native app development is a promising overall choice. In today’s scenario, React Native has steady growth, flawless code structure, and brilliant and large community support. We suggest you go for React Native for your next project owing to its outstanding support from developers, easy availability, and cost-effectiveness.
It seems like your app is not really using any native functionality on the phone. I have experience with cross platform iOS & Android development. They are all really good tools! Xamarin (all the project on the website portfolio I attached) is awesome for accessing native functionality (NFC, Sensors, Bluetooth, etc), and I have built apps that have millions of downloads, some that hit Top 5 on Utilities, another that hit Top 50 in Finances. You just have to look at what your application intent is, it seems like it's just to read and post data. For that they are all pretty good, but you should also look into Ionic which may serve the same purpose
Hi, we are an early startup (with an iPOC prototype) but need to get started on our MVP, and our tech developers in India recommended a hybrid, and they use Ionic, then we spoke with a software company in the US and he recommended Flutter or React Native. Any advice or input for us on the differences between these? Our app will need Bluetooth GPS for "near me" and social media sharing reviews capability, and also link on the backend with businesses. Thanks in advance for any help you can give!
I would never recommend you to go with Ionic, Because of the User experience it provides is subpar. Flutter is most promising, Can be easily used to develop great user experience in no time. React native is also good, but it's phasing out in my opinion, while Ionic has already phased out. Flutter also provides great developer experience, resulting in fast and productive developers. I would have to press hard to think of a CON about flutter when recommending it for your needs.
Maturity, Community, Facility, Libs React Native is the principal platform of mobile cross-platform development today, Flutter is it's a promise.
Even if React Native is older (I didn't say mature) you should go for Flutter, It's works really well and the developer experience is great (auto-completion, plugin etc). I spent years with React Native and now I am using Flutter and I don't regret It. Even if you have to learn a new language, It's pretty simple even more If you know some OOP, Java and Javascript ES6 syntax in some case. One other advantage is the facility to design app in Flutter, you have widgets for everything and you can adapt any design made by your designer. For example you can't make a simple custom box shadow with React-Native ...
Flutter is built on DART which is written in GO. GO compiles to binary. Hence is faster than any java based framework. It provides superior performance and has a simplified UI process for designing apps.
I don‘t have practical experience with flutter but between ionic and react native I‘d say both a perfectly viable options and we have used both for a number of production apps. We normally go with ionic on capacitor because we build a lot of pwa/web apps so we can use the same code for all. We don‘t use much of ionic elements, we do most styles on our own.
The comments that the user experience is bad I cannot agree with. A well designed and developed ionic apo can hardly be distinguished from a native app. But obviously that depends also on the usecase and type of app.
I hope this helps
It depends also on your team skills. Flutter is fast to learn, fast to develop with and the performance is much better in comparison to React. If your team is already highly skilled in React Native it could be the better option - if not Flutter is my 100% recommendation. We rapidly prototype and deliver MVPs with Flutter since two years.
Hi! I have to develop a software solution for a youth church group, for my graduation project. In the first meeting that I have with the coordinators, they did not have a clear idea of what they want. The biggest problem they have is the attendance control, they do it manually and that causes errors.
I was thinking of developing an Android app in Android Studio because that is the tool I master, but a friend told me that I consider using a tool that builds for iOS, Android and web. I have like 6 months. I own a MacBookAir but I do not know Swift (for iOS). I am familiar with MySQL, PHP, Apache, JSP,HTML,CSS.
Summary: What tool can I use that is easy to learn and easy to scale?
It's probably not relevant anymore, but I think Ionic with Angular as the frontend is the right choice. For IDE I would choose Visual Studio Code. You can just create a basic web application with responsive design, which is already included if you are going to use Ionic components with Material Design to create your app. You don't need to know Swift, you don't even have to create mobile apps, just create a responsive (Ionic already is) web app, or PWA. Upon browsing your website from a mobile device for example using google chrome, you will be prompted to create a shortcut of the website in your mobile phone. After you do this, there will be an icon in your phone that looks like an icon to launch an app, it will launch your website in full screen mode - for the user's perspective it will look like he is using a native app. Access https://ionicframework.com/docs/angular/pwa from your android chrome browser, go to tab options (3 vertical dots), click on Add to Home screen. When you launch the website from the shortcut, you'll see that it behaves and looks like a native app.
I think you should chose between Flutter and Ionic. With those two options, the main question is about graphs and performance. Are they really important for your application? If the answer is yes, your tool is Flutter but, if the answer is that you need an easy tool to create an app with some basic components I would choose Ionic. You have a library with lots of components that you can use and they have native UI by default (for Android and iOS).
You will find more support if you use Ionic with Angular as frontend framework (you have the option to use Vue or React but this is a new feature for Ionic and I think there are more difficult to learn than Angular).
You can develop and debug the majority of features on PC (I don't know if that is possible with Flutter). And when you will finish the app, create iOS and Android versions is simple.
Flutter is easy to use and easy to understand. Once you have completed the android platform, you can easily build it to ios, Web or desktop on a single code base.
- Electron is for desktop apps, so not useful for you.
- Flutter has better performance, but Ionic is decent as well, I would use Ionic unless you're making a game or graphic-intensive app.
- Ionic is more flexible since you have the whole NPM ecosystem available, while flutter is more recent, thus libraries for it are less in quantity and battle-tested than the ones in NPM.
- Ionic 4 introduced CSS variables, which improved immensely the theming process for the app, which was the hardest issue Ionic development had.
- Ionic has extended to many frameworks so it's compatible with Angular and React frameworks, meaning more flexibility, personally I would recommend Ionic with Angular over React since it's more suited to enterprise-level apps.
Hi there. So Electron embeds everything in a webview, which means that what you would have to develop would be a Node project most probably. Ionic does the same (kindof but won't bore you with specifics) but it does it much more efficiently. Usually you do Ionic apps with JS frameworks like Angular or React (this one recently added). Flutter on the other hand does native apps, it does it really good but it's support for Web is in beta and it's relatively simple to setup if you already know the SDK and the environment.
My recommendation would be that you do your app using Angular/Ionic if you reaaally need the multi-platform environment and there's different reasons in this case:
- Since it's a graduation project you need it to be as simple as it can be and adding a new technology adds to the learning curve.
- Flutter is great if you have different complex UI or if you have specific performance needs that require native support and in your case it does not seem like you need that.
- Flutter is also an incredibly powerful tool but it's learning curve might be tricky if you have not developed native apps before so I wouldn't recommend you start off like this if you have time sensitive projects like a graduation project. It does have great docs and an awesome community but I'd suggest you stick as close to what you know as you can.
- Ionic/Angular uses Typescript (a type javascript wrapper) and Angular (JS framework) so you will have to learn a little bit but if you already know HTML, CSS and Javascript you won't have that much of a hard time. Also there's quite a lot in terms of documentation and tooling already tested around this combination.
- Ionic/Angular has a really good CLI that helps you stick to the architecture they recommend so you wouldn't have to worry about it that much.
- Ionic/Angular helps you test either locally in the web browser as well as your devices which is in the end what you want if you are looking for a multi-platform system. Flutter also does this but is not quite in a stable state (yet!).
Anyway, in the end, if you go for the multi-platform suggestion I think, because of time you would be better off with Ionic. If you decide that you don't need that as of right now (which is fine as well) you can start with just the Android app and plan on the different things you might eventually need like a website or other different stuff. Cheers!
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)
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.
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.
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...
- Javascripts is the most populated language in the world.
- Easy to learn & deployed production
- Fast development
- Strong community
- Completed Documents
- Native performance with lower RAM used.
- Easy to handle native issues by using native code like Java / Objective C
- Powered by Facebook.
While with Ionic it is possible to make mobile applications with only web technologies, Flutter is more performant and is easy to use if you are willing to learn Dart, which is a fun language. Plus, it has awesome documentation and, while its ecosystem isn't near as big as JavaScript's is, it has a good package manager called Pub and its packages are generally high quality.
I've done some Hybrid Mobile apps with both technologies Apache Cordova
and React Native
and described my experience in my blog.
In a few words, I would suggest to use each technology in accordance what what is your current code base and what do you want to achieve.
React Native is a great option if you need that extra edge in performance with multi-threading and native UI rendering. Or you already have a web app based on React which you want to port to mobile.
On the other hand, if you have an existing web application code and you want to reuse some or all, including the ability to use web third-party libraries, then Cordova is the best option.
Proguard
?
ProGuard is the most popular optimizer for Java bytecode. It makes your Java and Android applications up to 90% smaller and up to 20% faster. ProGuard also provides minimal protection against reverse engineering by obfuscating the names of classes, fields and methods.
How to use it inCordova
app?
I didn't find any plugins for it. So I've implemented it by myself and shared it on GitHub.
Feel free to use!
Pros of Apache Cordova
- Lots of plugins48
- JavaScript35
- Great community26
- Easy Development25
- Easy to learn18
- Cross platform15
- Open Source7
- Easy, fast, not buggy in my experience with my code6
- Lots of descendants; PhoneGap, Ionic, Intel XDA etc6
- Can use CSS34
- Rich HTML 54
- Easy debugging4
- HTML, CSS and JS3
- Fast and hot reload3
- Rich css ui3
- Use what you code in your browser3
- Need a light system2
- Native Web Technologies2
- Without extra tooling needed2
- One code base everywhere2
Pros of Ionic
- Allows for rapid prototyping248
- Hybrid mobile228
- It's angularjs208
- Free186
- It's javascript, html, and css179
- Ui and theming109
- Great designs78
- Mv* pattern74
- Reuse frontend devs on mobile71
- Extensibility65
- Great community31
- Open source29
- Responsive design23
- Good cli21
- So easy to use14
- Angularjs-based13
- Beautifully designed13
- Widgets12
- Allows for rapid prototyping, hybrid mobile11
- Typescript11
- Quick prototyping, amazing community10
- Easy setup10
- Angular2 support8
- Fast, easy, free7
- Because of the productivity and easy for development7
- Base on angular7
- So much thought behind what developers actually need7
- Super fast, their dev team is amazingly passionate6
- Easy to use6
- It's Angular6
- UI is awesome4
- Hot deploy4
- Material design support using theme3
- Amazing support3
- It's the future3
- Angular3
- Allow for rapid prototyping3
- Easy setup, development and testing3
- Ionic creator3
- User Friendly2
- It's angular js2
- Complete package2
- Simple & Fast2
- Fastest growing mobile app framework2
- Best Support and Community2
- Material Design By Default2
- Cross platform2
- Documentation2
- Because I can use my existing web devloper skills2
- Removes 300ms delay in mobile browsers2
- Responsive1
- Native access1
- Typescript support1
- Ionic conect codeigniter1
- Fast Prototyping1
- All Trending Stack1
Pros of Xamarin
- Power of c# on mobile devices121
- Native performance81
- Native apps with native ui controls79
- No javascript - truely compiled code73
- Sharing more than 90% of code over all platforms67
- Ability to leverage visual studio45
- Mvvm pattern44
- Many great c# libraries44
- Amazing support36
- Powerful platform for .net developers34
- GUI Native look and Feel19
- Nuget package manager16
- Free12
- Backed by Microsoft9
- Enables code reuse on server9
- Faster Development8
- Use of third-party .NET libraries7
- It's free since Apr 20167
- Best performance than other cross-platform7
- Easy Debug and Trace7
- Open Source7
- Mac IDE (Xamarin Studio)6
- Xamarin.forms is the best, it's amazing6
- That just work for every scenario5
- C# mult paradigm language5
- Power of C#, no javascript, visual studio5
- Great docs4
- Compatible to develop Hybrid apps4
- Microsoft stack4
- Microsoft backed4
- Well Designed3
- Small learning curve for Mobile developers3
- Ionic2
- Ability to leverage legacy C and C++2
Sign up to add or upvote prosMake informed product decisions
Cons of Apache Cordova
- No native performance2
- Hard to install1
- Hard to install0
Cons of Ionic
- Not suitable for high performance or UI intensive apps20
- Not meant for game development15
- Not a native app2
Cons of Xamarin
- Build times9
- Visual Studio5
- Price4
- Complexity3
- Scalability3
- Nuget2
- Maturity2
- Build Tools2
- Support2
- Maturidade0
- Performance0