Transcript
This transcript was autogenerated. To make changes, submit a PR.
Hi, everyone.
My name is Dmitry Tarayev.
I'm currently a Flutter developer at Quadcode.
today I would like to speak about Flutter versus native app development.
From a point of view of a former native mobile app developer, that's me, I used
to develop for iOS, and then I switched to cross platform framework Flutter.
So today, first, I'll speak a little about myself.
Then I'll speak about Flutter in general, the problem, the pros and cons of Flutter.
Then we'll do a quick technical comparison of Flutter and iOS.
I'll also speak about my practical experience using Flutter and, then
what alternatives there exists and summary about my experience.
Okay.
A few words about myself.
My name is Mithut Tarayev.
I used to be an iOS developer.
I took part in one of the biggest music apps in Russia, which is VK music.
And a few other projects in VK.
And a big part of my career was also in teaching.
I taught a few courses on app development in Moscow State Technical University.
I did an iOS development course.
And then when I switched to developing using Flutter, I also did some
teaching at Moscow State University and a lecture in Apollos University.
I switched in 2019 and my first big project was Yandex pro it's
a driving app, for Yandex taxi.
So that's the app used by drivers, but not only drivers also by
couriers, which bring food like Uber, Uber eats something like that.
So it's, an app useful used by drivers and couriers.
and the team was really huge.
I was a part of big team, but after that I joined a startup.
it's called blush.
The idea was to make a AI dating, simulator.
So that's what we did.
Here's a few screenshots and a QR code to the,
so what is Flutter?
Flutter is one of the frameworks for cross platform mobile app
development, made by Google.
It uses Dart programming language and it, and these projects made using Flutter can
be built into several major platforms.
major mobile apps, Android and iOS, as well as web and desktop.
you could ask me, why do we need cross platform?
There's already iOS, Android, and there are lots of
developers who are used to them.
But in many cases, it may be more cost efficient and convenient to develop a
cross platform app because it's faster.
not two times faster because you're making one app, but still
significantly faster than two separate apps, developing two separate apps.
Then also, because of that, it's cheaper, it requires less developers.
It's a bit more difficult to find developers, but comparing
to the native app development, but still it's not too difficult.
And considering quality, it works reliably, but the app might
look a bit different from the native apps, especially in iOS.
And, it might be important depending on what app you're doing.
So from the developer point of view, what do we get when we use Flutter?
We get hot reload and hot restart, which is super convenient options.
when you're making an app, you have to rebuild the project many, times when you
make changes, but having hot reload and, it, it makes almost instantly, you just
save it and it hot reloads and you see the changes, when you change the color
of widgets or change phones, this type of thing, or do you change the layout?
For bigger changes, it might require to do a hot restart, which might
take few minutes, a few seconds, but it's not too long as well.
So it, reduces the, time it takes to do the rebuild.
So you don't need to do complete rebuilds of the projects that often.
So it also, while you lay out, widgets and flatter, it uses declarative ui.
and it's, it looks quite simple.
It looks very nice and it's much more easier than doing layout in code in iOS.
At least it used to before, SwiftUI, came into view.
And from architectural point of view, it's also quite convenient.
It's very easy to modularize the app.
and make each feature in different module or different components and you
can reuse them in different parts of the app or even in different projects.
so from the technical point, you can see, like the difference between
declarative and imperative approach.
on the left, we have declarative approach.
On the right, we have imperative approach, which is used, which
was used in iOS before SwiftUI.
And here on the left, it's how it's done, like the text view, how it's
shown in Flutter, which looks very nice and clean and, easy to use.
Another big part of Flutter is that everything is widgets.
You have a huge collection of widgets using which you can customize them,
you can use them to make your own app.
few other like technical things.
Dart works in a single thread.
But there are ways to make, to execute code on other threads using isolates.
And also it's very convenient to work with asynchrony using async await calls.
It's, very well done and it's very easy to use.
If we look at Flutter pros from a product owner's point of view from
a product, what we get if we use Flutter comparing with native apps.
It is faster, as I said before, like you make only one app, use a single
code base instead of two separate apps.
So it requires less developers and it's cheaper.
and as I said, we have a single code base, so that gives us an opportunity to
have releases on both platforms at the same time, and also the versions would
be the same, which can be a problem if you have, native apps and Each
native app is developed by a separate team of iOS and Android developers.
But as always, there are some drawbacks from using Flutter.
for a developer, one of them is obvious is that you have to learn
a new framework and a programming language, but that's just life.
then there is a smaller demand for Flutter developers on the market.
And it's not enough to only learn about Flutter development.
You also have to be very familiar with platforms, ideally both
platforms, at least one iOS or Android, because sometimes you have
to get deeper into the platform code.
For example, if there's, some SDK you want to use and SDK only exists
for iOS and Android, and you need to use it in your Flutter app, you
have to write to the plugin, which.
just, uses that SDK on both platforms.
It is obviously possible and it's not too difficult, but you have to
understand how the platforms work.
You might experience some strange bugs, which are associated with a
release of new versions, Android or iOS, mostly iOS or a new Xcode.
As iOS is decay, and as I said.
You there might be missing the SDKs you need so you have to make a plug
in yourself, but there is a huge amount of Already made plugins.
So you might find the one you need and not make it yourself
from a product point of view The app It might be a disadvantage that
the app can look different from the native apps Especially on iOS,
scroll can feel different or some UI might feel different from the
like typical UI, which is used, which the users are used to on iOS.
Also, I've experienced some problems with animation lags, but
there are ways to overcome them.
And, I think this shouldn't be an issue nowadays.
And also there are not too many Flutter developers, so it might be
easy, not be so easy for you as a, for example, for a startup or a big
company to find, good developers.
and some of my views in, for, situations where you should or shouldn't use Flutter.
I think you, it's ideal for quick MVPs.
Or the app that should look the same on both platforms.
And also keep in mind that you have free web with it.
So the app can be built for web 2 or desktop apps if you need them.
And probably a few situations when you shouldn't use Flutter or
consider it really thoughtfully.
for example, if you already have a native app.
iOS or Android, and you need to do an app for the second platform.
And for example, you already have like native app developers.
So that may, it might be a case where you don't need to rewrite
all the apps, using Flutter.
but I do have a successful experience of switching to Flutter in such cases.
And there are two cases I've experienced.
There is a requirement for the app to look exactly like a native
iOS app, like to follow all the Apple human interface guidelines.
so it might be very difficult and maybe even impossible to
make such an app using Flutter.
So about the practical experience I've had, implementing Flutter.
The first was Yandex Pro, as I said, that's the app for drivers and queries.
I joined the team in 2019.
Actually, it was the new team Hired to do the iOS app, but it wasn't
we had like long deadlines and We decided to try the cross platform.
We tried the React Native first, but we had some problems, with our security,
department and they said not to use it.
And we decided to try Flutter instead and all the team really enjoyed using it.
And, eventually the decision was made that we should use it in this prospect of.
Replacing the former native Android app.
in 2020, we released the app with the basic functionality for iOS.
And the native app for Android still existed and still was, developing.
Because we couldn't just stop development for Android apps.
It was used by, I don't know, like thousands and thousands of users.
So we couldn't stop it.
so our goal was to catch up with the native app's functionality.
And at the time there was also new functionality being developed, so it was
developed simultaneously for the native Android app and for our Flutter app.
And while doing that we wrote few plugins for SDKs that we needed,
the map, Yandex Map SDK, which was,
biggest part of the app probably.
And, because it's on the main screen and there's so many functionality in that map.
Routing, different points, different layers, everything.
There are so many things there, camera, audio, Bluetooth, these types of things.
They were, the SDKs that we used and we had to write plugins for them.
And eventually in 2022, we managed to switch to a single code base.
So we caught up with the native apps functionality on Android and.
At one point that Android app was replaced in, Google play, by the
new Flutter app built for Android.
So for the users, it was just like update, but for us, it was a huge
change and it was really successful.
my second experience was with a much smaller project.
We had a smaller team.
It was three people.
And in the previous project, it was up to, I think about 40 developers.
So it was a huge project.
This was much smaller.
I came, I was the second in the team.
so the situation we had was opposite to the one we had, I had
before, so we had a native iOS app.
And we had no Android app yet.
And we began writing an application in Flutter with the
idea to replace the iOS app.
And initially we just built it only for Android and we were
going and trying to catch up with the native app functionality.
So in 2023, we released our Android app.
And, after that, we still continue to develop new features for both
for the native, iOS app and for the Flutter app built for Android.
And only in the beginning of 2024, after all the holidays, we came to the
point where we migrated the iOS users to the new Flutter app built for iOS.
Which wasn't that easy because, the initial, the, native iOS app
was built using Firebase, database.
And there was a lot of stuff saved locally and it doesn't, didn't use
any backend, so that was quite a task, but we finished it and nowadays the,
blush app, if you download it, it's the same app on iOS and Android built on
Flutter, And it was really successful.
So let's look at the few cross platform options that we have.
This is quite a recent chart and Flutter seems to be the most popular nowadays.
the React Native is very close.
and briefly I mentioned like few other options.
So we have Flutter.
Then there's Cordova and Ionic, which use HTML, CSS, and JavaScript.
Then there's React Native, which uses native widgets with wrappers
while Flutter uses Skia engine.
And in React Native, it uses JavaScript virtual machine, while
in Flutter, we have binary code.
And.
But React Native might be very useful because, you're writing
JavaScript and there's much more JavaScript developers than there
are Flutter developers, obviously.
but potentially it might have a lower performance and some
security issues because it's a JavaScript virtual machine, right?
Especially on iOS.
then there is also Kotlin multi platform, which is growing
and it looks very promising.
I just had a brief view on what they offer.
And then there is Formal Xamarin, which, now switched to NET MAUI.
It's not very popular yet, but it also doesn't look too bad.
concluding my speech, I would say that I've had a very
positive experience with Flutter.
It successfully replaced native apps, both in a huge project and, with a
huge team of developers, and then also with a smaller app and a small
team, the, framework, growing, is growing and, it's being supported
and it's being more and more popular.
and there is a huge market for cross platform development, using it for
MVPs, for startups, and you can even use it in huge and very complex apps.
I know this is a recorded speech, but if you want to, if you have any questions
about my experience, about Flutter in general, you can text me on Telegram,
and email me, or text me on Twitter.
Oh, there is also a link, a QR code for my LinkedIn.
So welcome to join, and send me a text.
Thank you for your time.