Summarify.net

Building a Mobile App in 2024: The BEST Technologies

NMb4RDpbRXs — Published on YouTube channel Dan Ilies on June 30, 2024, 9:35 AM

Watch Video

Summary

This summary is generated by AI and may contain inaccuracies.

- There are at least five different technologies to use to build a mobile app and it's difficult to choose one either for building the app or for making a career out of it. In this video, Dan goes through all the options. - Speaker A introduces the technologies that Apple and Google made available for developers to build apps for iOS and Android and introduces the new framework for building UIs in native iOS apps, Swiftui. - Speaker A introduces Java and then moves to Android where there is Kotlin as the main programming language. He recommends Kotlin to make Android apps and introduces the tools and features of Kotlin. Then it is time to move to the world of cross platform frameworks and apps. - React native allows us to create mobile apps using JavaScript and the React library. It offers both a native fill and a shared codebase. On the UI side, react native bridges the gap between JSX and the native components. - Speaker A introduces expo to the audience. Then they move to Flutter, one of the most popular cross platform frameworks of today. It is known for its highly customizability and for its fast rendering. - Kotlin multiplatform allows developers to reuse the business logic side of the code across different platforms. It provides a good balance of code reusability and that native experience for the user.

Video Description

In this video, we dive deep into the top technologies for building mobile apps in 2024 ๐Ÿ“ฒ

No matter if you're an experienced developer or just starting out, you'll discover the best options for both native and cross-platform app development ๐Ÿง‘โ€๐Ÿ’ป

Weโ€™ll explore the programming languages, UI frameworks, and tools you need to know, along with the pros and cons of each approach โš–๏ธ By the end of this video, you'll have a clear understanding of all the options you have for building amazing mobile apps.

That being said, if you're a developer who cares about your career and the apps you build, subscribe and follow along โœŒ๏ธ I'm preparing new videos and content all the time, not only here, but also on:

MY OTHER SOCIALS:
๐Ÿ“ธ Instagram: https://www.instagram.com/mobiledevlife/
๐Ÿ‘จโ€๐Ÿ’ป LinkedIn: https://www.linkedin.com/in/danilies/
๐ŸŒŽ Website: https://mobiledev.life
๐Ÿ’ฌ Skool: https://www.skool.com/mobile-developers-hub-5973/about

WATCH NEXT:
๐Ÿ“ฒ Native vs. Cross-Platform Mobile Apps: https://www.youtube.com/watch?v=iQ_0liFR2wA
๐Ÿง‘โ€๐Ÿ’ป Building an App in 2 Days with AI: https://www.youtube.com/watch?v=P_ZWMfokA2Y
๐Ÿ™‹โ€โ™‚๏ธ Short intro of this channel, myself, and what you can learn from here: https://www.youtube.com/watch?v=xv4i2_-LUgY

๐Ÿ•— Timestamps:
0:00 Mobile Apps Now vs. 10 years ago
0:20 What's in this video
0:57 Short intro - who am I?
1:11 Native Apps
1:25 - Native iOS
3:23 - Native Android
5:22 - Cross Platform Apps
6:27 - React Native
8:27 - Flutter
10:31 - Kotlin Multiplatform
12:23 - Summary and Other options
12:56 - Sneak Peek
13:15 - Bonus - Detailed Video

Transcription

This video transcription is generated by AI and may contain inaccuracies.

So ten years ago, if you wanted to build a mobile app, you had two main either native iOS or Android, or hybrid frameworks like Bionic or Cordova sort of web to mobile converters. And yes, there was also Xamarin and Windows Phone, but I don't see them around anymore. Nowadays, for the same mobile app, we have at least five different technologies you can use to build it, and that makes it quite difficult to choose one either for building the app or for making a career out of it. So in this video, we're going through all the options, looking at the technology behind them, the programming languages, and the tools you can use. This is a necessary step before diving deeper into all these technologies in future videos. So whether you're already a mobile developer or you're an aspiring one still learning, by the end of this video you'll know exactly what are your options for building a mobile app or for a career in mobile app development. Let's go if you're new here, my name is Dan. I'm a mobile software engineer with close to ten years of experience in building mobile apps for startups and for big companies. There's a more detailed video about that. I'll put the link in the description. And for now, let's get back to ways of building mobile apps. Starting off with native apps. No, they didn't go away like many people predicted, and I believe they are here to stay. Native refers to the technologies that Apple and Google made available for developers to build apps for iOS and Android, respectively. On the iOS side, we have swift, a powerful and intuitive language introduced by Apple in 2014. But everyone talks about Swiftui. What's that? We'll get to that in a moment. Some of its key features are performance, safety, and an intuitive syntax. But don't take my word for it, see for yourself. Here's a bunch of code in objective C and the equivalent in Swift. So I'd say it's no wonder that Swift became the preferred one on the UI side. For a long time we used Uikit, which is a framework for creating UI with storyboards or xievs, which are drag and drop interfaces, or directly from code. Uikit uses auto layout and constraints, which allow for a fine control of UI elements and how they are positioned next to each other or on the screen. However, it can take a lot of time to build complex Uisdev. So now we have swiftui. Yes, which is a newer, more modern framework for building UIs in native iOS apps. SwiftuI has live previews and a declarative approach to building the UI, so overall it reduces the amount of code that's needed for creating especially complex uis. And yes, that code is still swift. So SwiftUi is not a language on its own, it's just a framework. As for tools, the bare minimum you need is Xcode and the MACD. Yes that sucks a bit. You cannot build native iOS apps on Windows or Linux. I mean there is a way, but more about that in a few minutes. Xcode is the iDE for building native iOS apps and it has tools like a debugger, performance analysis tools and simulators so you can test your app on multiple devices. By the way, if you ever check the reviews on the app store for Xcode youll see its a love hate relationship. Mostly hate. IOS developers love to complain about Xcode and they have reasons. Additional tools to mention are cocoa pods and swift package manager for managing dependencies and app store connect and test flight for distributing your apps either to testers or on the app store. Alright, let's move to Android where we have Kotlin as the main programming language. Excuse me sir, what about Java? You can build Android apps in Java? Well yes you can, and Java was the first programming language used for Android development. But Kotlin is a more modern language with a shorter and simpler syntax and features like no safety extensions and coroutines for asynchronous programming. So please, if you make Android apps, use Kotlin. Yes, I just started my first tutorial and anyway it runs on the Java virtual machine and it's fully compatible with Java. So if you need to have both in your project, that's also an option. And as a fun fact, Kotlin is named after an island near St. Petersburg, so it seems like programmers really like naming programming languages after islands on the UI side. For a long time you had XML's for building UI components on Android. Each screen or part of a screen was a separate XML file and you had to write all the components and the constraints between them in that file. And it can get quite messy if the project grows. Nowadays we have Jetpack Compose, which is a more modern toolkit, and it has a declarative approach which reduces the overall code and you write code in Kotlin. This is the best. It's kind of the swift Ui of Android. On the tools side, the Go to IDE is Android Studio, which similar to Xcode and iOS it has performance monitoring tools, debuggers many additional cool features compared to Xcode, and also a built in emulator again for testing on different devices. And if you ever used Android Studio? You know, it's kind of a russian roulette game. You never know if they fix bugs or if they add new ones. Additional tools include gradle for building the app and its modules, and also for managing dependencies and firebase app distribution, or the Google Play console to share your app with a either beta testers or on the Google Play Store for everybody. Alright, now that we explore the native options, it's time to move to the world of cross platform frameworks and apps. We will talk about three major players in this space, react native, flutter and Kotlin multiplatform. Wait, you said you won't talk about react native? No, I said maybe later. And now. Is that later? Unlike on native, where you have separate codebases for each operating system, with cross platform you can have a shared codebase and deploy your app on Android, on iOS, and sometimes even on web and on desktop, which can increase both the consistency and the efficiency of app development. But how can this be? How does it work? Well, they provide an abstraction layer on top of the platform specific code so you have a unified interface to interact with each smartphone's capabilities. This abstraction layer allows developers to write code in JavaScript or in Darth while still being able to access device specific features. Of course, they are not a silver bullet solution for everything, and they might come with limitations and trade off when it comes to performance, stability and functionalities. So lets give priority to the elders and start with React native. It was the first such framework that really became popular. Developed by Facebook in 2015, React native allows us to create mobile apps using JavaScript and the React library. It was the first solution that offered both a native fill and a shared codebase, so it's no wonder that it increased so much in popularity. As a fun fact, Facebook said it was created in a hackathon when they wanted to bring the ease and efficiency of web development to mobile. And as you probably know, JavaScript is one of the most popular programming languages in the world, which means it has a large community and lots of resources to learn from. On the UI side. Just like in react, you are using JSX for creating user interfaces. It's an extension for JavaScript that kind of looks like XML, and then react native bridges this gap between JSX and the native components using the so called bridge, which means that on iOS it will render native iOS components and on Android it will render native Android components. This is quite impressive and it gives you that native feel and user experience that we mentioned before. As for tools, the most popular IDE is visual studio code, and you will also use the React native command line interface to build and run your project. Also, probably the best tool we can mention here is Expo, which is actually a set of tools for react native that simplifies development even more. Expo comes with an additional set of JavaScript APIs that cover the most common features in mobile app development, like push notifications for example. And you can implement that without writing any native code. You can even build and run your apps on your phone without installing Xcode or Android Studio. Remember what I said earlier about building iOS only on a Macd? Well, expo is that single other way that you can build for iOS without having a Mac, because it offers a cloud infrastructure for that. So yes, expo is pretty cool. The only downside is that when you use expo, you are not allowed to write native iOS or Android code for some specific features. Alright, let's move to Flutter. I don't want to keep you here all day. Flutter is one of the most popular cross platform frameworks of today. It's developed by Google, and it was launched in 2018, so three years after React native. But it quickly caught up in terms of popularity, even though the programming language that you use is Dart. Dart? What language is that? Yeah, that was my reaction too, but actually Dart is not that bad. With Flutter, you can create apps not only for iOS and Android, but also for web and for desktop, although it's not so often used for web and desktop. And some of the exciting things that it brings are a big set of predefined components, very good performance, and a highly customizable UI. Flutter uses Dart, an object oriented programming language, and in terms of the syntax, here's how it looks on the UI side. Flutter is known for its highly customizability and for its fast rendering. This is possible due to the fact that Flutter doesn't rely on native components, but it has its own rendering engine called skia. This means that components are rendered on a canvas, and they are not translated into native iOS and native Android components like on react native. The fun and tricky part about this is that you can create a UI that looks nothing like the operating system you're building for. For example, you can even show the native iOS alert on Android, which is mind blowing. And the good part about this is that Flutter has very fast rendering, and this ensures consistent performance across all platforms. As for the tools, you can use, either Android Studio or visual studio code, both offer excellent support for Flutter, while the Flutter SDK has a lot of pre built widgets that you can use widgets are the UI components, and you also have tools like the Flutter Inspector and Dart dev tools for debugging and profiling. Another thing that I want to mention here is its excellent documentation, and probably that's due to the fact that Google continuously supports it and improves on it. So in my experience learning and using flutter, it was quite enjoyable. This sounds nice, maybe I should switch to Flutter. Wait, there's one more we need to cover, which is Kotlin multiplatform, developed by Jetbrains. Just like the Kotlin language itself. It was launched in 2020, and it's another framework that allows you to reuse code between iOS, Android and even other platforms. What's different compared to react native and Flutter is that with Kotlin multiplatform you're encouraged to reuse the business logic side of the code. So things like data models, logic for your app, offline storage, the networking side. So all of these you can reuse across different platforms, and then you build the UI separately for iOS and Android, in our case on mobile. And this provides a good balance of code reusability and that native experience for the user. This shared code is written in Kotlin, which we already covered when we discussed about Android a bit earlier. And this makes it quite a good option for native Android developers who want to try something on the cross platform side and even for native iOS developers, because Swift is quite similar to Kotlin. Now, on the UI side, you typically use the native frameworks like SwiftuI for iOS, and Jetpack compose for Android to build the UI separately, which offers a native feel on both of these operating systems. And that's the good thing. But of course the bad thing is that you have to write the UI code twice, not four times, twice. As for tools, you will use Android Studio and the gradle plugin, just like we discussed earlier on Android. And for the iOS UI side, you can open that project in xcode and build it like that. Also you can add different dependencies on iOS and Android. You don't have to add everything in the shared module if you can't or don't want to do that. So yeah, Kotlin multiplatform is kind of somewhere in the middle between react native and flutter, which offer the greatest degree of reusability, and native iOS and Android, where you have to create separate code bases for each platform. Alright, we covered a lot of technologies today. Oh yes we did. Are these all at least? Well, no, there are a few more, but these five are the most promising that you can use today and in the near future. And by that I mean in more demand on the job market, suitable for the majority of apps with the biggest communities, and offering a good balance between performance, speed of development and future support. I can make a separate video about.Net MauI compose, multiplatform, or ionic, so leave a comment below if that's something you'd be interested in. As a sneak peek to what's next, we will explore what types of apps are suitable for each of the technologies we covered today, and also what's the best fit for each developer's preference, experience and the job market. For now, if you found this entire summary helpful, I'd appreciate a like and also subscribe below for more app development insights in future videos. Until then, I still have something for you. If you want to see a more in depth comparison between native and cross platform and a technical deep dive, you can watch this talk that I gave at the limitless tech conference not long ago. That's it for today. Thanks for watching. Bye.