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


+ 1

+ 1
Add tool

Expo vs NativeScript: What are the differences?

Expo: Making React Native Easier. Exponent lets web developers build truly native apps that work across both iOS and Android by writing them once in just JavaScript; NativeScript: Build truly native apps with JavaScript. NativeScript enables developers to build native apps for iOS, Android and Windows Universal while sharing the application code across the platforms. When building the application UI, developers use our libraries, which abstract the differences between the native platforms.

Expo and NativeScript can be primarily classified as "Cross-Platform Mobile Development" tools.

"Free" is the primary reason why developers consider Expo over the competitors, whereas "Access to the entire native api" was stated as the key factor in picking NativeScript.

Expo and NativeScript are both open source tools. It seems that NativeScript with 17.1K GitHub stars and 1.26K forks on GitHub has more adoption than Expo with 6.55K GitHub stars and 748 GitHub forks.

According to the StackShare community, Expo has a broader approval, being mentioned in 27 company stacks & 26 developers stacks; compared to NativeScript, which is listed in 10 company stacks and 23 developer stacks.

Advice on Expo and NativeScript
Needs advice
ReduxReduxReact NativeReact Native

Hello guys, I am new here. So, if I posted without specific guidelines, please ignore.

Basically, I am an iOS developer and developing native apps for the last three years. Recently, I started learning React Native to develop apps for both platforms. If anyone out there knows any useful resources that will become a better react native developer.


See more
Replies (1)
Javier Silva Ortíz
Senior Full Stack Developer at Aleph Engineering · | 6 upvotes · 143.8K views

Well, the first resource I would recommend you is my upcoming book by Packt Publishing, "Professional React Native", but it's due late January next year :) . Now jokes aside (the book's real by the way :) ), the easiest way to build a iOS/Android/Web app with React Native is to do: npm install -g expo-cli expo init some-project cd some-project expo eject

You might have heard of Expo, but trust me, stay away from it. Expo highest value is that it's an already pre-configured 3 platforms environment, but if you don't eject then you're vendor-locked to what Expo has to offer in iOS and Android, which is very poor compared to going full React Native on these platforms, they can't even handle Google Sign In properly and by the way, even if your app is 10 lines of code your app size will be over 40 MB if you don't eject, yep it's that bad, plus the performance is regular and the loading times slow, not to mention that you're stuck with their build service which the free tier makes you wait for hours for a free build slot. It's important to note that when ejecting you don't lose the Web, you simply do expo start --web to start your dev environment and expo build:web to build a static website that you can serve with any web server. Regarding state management, don't bother with "lifting state up" philosophies mixed with Context API to manage your state, lifting state is a great pattern and helps your codebase, Context is great to avoid prop-drilling, but NEVER mix them to achieve app-wide state management, for that, simply go for Redux or MobX, the hype is all about Redux, but I consider MobX far better in many aspects. However, as you're getting new into this I would recommend you start with Redux AND PLEASE grab yourself npm install @manaflair/redux-batch so that you can batch updates and don't bring your app to a crawl. Forget that "connect HOC" thing with React-Redux, don't bother for a second with it, go with Hooks and useSelector and useDispatch and the likes, it will make your code SO much cleaner and smaller. Adopt clean and new Hooks philosophy, avoid writing class components as much as possible and write function components augmented with Hooks.

See more
Decisions about Expo and NativeScript

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
Get Advice from developers at your company using Private StackShare. Sign up for Private StackShare.
Learn More
Pros of Expo
Pros of NativeScript
  • 14
  • 11
    Hot Reload
  • 8
    Common ios and android app setup
  • 7
    Easy to learn
  • 6
  • 5
    Open Source
  • 4
    Builds into a React Native app
  • 75
    Access to the entire native api
  • 47
    Support for native ios and android libraries
  • 46
    Support for javascript libraries
  • 46
    Angular 2.0 support
  • 44
    Native ux and performance
  • 37
    Typescript support
  • 35
    Backed up by google and telerik
  • 29
    Css support
  • 27
    Cross-platform declarative ui and code
  • 25
    Fully open source under apache 2.0 license
  • 11
    Vuejs support
  • 9
    60fps performance
  • 6
    Powerful data visualization with native UI
  • 5
    Angular, typescript and javascript support
  • 5
    VS Code integration
  • 5
    No need for Mac to build iOS apps in Telerik Platform
  • 4
    Extended CLI support
  • 4
    Cloud builds as part of Telerik PLatform
  • 4
    Truly Object-Oriented with Typescript
  • 4
    On-device debugging
  • 4
  • 3
    Easy to learn
  • 3
    0 day support for new OS updates
  • 3
    Easiest of all other frameworks
  • 3
    Live reload
  • 3
    Backed by google
  • 3
    Access to entire native api
  • 3
    Publishing modules to NPM
  • 2
    Vue.js support out of the box
  • 2
    VueJS support
  • 2
    Svelte support
  • 2
    Powerfull mobile services as part of Telerik Platform
  • 2
    Native ui with angular
  • 2
    Vue support
  • 1
  • 1
    Hot Reload
  • 1
    HMR via webpack
  • 1
    Very small app size
  • 1
    Write once, use anywhere
  • 1
    Easy to use, support for almost all npm packages
  • 1
    Rich ecosystem
  • 1
    Compile to Apple/Google Stores via CloudCompiler
  • 1
    Has CSS ;-)
  • 1
    It works with Angular
  • 1
    Code reuse with your website
  • 0

Sign up to add or upvote prosMake informed product decisions

Cons of Expo
Cons of NativeScript
    Be the first to leave a con
    • 5
      Lack of promotion
    • 1
      Slower Performance compared to competitors

    Sign up to add or upvote consMake informed product decisions

    - No public GitHub repository available -

    What is Expo?

    Exponent lets web developers build truly native apps that work across both iOS and Android by writing them once in just JavaScript.

    What is NativeScript?

    NativeScript enables developers to build native apps for iOS, Android and Windows Universal while sharing the application code across the platforms. When building the application UI, developers use our libraries, which abstract the differences between the native platforms.

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

    What companies use Expo?
    What companies use NativeScript?
    See which teams inside your own company are using Expo or NativeScript.
    Sign up for Private StackShareLearn More

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

    What tools integrate with Expo?
    What tools integrate with NativeScript?

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

    What are some alternatives to Expo and NativeScript?
    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.
    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.
    Create React Native App
    Create React Native App allows you to work with all of the Components and APIs in React Native, as well as most of the JavaScript APIs that the Expo App provides.
    Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android.
    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.
    See all alternatives