Flutter is an open-source mobile application development framework created by Google. It is used to develop applications for Android and iOS, as well as being the primary method of creating applications for Google Fuchsia.
$0
NativeScript
Score 4.8 out of 10
N/A
NativeScript is an open source framework that allows
you to create native iOS and Android apps, with one codebase, using the web
skills you already have (JavaScript and CSS) and the libraries you already
love.
N/A
React (React.js)
Score 8.8 out of 10
N/A
React or React.js is a JavaScript library for building user interfaces. React enables users to create interactive UIs.
$0
Pricing
Flutter by Google
NativeScript
React (React.js)
Editions & Modules
No answers on this topic
No answers on this topic
No answers on this topic
Offerings
Pricing Offerings
Flutter
NativeScript
React (React.js)
Free Trial
No
Yes
No
Free/Freemium Version
Yes
Yes
Yes
Premium Consulting/Integration Services
No
No
No
Entry-level Setup Fee
No setup fee
No setup fee
No setup fee
Additional Details
—
The NativeScript framework and CLI are completely free and open source. NativeScript Sidekick is a free download to improve developer productivity with optional paid tiers for power users.
I selected Flutter because of Flutter's awesome, pre-build UI components. It makes my life as an indie dev easy and fun. At the time, I had never built an application with React Native, so this was a fantastic introduction to cross-platform development. That said, as someone …
Flutter is a bit different from Android Studio, the latter one being an Integrated Development Environment (IDE) while Flutter itself is a Cross-Platform Mobile Development SDK (Software Development Kit). Flutter provides the access to the native features and built-in plugins …
NativeScript was indeed a better experience at first than Ionic. But the real game-changer in 2022 for cross-platform applications is Flutter now. We changed to it shorty after NativeScript, as it is much more stable, more widely supported, has a ton of extra features, and does …
This was very difficult because Flutter is extremely easy to use and if you have React in the background, it makes it even easier. What makes Flutter a little better is the response, the components are rendered before the loading and that gives the user a better experience. The …
Flutter by Google is well suited where you have to make an app across multiple platforms like iOS, Android, Web, Desktop and you don't have the bandwidth to create multiple teams for the Native app. This makes sure you have a faster development and you don't have to worry about how your product will look across different platforms. It is also very smooth/fast in response, making it close to feel like a Native app, this makes it an easy pick for a Fintech product where speed matters. Flutter by Google also has a huge library of Components, which are well tested and developed by Google's Flutter by Google team itself, making the development even more fast since the majority of required components are already available.
I gotta be honest, after a PoC period, we choose to rewrite the whole application in a different cross-platform app. Our developers had to invest a lot of time and effort to debug a lot of plugin-related issues, which we needed to utilize the android mobile phone capabilities. QR reader, special visualizations, and fine-tuning were really hard and often resulted in writing native Android code instead of using the shared Angular code. In the end, we think that writing a standalone Android app and an Angular app would have been a better alternative, as the shared code base was so unreliable that it did not save us any time.
React is a JavaScript user interface construction library that works well for:
Developing web apps with dynamic and complicated user interfaces.
creating reusable UI elements that may be used in other applications.
creating single-page applications with dynamic content updates that don't require a page reload.
The Virtual DOM's effective updating mechanism allows it to handle large volumes of data updates.
React, on the other hand, might be less suitable for:
Websites that are simple, stagnant, and have no interaction. Other libraries or simple HTML, CSS, and JavaScript may be a better fit in such circumstances.
Web sockets may be a better choice for applications that need real-time updates, such as chat or gaming apps.
When creating mobile apps, React Native is a better option.
Server side rendering only, as React is designed to run on the client side.
True native app. The app uses native components and that is quite noticeable in the overall performance of the app. NativeScript is also awesome in the way we can access the native APIs, so we are never really constrained by the framework. If we need, we can just dive into the native APIs without leaving our environment and language (JS).
Cross-platform. Builds for Android and iOS. It deals with the platforms differences very well.
Support for Vue.js. Even though it is just a community effort, the NativeScript-Vue plugin is the best alternative to build native Apps with Vue.js. That was a major factor to go with NativeScript.
React is fantastic for building performant user interfaces. Our web app is snappy and great for our customers.
React has the philosophy of doing one thing and doing it well which is the view layer of the application. This makes it incredibly intuitive and flexible for developers to use.
React has lead the way in being able to write modular and structured code. It is a drastic improvement since the days of spaghetti jQuery code.
React has an unmatched community. The amount of tools and libraries available is fantastic, and there plenty of solutions available online for common problems.
Occasionally updates to the Flutter SDK result in wide-sweeping changes that seem to not be thoroughly tested and considered. Flutter sometimes evolves too fast for its own good.
While the 3rd-party Flutter package ecosystem is vast and rich, 1st-party support for basic things (audio/video playback, battery information, Bluetooth services, etc.) are lacking. You are occasionally forced to rely on an open-source package for use-cases that other platforms have native support for.
Documentation, particularly around testing, is lacking. While there are some great docs, like the Dart Style Guide, many Flutter-focused support documents are lacking in quality and real-world usability.
Flutter allows you to architect an app however you want. While this is a great feature, it also adds complexity and leads to the current state of Flutter's state management, where there are 50+ options on how to organize your app, with very little official guidance or recommendations from the Flutter team. For a beginner, this can create decision paralysis.
Debugging React is challenging. Bugs in react code generate stack traces internal to React and it is often totally unclear how it relates to the code you actually wrote.
Relating your React elements to corresponding DOM elements is difficult. The intentional separation of virtual and actual DOM also makes it difficult to map the elements to the structures in the DOM. This is partially ameliorated by the use of the React dev tool, which provides a DOM-like view of the React elements, but the tool still does not provide a direct correspondence with the DOM that is often necessary to figure out why something isn't right.
Because JSX is React-specific and not a language feature, a special compilation process is necessary to convert JSX code to normal JS. Coming from a C++ background, compiling things doesn't bother me, but many JS developers are used to a less structured development.
The hybrid is ok but native is better for performance and the right use case I want to go for is the performance without dealing with too many development tools.
Flutter by Google is very easy to start with. The initial setup they provide is very helpful and easy to understand. The default project setup is also good and can be deployed to production without changing much. Flutter by Google provides a huge library of components, which are created and tested by their own team, making the development of application much faster and robust. Flutter by Google also has a huge community support where we can find components built by the community and we can contribute our own components as well, which helps in faster dev time. Applications developed using Flutter by Google are very smooth, almost feels like native, which helps in creating good impression on customers/clients.
React is just a bit of a different animal. I was avoiding it for the longest time. I thought for sure I would land on Vue or something else with a more approachable and familiar appearance. But after taking an online course in React, I started realize what people were raving about (and complaining about) and decided to implement it at our office for one of our products.
The community support is excellent. They have a slack community as well as a discourse forum forum.nativescript.org Both of these offer community driven support. The forum is more for a threaded discussion. The slack community is more for a quick talk.
Since it's open-source and very popular, the community support for React and related tools and libraries is excellent. There are a lot of people using the same tools, and so issues tend to get fixed quickly and "recipes" are easy to come by. And since it's backed by Facebook, they have a dedicated engineering team working on the progression of React.
I have experience with react and React Native. I would say that the idea behind all those frameworks are quite similar. However, I found the javascript-based frameworks a bit more accessible as you could utilise your javascript knowledge. Here, Flutter works with its own language. This has advantages and disadvantages sometimes. I found the community around javascript frameworks bigger and therefore sometimes more helpful. However, Flutter does a good job here as well. I think the main argument for Flutter is its usability for less experienced developers. If you do not have knowledge in javascript or other programming languages then I think it is much easier to start with Flutter than with another framework like react. I think the package that you get form scratch is better than in the other frameworks were you have to set up and learn a lot more before you can start.
Ionic Ionic is an excellent Angular-based framework for mobile, and it does give a lot of access to the native device api's. However, the technology is based on Cordova, which means the apps being built are just webviews, with html, css and JS all running on the UI thread, and potentially creating very slow experiences for users. NativeScript is a truly native solution, and so provides a faster user experience. ReactNative We evaluate ReactNative, and found it much the same as NativeScript. The main difference is that your JS is all written with React, while NativeScript lets you choose between normal JS, Angular, and Vue. For our team, Angular was the most appropriate choice.
While this is a widely contested debate with various blog posts and benchmarks all over the place, its really a personal choice to determine what works for the team. Coming from a Angular 1.x background, I decided to try a new framework when Angular 2.x was announced and at that time React is gaining popularity and Vue hasn't taken off yet. Compared to Angular 1.x and Vue (hybrid of React and Angular) that split the logic from the html templates, I loved the way React breaks code into components using the jsx syntax. In my mind, this allows for cleaner components and easier maintenance
The rapid development capabilities of Flutter allow us to build apps we could not have previously considered commercially viable, opening new revenue streams.
Free and open licensing made adoption very easy (ie. free/low cost!).
In comparison to Qt, our time spent arguing with build tools and perfecting development environments has decreased substantially.
The poor quality of NativeScript documentation has the potential to weigh heavily on development timelines, budgets, and QA resources in a NEGATIVE manner.
The poor interoperability of NativeScript plugins can significantly increase development time.
The need to seek out professional instruction to learn how to use NativeScript effectively may become a burden on your budget.
The number of breaking changes between versions of NativeScript, may cause your development efforts to lag further behind the most recent releases of NativeScript and your other chosen environments than you are accustomed to.
NativeScript still does not support the latest major version of Angular. Any significant changes to the other environment components of your systems may hold you back even further while NativeScript plays catch-up.