React Native vs Flutter - Which should you use?

Simon Grimm
16 Jul 202422:30

Summary

TLDRThis video script offers a detailed comparison between Flutter and Expo (React Native) for cross-platform mobile app development. It discusses the strengths and weaknesses of each framework, focusing on developer experience, UI components, language features, and performance. The script provides practical guidelines for choosing the right technology based on factors like existing knowledge, desired platform access, and specific project needs. It also explores the future of both frameworks, suggesting they will likely coexist, catering to different markets and use cases.

Takeaways

  • πŸ˜€ The video aims to help developers choose between Flutter and Expo (React Native) for cross-platform mobile app development by focusing on their strengths and weaknesses.
  • πŸ› οΈ Flutter, introduced by Google in 2017, uses Dart and offers a 'write once, run everywhere' approach with a strong developer experience and out-of-the-box UI components.
  • 🌐 Expo, built on top of React Native, simplifies the development process for React web developers and allows for easy integration of native modules and platform APIs.
  • πŸ” The script emphasizes the importance of considering specific project needs and developer preferences rather than general opinions when choosing a framework.
  • πŸ“ˆ Flutter's advantages include good performance, a rich set of UI components for rapid prototyping, and the use of Dart which offers features like null safety.
  • πŸ”§ Expo's benefits include ease of getting started, a large community, and features like code push which allows for over-the-air updates without app store approval.
  • 🚧 Flutter's downsides include complex widget trees that can lead to messy code, limited third-party libraries, and concerns about non-standard API interactions.
  • πŸ›‘ Expo's weaknesses are the lack of out-of-the-box UI components, a steeper learning curve, and potential issues with abandoned third-party packages.
  • πŸ”‘ The decision between Flutter and Expo should be based on factors like existing knowledge (Dart or React), the need for direct access to native APIs, the desire for pixel-perfect design across platforms, and the importance of performance.
  • 🌟 The video suggests that both frameworks will likely continue to coexist, catering to different markets, with Expo having strong backing from big tech companies and Flutter being favored in certain regions like India.
  • πŸ’‘ The presenter, who runs a React Native online school, shares a personal opinion that for most 'normal' applications, Expo might be a better choice due to the active community and future-proof technology.

Q & A

  • What are the two cross-platform frameworks discussed in the script?

    -The two cross-platform frameworks discussed are Flutter and Expo (which is a framework on top of React Native).

  • What programming language does Flutter use?

    -Flutter uses Dart as its programming language.

  • What are some of the advantages of using Flutter for app development?

    -Flutter offers an epic developer experience, a rich set of UI components for rapid prototyping, and good performance due to its own rendering engine. It also has integrated testing frameworks and null safety in Dart.

  • What is Expo and how does it relate to React Native?

    -Expo is a framework on top of React Native that simplifies app development and makes it easier to get started, especially for React web developers. It allows for the use of JavaScript, TypeScript, and JSX.

  • What are some of the strengths of React Native with Expo?

    -React Native with Expo allows for quick development start for web developers, easy integration of native modules and APIs, and has a large community with big players contributing to its ecosystem. It also supports features like code push for over-the-air updates.

  • What are some potential weaknesses of using Flutter for app development?

    -Flutter's weaknesses include the complexity of widget trees which can make the code messy, difficulty in performing non-standard API interactions, and limitations with web rendering. There is also a smaller community and fewer third-party libraries compared to React Native.

  • What are some potential drawbacks of using Expo for app development?

    -Expo's drawbacks include the lack of out-of-the-box UI components, a steeper learning curve, and potential performance limitations due to the JavaScript bridge. Debugging can also be challenging, and there may be issues with abandoned third-party packages.

  • What does the script suggest about the future of Flutter and Expo?

    -The script suggests that both Flutter and Expo have bright futures, with each catering to different markets and use cases. While Flutter is strong in performance and custom UI, Expo benefits from a vibrant community and the backing of major industry players.

  • What are some factors to consider when choosing between Flutter and Expo?

    -Factors include existing knowledge of Dart or React, the need for direct access to native APIs, the desire for a consistent UI across platforms, the need for rapid prototyping, and the importance of having a strong ecosystem and community support.

  • What is the speaker's bias regarding Flutter and Expo?

    -The speaker runs an online school for React Native and admits to being in love with cross-platform tools, starting with Cordova and Ionic. While they attempt to be unbiased, they express a preference for Expo and React Native due to the active community and the backing of major companies.

  • What is the speaker's final recommendation for most normal applications?

    -The speaker suggests that for most normal applications, Expo and React Native are better choices due to the active and vibrant community, ease of finding developers, and the support from big industry players.

Outlines

00:00

πŸ€” Cross-Platform Framework Decision Making

The script introduces the dilemma developers face when choosing between Flutter and React Native for building cross-platform apps in 2024. It emphasizes the importance of making decisions based on facts rather than personal biases, acknowledging the strengths and weaknesses of each framework. The video promises to guide viewers through a technical comparison, starting with basic facts, exploring the pros and cons, examining real-world app examples, and discussing questions to consider when choosing the right technology. The speaker also discloses their affiliation with an online school focused on React Native but asserts their intention to provide an unbiased comparison.

05:01

🌟 Highlighting the Strengths of Flutter and Expo

This paragraph delves into the advantages of both Flutter and Expo. Flutter is praised for its exceptional developer experience, rich UI components, and the Dart language's features like null safety. Expo, on the other hand, is commended for its ease of use, especially for React web developers, and its ability to integrate native modules and APIs. The paragraph also mentions the large community support for React Native and the benefits of features like code push, which allows for over-the-air updates without app store approval.

10:02

😞 Discussing the Weaknesses of Flutter and Expo

The script shifts to discuss the downsides of Flutter and Expo. For Flutter, this includes the complexity of widget trees, limited third-party libraries, and challenges with non-standard API interactions. It also touches on concerns about Google's history of deprecating projects and the non-native feel of Flutter apps. Expo's weaknesses are highlighted as the lack of out-of-the-box UI components, a steeper learning curve, and issues with abandoned third-party packages. Additionally, the paragraph addresses performance limitations and the difficulties of debugging in React Native.

15:03

πŸ” Practical Considerations for Choosing a Framework

The paragraph provides practical advice for choosing between Flutter and Expo based on various factors. It suggests considering prior knowledge of Dart or React, the need for direct access to native APIs, the desire for a pixel-perfect design across platforms, the necessity for a web version of the app, and the importance of fast prototyping. It also discusses the benefits of Expo for teams and the potential for better performance with Flutter, concluding with the recommendation to pick the tool that best fits the specific project requirements.

20:05

πŸš€ The Future of Expo and Flutter

In this paragraph, the script contemplates the future of Expo and Flutter, suggesting that both frameworks will likely continue to coexist and cater to different markets. It discusses the potential for React Native to improve with a new architecture and the ongoing support from major tech companies. The paragraph also speculates on Flutter's future, especially in embedded devices and with Google's backing, while acknowledging concerns about what might happen if Google were to abandon the framework. It concludes by emphasizing the importance of selecting the right tool for the job and the potential for both communities to learn from each other.

πŸ‘‹ Final Thoughts and Recommendations

The final paragraph wraps up the discussion with personal insights and recommendations. The speaker shares their belief that while Flutter has its place, for most applications, Expo and React Native are more suitable choices. They highlight the active community and the enjoyment of working with React Native despite some of its current drawbacks. The paragraph ends with an invitation for viewers to subscribe for more content on Expo and React Native and to check out the speaker's online courses for learning and app development.

Mindmap

Keywords

πŸ’‘Cross-platform framework

A cross-platform framework is a software tool that allows developers to create applications that can run on multiple operating systems, such as iOS and Android, from a single codebase. In the context of the video, the discussion revolves around choosing between Flutter and React Native, two popular cross-platform frameworks, for mobile app development in 2024.

πŸ’‘Flutter

Flutter is an open-source UI software development kit created by Google, first introduced in 2017. It uses the Dart programming language and provides a 'write once, run everywhere' approach. The video discusses Flutter's strengths, such as developer experience and UI components, as well as its weaknesses, including concerns over native feel and performance nuances.

πŸ’‘React Native

React Native is an open-source framework for building native apps using React, introduced by Facebook in 2015. It uses JavaScript and TypeScript and allows for a 'learn once, write anywhere' approach. The script mentions that Expo, a framework on top of React Native, is now recommended, simplifying the development process.

πŸ’‘Expo

Expo is a set of tools and services built around React Native that simplifies the process of building and deploying mobile applications. It is highlighted in the script as making it easy for developers, especially those with web development backgrounds, to get started with React Native app development.

πŸ’‘Dart

Dart is a programming language used by Flutter. It features advanced capabilities like null safety and an integrated testing framework. The video mentions that while Dart is not widely used outside of Flutter, it is a good language for developers who are comfortable with it.

πŸ’‘Performance

Performance in the context of the video refers to how well an app runs in terms of speed and responsiveness. It discusses that Flutter apps generally have good performance, with recent improvements like Impeller for iOS, although React Native is closing the gap, especially with the new architecture removing the bridge bottleneck.

πŸ’‘Native APIs

Native APIs are application programming interfaces provided by the operating system that allow an app to interact with the device's hardware and software features directly. The script points out that while both frameworks offer access to native APIs, Expo (React Native) provides a more straightforward way to access and integrate native modules and platform APIs.

πŸ’‘Code Push

Code Push is a feature that allows developers to update their application's JavaScript code on users' devices without having to go through the traditional app store release process. The video mentions Code Push as a significant advantage of using Expo, facilitating faster迭代 and updates.

πŸ’‘Prototyping

Prototyping in app development refers to creating a basic version of the app to test ideas and functionality. The script highlights Flutter's strength in this area, stating that its rich set of UI components allows for rapid prototyping, giving developers a quick start to building their app's interface.

πŸ’‘Ecosystem

The term ecosystem in the video refers to the collection of tools, libraries, and community support that surrounds a framework and facilitates the development, testing, and deployment of applications. The discussion includes the ecosystem strengths of Expo, which offers services like EAS for streamlined app updates and submission.

πŸ’‘Impeller

Impeller is a rendering engine introduced by Flutter to improve performance, particularly on iOS. It allows for more efficient use of the GPU to enhance rendering. The script mentions Impeller as a recent development for Flutter, suggesting potential future improvements in rendering performance.

πŸ’‘Community

The community refers to the collective of developers, contributors, and users who support and advance a framework. The video script emphasizes the importance of a strong community behind React Native and Expo, with contributions from major players like Meta, Microsoft, and Shopify, indicating a vibrant and future-safe environment.

Highlights

Flutter and React Native are both cross-platform frameworks, each with its own strengths and weaknesses.

Flutter offers an excellent developer experience with a smooth setup and a rich set of UI components for rapid prototyping.

Dart, the language used by Flutter, has features like null safety and an integrated testing framework.

React Native, with Expo, allows for easy onboarding of web developers and provides a more native feel with direct access to platform APIs.

Expo simplifies updates with features like code push, bypassing the traditional App Store process.

Flutter's widget-based approach can lead to messy code if not properly managed.

Flutter has limitations with non-standard API interactions and struggles with 3D or AR implementations.

Flutter's web support is considered inadequate and not recommended for serious web applications.

React Native's community is large and active, with big players contributing to its ecosystem.

Expo lacks out-of-the-box UI components, requiring additional styling or third-party libraries.

Learning React Native may be more challenging due to its complexity and the variety of packages involved.

Performance issues in React Native are being addressed with the upcoming new architecture and JSI.

Debugging in React Native can be difficult, and updates to apps can be a source of frustration.

Flutter's rendering engine ensures a consistent look across platforms, which may be beneficial for brand consistency.

Flutter's performance is generally good, but the latest React Native updates are closing the gap.

Expo's EAS services streamline the process of building, reviewing, and publishing apps.

The future of both Expo and Flutter looks promising, with each catering to different needs and markets.

Flutter's future is somewhat dependent on Google's support, which could be a risk if they decide to deprecate it.

React Native and Expo have a strong community and are likely to continue evolving with contributions from major companies.

The choice between Flutter and React Native should be based on specific project requirements and team expertise.

Transcripts

play00:00

you want to build a mobile app in 2024

play00:02

with a crossplatform framework but you

play00:03

don't know if you should use flatter or

play00:05

react native let me help you make

play00:07

decision based on effects not feelings

play00:10

each framework has its own pros and cons

play00:12

and the truth is you can build great

play00:15

apps with both so we need to dive more

play00:18

into differences and specific categories

play00:20

and nuances that separate flutter and

play00:23

react native throughout this video you

play00:25

will better understand where each

play00:27

approach shines or falls short and you

play00:29

will also be able to make your own

play00:31

reason choice in the end we will start

play00:33

with some quick basic facts and then

play00:35

dive into the strengths and weaknesses

play00:37

of both Frameworks after that we will

play00:39

take a look at some real app examples

play00:41

and finally talk about concrete

play00:43

questions you can ask to choose the

play00:45

right technology and of course

play00:47

recommendations when which approach

play00:49

works best however as Luke petti said in

play00:52

his reaction to Theos Rand about

play00:53

flutterer these are tools not Lifestyles

play00:57

so please consider this a technical

play00:59

discussion and please stay away from

play01:01

pre-made assumptions and radical

play01:04

opinions what's that ominous glow in the

play01:08

[Applause]

play01:14

distance first of all because Expo is

play01:17

now the recommended framework for react

play01:19

native I might change react native for

play01:21

Expo in this video every now and then

play01:24

but both flutter and Expo or react

play01:26

native are open source Frameworks for

play01:28

creating crossplatform apps we're not

play01:30

going into a ton of technical details at

play01:32

this point just really setting a

play01:34

baseline so what is flutter it was

play01:36

introduced 2017 from Google it's using

play01:40

Dart as the language and it follows a

play01:42

right on run everywhere approach what is

play01:45

Expo it is a framework on top of react

play01:47

native which started in 2015 at Facebook

play01:50

and no matter it's using JavaScript and

play01:52

typescript and jsx and it has a learn on

play01:55

VAR everywhere approach so you've most

play01:58

likely heard all the other General

play01:59

effect so instead of reiterating all of

play02:03

them we will talk about the really

play02:05

important stuff but before with that a

play02:07

quick disclaimer I run an online school

play02:09

called galaxies dodev where I help

play02:11

developers learn react native but I've

play02:14

always been in love with crossplatform

play02:15

tools starting with cover and ionic in

play02:18

the past I tried flut and react native

play02:20

and EP studio and whatnot so I will try

play02:24

to make this discussion as unbiased as

play02:28

possible all right let's kick off this

play02:29

disc discussion on a positive note by

play02:31

talking about the strength first so what

play02:34

are the most obvious things that make

play02:36

these Frameworks great from the outside

play02:38

for flutter this is definitely an epic

play02:41

developer experience if you have tried

play02:43

it if you come to flutter and set up

play02:44

your first application it just works

play02:46

really really smooth and you instantly

play02:49

get something really cool in your

play02:51

application which is also related to the

play02:54

UI that you get out of the box in

play02:56

flutter applications there are so many

play02:58

components you can drop into your appc

play02:59

appliation which makes prototyping and

play03:02

building an app really really easy and

play03:04

fast on top of that Dart is a language

play03:06

that's actually pretty cool it has null

play03:08

safety and there's a testing framework

play03:11

integrated so Dart isn't a bad language

play03:13

it's just that it's not really used a

play03:15

whole lot but if you're okay with using

play03:18

Dart then it's a good language and

play03:20

probably people going to like it more

play03:21

than JavaScript on top of that flatal

play03:24

applications usually have a good

play03:26

performance we're going to get more into

play03:28

performance and the nuances here and

play03:29

there but overall you're going to see

play03:31

that usually flutter apps might perform

play03:33

a bit better in some statistics Expo on

play03:36

the other hand makes it really really

play03:37

easy to get started because pretty much

play03:40

every react web developer can build

play03:42

react native apps in a matter of like

play03:45

hours that was easy on top of that you

play03:48

get real native feeling more on Native

play03:50

stuff later and you can easily integrate

play03:53

native modules and all the platform apis

play03:55

within react native applications on top

play03:58

of that finding Developers for react

play04:00

native should be an easy task because

play04:01

every react web developer can quickly

play04:03

upscale into that position and on top

play04:06

you got cool things like code push which

play04:08

allows you to update your application

play04:10

without going through the App Store

play04:12

process and the react Community is just

play04:14

Epic Big players like meta or Shopify

play04:17

are actively contributing to different

play04:19

packages and therefore help pushing

play04:21

react native forward okay so all of this

play04:24

sounds really good Simon but what really

play04:26

does suck about flutter and Expo okay

play04:29

let's talk about about some weaknesses

play04:30

now let's begin with flutter first of

play04:32

all you're going to see people complain

play04:34

a lot about the widget trees everything

play04:36

in flutter is a widget and your code can

play04:38

get really messy if you don't know what

play04:40

you do yes you can split this up but

play04:42

overall in many application this looks

play04:44

really horrible then we got stuff like

play04:46

non-standard API interaction yes you can

play04:49

use the camera and most of the Native

play04:51

stuff but if you want to do 3D or AR

play04:54

stuff with flutter then you're going to

play04:56

have really really hard time on top of

play04:58

that web can rendering with flutter are

play05:01

you serious do we even have to talk

play05:02

about that flutter for the web is just

play05:05

something you really don't want to do

play05:06

we've spoken of the good community in

play05:08

react native well there are packages for

play05:10

flutter but there's really a limited

play05:13

number of 30 party libraries available

play05:16

and it might be hard to find the right

play05:18

package and if it's not there good luck

play05:20

you're on your own one thing I found

play05:22

online was about nontraditional API

play05:24

interaction with flutter that was a nice

play05:26

quote God help you if you decide to use

play05:28

a flutter front end with anything like

play05:30

trpc or graphql it's just a living

play05:33

breathing nightmare I can't confirm this

play05:35

exactly but I agree that FL is built so

play05:38

you use something like your own API uh

play05:41

standard rest API or Firebase with it

play05:44

also if you look at comparison you're

play05:46

going to find Less jobs for flut if

play05:48

you're interested in getting a job that

play05:50

might be a key argument the community is

play05:52

smaller and dart is really only used for

play05:54

flut I I don't know if anyone else using

play05:57

dart on the server are you serious I

play05:59

haven't seen that before and of course

play06:01

Google is behind flutter and dart so we

play06:04

all know Google's history of deprecating

play06:06

things and last but certainly not least

play06:09

flutter is not native we could probably

play06:12

make a whole video on the topic that

play06:14

flut is not native but you can usually

play06:16

spot flutter applications they just draw

play06:19

Pixel Perfect animations and stuff on

play06:21

the screen but they are not embracing

play06:24

the native platforms that is an

play06:26

important distinction here between

play06:28

flutter and react native so if you're

play06:30

using flut it doesn't take advantage of

play06:33

all the things that the Android

play06:35

engineers and the Apple Engineers have

play06:37

done over the last like 10 or 15 years I

play06:40

know flutter has great performance and

play06:42

with impella which improves um uh the

play06:45

rendering especially on iOS I think at

play06:47

the moment I think it's not on Android

play06:48

yet it will use more of the GPU to

play06:50

enhance that stuff but still again it is

play06:54

not native weaknesses of Expo of course

play06:57

there are weaknesses there is no UI out

play06:59

of the box there are like no components

play07:01

you probably got like a button and maybe

play07:03

an unside label but that's it so if you

play07:06

want to build react native applications

play07:08

you have to do a lot of styling or find

play07:10

some component library but that's once

play07:12

again another story then also the

play07:14

learning core seems to be a bit harder

play07:17

so there's more to learn initially about

play07:19

react native and how to build your

play07:21

applications then there are a lot of

play07:23

problems related to um the general

play07:26

problems of web development kind of like

play07:28

there's the fatigue of all the packages

play07:31

there are abandoned third party packages

play07:34

you find something then you see the last

play07:35

commit from 5 years ago and you know oh

play07:37

I'm on my own here and all this

play07:40

stuff just leads sometimes to confusion

play07:42

and just spending a whole day on like

play07:44

making no progress at all then in the

play07:47

past we also had performance limitations

play07:49

due to the bridge in react native

play07:51

applications so communicating between

play07:53

JavaScript and your native code was

play07:55

through a bridge and that was always a

play07:57

bottleneck this is going to get better

play07:59

with the new architecture coming soon to

play08:01

react native and JSI but still there

play08:04

might be some limitations and especially

play08:06

for all the applications these

play08:08

limitations will still exist some other

play08:10

General problems are just debugging with

play08:12

react native is absolutely no fun and

play08:15

you're going to see this in a lot of

play08:16

Statistics people hate uh updates to

play08:18

Applications although Expo is making

play08:21

this a lot better um but overall you're

play08:23

just going to experience the pain of

play08:25

modern Web projects as I said with all

play08:27

the different packages with abandoned

play08:29

package

play08:29

and also it's evolving at rapid speed so

play08:33

you might be 5 10 versions behind if you

play08:36

don't watch out for updating application

play08:38

and then we come back to updating is

play08:40

challenging okay these were some general

play08:42

strength and weaknesses of both flutter

play08:44

and Expo but I have a note that these

play08:47

things can actually be good and bad at

play08:50

the same time so how's that possible

play08:52

well take a look at the freedom of

play08:54

choice in react native projects many

play08:56

people value this people use Linux over

play08:59

windows or mag because they want freedom

play09:01

but on the other hand some people want

play09:03

guidance so having this freedom in react

play09:05

projects is a good thing but can also be

play09:08

seen as a bad thing same for rendering

play09:10

to Native components if you use a button

play09:12

with a react native it will render to

play09:13

the iOS native button and the then right

play09:15

native button but do you really want

play09:17

that is that a good thing in your

play09:19

project or might it be a bad thing so

play09:21

you have to consider these things same

play09:23

is true for flutter flutter applications

play09:25

look exactly the same on Android and iOS

play09:27

that could be a good thing or could be a

play09:29

bad thing depending on what you actually

play09:31

want or that flasher is really

play09:33

opinionated maybe this is cool because

play09:35

it's giving your project a structure or

play09:37

maybe you feel limited by that opinion

play09:39

so you see there's no one siiz fits all

play09:42

solution but we're going to talk more

play09:44

about some guidelines let's look

play09:46

actually at some example applications if

play09:49

you want to try out some flut

play09:50

applications I highly recommend you

play09:51

check out the Showcase of the flutter

play09:53

page you're going to find some uh

play09:56

applications using flutter and of course

play09:58

also some showcases

play09:59

I it was really cool to see supercell

play10:01

using this for their internal platform

play10:03

so not for all the supercell games uh

play10:06

but this internal platform was developed

play10:08

with flutter I'm a big fan of Clash of

play10:10

Clans so uh yeah that's pretty cool to

play10:12

see but on the other hand uh the best

play10:15

thing might be to actually check out an

play10:17

application so I actually downloaded

play10:19

this my BMW app I don't own a BMW so I

play10:22

can't use it uh let me just click one

play10:24

thing Discover at benefits so if you now

play10:28

notice something that felt off then you

play10:31

might actually favor react native um if

play10:34

you didn't feel something bad then okay

play10:36

it's cool but usually uh as an iOS user

play10:41

I will feel that this transition doesn't

play10:43

feel native at all to me um but they're

play10:46

actually pretty good applications for

play10:48

example this is the wondrous application

play10:50

and I think this is an epic application

play10:53

you see all the things going on here the

play10:56

transitions this looks really good and

play10:59

this is a lot better experience it is

play11:02

probably it is very far from a

play11:05

traditional Native application because

play11:06

there's so many special things going on

play11:08

and it is really performing uh in all

play11:10

the things going on in this application

play11:12

so check this out as a great showcase

play11:15

for flat room on the other hand you can

play11:17

check out a lot of applications built

play11:19

with Expo so here are a lot of stories

play11:23

about companies using Expo and of course

play11:26

also there's the react native showcase

play11:29

um where apps listed using react native

play11:32

you're going to find a lot of big names

play11:34

in here and finally Evan bacon did put

play11:37

together a nice uh list of apps using

play11:40

Expo in oper uh OSS in 2024 things like

play11:44

Discord coinbase um NFL huge

play11:49

applications are built using either

play11:50

react native or both react native and

play11:53

Expo uh I also made a video about all

play11:55

the best applications using this so you

play11:57

can check this out once once again let's

play11:59

take a look at an actual application so

play12:02

this here is the um this should be the

play12:05

Tesla application I don't own a Tesla

play12:08

but this application shows you all the

play12:10

things it has really great Snappy

play12:12

performance whenever I click something

play12:14

it just works I can play around it is

play12:17

instantly uh and this is the sort of

play12:19

stuff that you can build with react

play12:21

native all right so until now we've seen

play12:23

a lot about the basic facts we've seen

play12:26

some strength and some weaknesses for

play12:27

both flutter and Expo we've also seen

play12:30

some app examples now let's get even

play12:33

more practical do you have previous

play12:35

react or Dart knowledge that is a nice

play12:38

indicator if for some reason you have

play12:40

Dart knowledge you might favor flatter

play12:42

if you already have a lot of react

play12:44

libraries built internally then react

play12:46

native is The Logical Choice do you want

play12:48

to access native platform apis directly

play12:52

in that case go with Expo the reason is

play12:54

simple with flatterer yes you can use

play12:57

some of the Native apis where flutter

play12:59

has built a wrapper around this but if

play13:02

you want anything beyond that then with

play13:04

Expo you can easily drill down onto that

play13:07

level and access native apis directly

play13:09

yourself do you want a Pixel Perfect

play13:11

Design across multiple platforms then go

play13:14

with flutter with react native it

play13:16

renders to Native components but with

play13:18

flutter you can make sure that your

play13:19

brand and app experience looks exactly

play13:22

the same on all platforms because

play13:24

flutter is using this Sky rendering

play13:27

engine or impeller now on iOS which

play13:29

draws exactly pixels on a canvas so you

play13:33

can make sure it looks the same across

play13:35

all platforms do you want a web version

play13:37

of your application as said before the

play13:40

output of flutter web is really a joke

play13:42

and you don't want to use that but with

play13:44

Expo with Expo router and all things

play13:46

coming for universal applications web is

play13:49

a first class citizen in react native

play13:52

applications today do you want to

play13:54

prototype really fast then go with

play13:56

flutter I said at the beginning flutter

play13:58

comes with tons of UI components out of

play14:00

the box so if you're just getting

play14:02

started you can throw in some stuff and

play14:05

in a matter of like 2 or 3 hours you're

play14:07

going to have a really good prototype of

play14:09

your application whereas with Expo and

play14:11

react native you're usually lacking

play14:13

these UI components do you want to use

play14:16

code push then use Expo for flatter

play14:18

applications there's actually no such

play14:20

thing as code push because these

play14:22

binaries work differently with react

play14:24

native and Expo you can simply replace

play14:27

the JavaScript part of your bundle over

play14:29

over the air and update your

play14:30

applications without waiting for Apple

play14:33

or Google to review your application do

play14:35

you plan to have a team of developers

play14:37

then use Expo you're going to have a lot

play14:39

easier time finding react developers or

play14:42

react native developers than if you're

play14:44

looking to build up a team of Dart and

play14:46

flutter developers do you want the best

play14:48

performance then flutter might be your

play14:51

choice although react native is very

play14:53

close up especially with the new

play14:55

architecture and uh removing that bridge

play14:57

bottleneck it's going going to be

play14:59

probably the same however in some

play15:01

statistics you're going to see flutter

play15:03

at the top and if you really care about

play15:05

like getting the last bit off

play15:06

performance of your application then

play15:09

maybe just go for a native application

play15:11

instead do you want an ecosystem of

play15:13

tools to create review publish submit

play15:16

your application then go with expo Expo

play15:20

has the application Services EAS which

play15:22

makes incredibly easy to just push an

play15:25

update and then your app will be built

play15:27

in the cloud submitted to to Apple and

play15:29

Google and you can directly release it

play15:31

with basically just a click on top of

play15:34

that things like Expo Atlas reviewing

play15:36

PRS and directly uh putting an

play15:39

application from your colleague on your

play15:41

phone is just amazing with Expo so Expo

play15:44

is really focused on iteration speed and

play15:46

makes this part A whole lot easier do

play15:49

you want a future safe technology with

play15:51

an active Community then go with Expo as

play15:55

said before players like meta Amazon

play15:58

Shopify many more contribute actively to

play16:01

different things like uh react native

play16:03

for Mac react native windows so if you

play16:06

want to bet on a reliable technology

play16:08

where big players are involved then

play16:11

react native and Expo are your choices

play16:13

because with flutter if Google abandons

play16:15

flutter for some reason at some point

play16:17

you're going to be pretty much on your

play16:19

own the community is great but it's not

play16:21

as active as the react native Community

play16:24

all right so these questions should

play16:25

already point you somewhat in the right

play16:27

direction but let's get even more

play16:29

precise with some guidelines so you

play16:32

should pick Expo when you already have

play16:34

react experience or code in your company

play16:37

when you want to build a web and a

play16:38

mobile application from the same code

play16:41

base when you want to use native

play16:42

platform apis and components when you

play16:45

want to build fullstack applications

play16:47

with the same technology on the API side

play16:50

when you want to access the latest

play16:52

native platform apis that Google and

play16:54

Android release when you plan to work

play16:56

with different apis like trpc or graph

play16:58

ql and when you need code push in your

play17:01

application you should pick flutter when

play17:04

you already have Dart knowledge or

play17:06

developers in your company you want to

play17:08

prototype very fast you want to build

play17:10

more custom app experiences probably

play17:13

even closer to games you want the exact

play17:15

same UI on all the platform where your

play17:18

app runs you want to also focus on

play17:20

desktop or especially embedded devices

play17:23

all right so let's wrap it up with some

play17:25

final thoughts about the future so what

play17:27

does the future hold for for Expo and

play17:29

flutter U will one framework Dominate

play17:32

and win like most videos and articles uh

play17:35

make you think the statistics might make

play17:37

it look like flutter is currently more

play17:39

popular but react still dominates the

play17:42

market especially in Western countries

play17:45

and companies just reuse their code and

play17:47

skills and many of these companies have

play17:49

over the last years developed their

play17:51

websites with react so traditionally

play17:54

they will go for react native over the

play17:56

next time on the other hand you see that

play17:58

flutter is really popular in countries

play18:00

like India and I talked to people from

play18:01

there and they told me that Google

play18:03

invests a lot into education in

play18:05

countries like India so it's just

play18:07

natural that the flutter adoption is a

play18:09

lot higher there compared to other

play18:11

countries most likely both will simply

play18:14

continue to coexist and cater different

play18:16

markets as we've outlined before there

play18:19

are a lot of things for Expo there are a

play18:21

lot of things for flutter so you can

play18:23

select which fits your situation best

play18:26

the future for Expo looks really great

play18:28

react native is powered by the Community

play18:31

Players like meta Microsoft Shopify

play18:33

Netflix Sony they all contribute and

play18:35

react native is heating for version one

play18:37

maybe because we're actually still not

play18:39

on version one uh but overall we're just

play18:42

going to have a better architecture no

play18:44

more Bridge no more bottleneck and I

play18:46

think developing apps crossplatform apps

play18:49

with react native will be sort of a

play18:51

standard in the future on the other hand

play18:53

flutter brings out impella for iOS I

play18:56

don't know if this is also coming to

play18:57

Android for Improv rendering but of

play18:59

course they will continue to build out

play19:01

their like performance gains on these

play19:04

platforms however flusher is also really

play19:07

really strong on embedded devices so

play19:10

probably going to see more flutter or D

play19:13

Target these devices in the future and

play19:15

they of course have uh Google in the

play19:18

background so whether it be the gemin

play19:20

API or things like Firebase that you can

play19:22

easily plug into your application they

play19:24

will probably also double down on all

play19:26

the things that you can embed with

play19:29

Google in flutter applications a lot

play19:31

easier but one quote that made me think

play19:34

about flutter was that flutter has

play19:36

little to zero backing Beyond Google if

play19:38

Google dropped it tomorrow it would die

play19:41

very quickly I don't know if this is

play19:42

really the case but it paints a very

play19:45

dark picture of someday where Google

play19:47

just thinks ah we don't need this

play19:48

flatter thing anymore I don't see this

play19:51

day coming anytime soon because they

play19:52

using it in a lot of their interal tools

play19:54

like Google pay or whatnot so this day

play19:57

might be far off in the future but both

play19:59

Expo and flutter have a bright future uh

play20:02

I think both communities can actually

play20:04

learn from the other things that flutter

play20:06

made great are coming to react native

play20:08

for example react native has skia and

play20:11

the rendering can be used to draw on

play20:13

there William cillan did a great job in

play20:15

bringing skia to react native and on the

play20:18

other hand maybe flatter will have code

play20:20

push one day if they figure this out or

play20:22

they adopt some other patterns from the

play20:24

react native world to render components

play20:26

in a better way but overall I just think

play20:29

that both will simply invest into the

play20:31

areas where they Shine the most so of

play20:34

course all of this comes down to picking

play20:37

the right tool for the right job and I

play20:39

hope this video gave you enough input to

play20:41

make your own best possible Choice based

play20:43

on the strength and the weaknesses and

play20:45

the Epic samples that we've seen and try

play20:47

to make this as unbiased as possible

play20:50

from someone running a react native

play20:51

online school however I generally think

play20:54

that there's only a fraction of

play20:55

applications where flut really makes

play20:58

sense and I think for most noral

play21:00

applications you are far better off with

play21:02

using Expo there was a great quote that

play21:04

I found that said developers use flutter

play21:07

companies use Expo and I feel there's a

play21:09

truth in this if you go through YouTube

play21:11

and I did a lot of research you're going

play21:13

to find a lot of comments Pro flutter

play21:15

and people screaming flutter is the

play21:16

future the trend is your friend

play21:18

everything is great about it but if you

play21:20

look at the reality if you look at the

play21:22

job market if you look at big companies

play21:24

they are all using Expo and react native

play21:27

yes there are some exceptions if you're

play21:28

a solo developer or an agency you can

play21:31

build really shiny applications with

play21:32

flutter but overall for me the upsides

play21:36

of react native just dominates and we

play21:38

got the active Vibrant Community behind

play21:40

Expo and react native that's just making

play21:42

it feel like you're at home and it's

play21:45

just fun to work with react native yes

play21:47

there are things like debugging that

play21:48

maybe suck but these can be improved in

play21:51

the future but the foundation of react

play21:53

native and Expo is to me a lot more

play21:55

enticing than what flutter does with it

play21:57

pixel per rendering so definitely make

play22:00

sure you subscribe to the channel if you

play22:01

want to learn more about Expo and react

play22:03

native and of course check out my Pro

play22:05

courses on galaxies. Def to learn and

play22:08

ship apps faster oh and if we want to

play22:10

see something more practical I will pin

play22:12

a video up here on some companies using

play22:14

react native for their applications so

play22:17

go check that out and I will catch you

play22:18

in the next one so until then Happy

play22:20

coding Simon

play22:25

[Music]

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
FlutterReact NativeCross-PlatformMobile AppsDevelopmentUI ComponentsPerformanceDartJavaScriptExpoFrameworks