Conf42 Platform Engineering 2024 - Online

- premiere 5PM GMT

Cross-Platform Development from the Perspective of the Native Mobile Developer

Video size:

Abstract

Join Dmitry, a seasoned iOS developer, as he shares his thrilling journey into cross-platform development with Yandex. Discover the challenges, advantages, and real-world insights of using Flutter, and explore other cross-platform options.

Summary

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.
...

Dmitry Taraev

Flutter Developer @ Quadcode

Dmitry Taraev's LinkedIn account



Join the community!

Learn for free, join the best tech learning community for a price of a pumpkin latte.

Annual
Monthly
Newsletter
$ 0 /mo

Event notifications, weekly newsletter

Delayed access to all content

Immediate access to Keynotes & Panels

Community
$ 8.34 /mo

Immediate access to all content

Courses, quizes & certificates

Community chats

Join the community (7 day free trial)