React Ecosystem: Libraries, Tools, and Third-Party Integrations - RRU 279
In today's episode, Lucas and Peter dive deep into the world of front-end frameworks with a captivating discussion featuring PRANTA Dutta, a seasoned React Native developer. Pranta shares his journey transitioning from Vue to React, highlighting both the challenges and advantages of React's manual configurations and rich third-party ecosystem. They explore the contrasts between frameworks like React, Angular, and Flutter, delving into the trade-offs between their built-in features and flexibility. From the complexities of using Flutter's custom canvas painting to the streamlined utilities for notifications and Firebase, we cover it all. They also tackle the ongoing debate of native versus hybrid mobile app development, with insights into the Kotlin Multiplatform project and the importance of choosing the right tools based on project needs.
Show Notes
Links
Socials
Transcript
Hey, welcome to React roundup. The podcast where we keep you updated on all things React related. This show is produced by Top End Devs and Envoy. Top End Devs is where we create top end devs who get top end pay and recognition while working on interesting problems and making meaningful community contributions. And Envoy, which which provides client friendly remote design and software development services. So clients only pay after the tasks are delivered and approved by the client. In today's episode, we will talk about the popularity of React in, well, it's basically about an article of a very special guest that I'm gonna mention in a second that wrote an article titled Why React Won't the Front End Rates? My name is Lucas Paganini, your host in the podcast, and joining me in today's episode is Peter Ossa.
Peter Osah [00:01:04]:
Hello, everyone.
Lucas Paganini [00:01:07]:
And our guest for this episode, which is also the, person that wrote the article we're talking about, Pronto Datta, which is a React Native developer with more than 4 years of React experience.
Pranta Dutta [00:01:24]:
Hello, everyone. I'm Pronto, and I'll be talking about React today.
Lucas Paganini [00:01:32]:
Awesome.
Pranta Dutta [00:01:33]:
Awesome.
Lucas Paganini [00:01:34]:
Alright. So, Pronto, let's just jump right into it. So first, I thought it was really funny reading your article because you actually wrote it in a very sarcastic way, bringing facts, but also bringing them in a a kinda sarcastic way. Do you mind telling us a bit about why React became so popular? How it was able to, as you said, win the front end race? And, also, what are some of the, the drawbacks from it that we just learned to live with it, unfortunately?
Pranta Dutta [00:02:16]:
Well, first of all, React is actually a library. Right? I mean yeah. So that's that one of the things that I actually mentioned in the poll post that people all we always, remind you that, yeah, it's a library. And one of the thing that I really don't like about, well, not actually React. Actually, the React developers. I see a lot of buzz around it that basically says, yes. React is the king. React is the best thing in the whole world white vault, and things like that, which is actually not true.
Pranta Dutta [00:02:52]:
And the look. The point is React actually won the race. There's no denying that fact. But if you sit on it, like, yeah, this is the best thing. No. It's not. The reason it's not is because there's there's, like, 50 other frameworks that I don't know. The the the conversation that we are having right now, maybe in the in the meantime, there's been a JavaScript framework.
Pranta Dutta [00:03:16]:
I mean, there's a very good possibility that actually happened. So if you think that React is, like, the only thing in the whole universe with, with with the JavaScript, with, with, the the the JavaScript framework that you can use to build apps or, web applications, you're wrong. And that's exactly the point of this post. So, basically, what I wanted or what I tried to do here is that I tried to tell everyone that React actually won, but it's not the best thing in the world. So you have other options, and you have a lot of options, actually. And there are there are situations and times when you need to, explore them. You need to try to understand that what makes React great and what makes it, well, sometimes, actually, really painful to work with. And I have actually, I I would say, like, a basic understanding of other JavaScript frameworks like Vue or Angular.
Pranta Dutta [00:04:25]:
I have worked fairly with them. Like, I I'm not, like, an expert, but I work with them, and I understand how they work and also React Native. But one of the things that I really saw people do is that, yeah, you you should always, learn one thing and, yeah, you should just do this always and it's it's it's always like, yeah, React is the best and learn this and then you don't need to do anything, anything at all. Like, we can always do React. I mean, there's actually truth to that because right now, Windows is actually using a lot of React and React Native, and there are, there are a lot of big companies that actually use, React. So, yeah, maybe there's truth to that, but there are a lot of things that it's just, I don't know, sometimes it feels like how do I say this? It's bloody, actually. It's it's really and one of the things that I'd say about React is that it actually delivers. It actually sets, it actually does what it sets out to do, and it does with flying colors.
Pranta Dutta [00:05:49]:
And one of the thing that I actually really admire about about React is that since its inception, React has been developing its ecosystem, like, every other, month, year, or, I don't know, like, every day. And one of the things that make made this possible is the the Facebook, the meta team at Facebook or whatever their goal this is, then the the point is the people behind React are extremely, talented, and they always, they always deliver. Like, they do deliver. And, to answer your questions about the drawbacks, one of the things I don't really like about React is that when you when you have a, like, a really big project, like, I don't know, a lot of components maybe, then it becomes really hard to upgrade something or, like, let's say, you need to we need to change a specific thing and you need to bring in all these all these other things into this. And when when when you have one single component, then you can update it easily. But when you have one component that depends on, like, 50 other components that it becomes really, really hard to just update one single function. Like, let's say you have just one state, and that state is being used by 5 other, components behind them. And let's say you need to update it somehow.
Pranta Dutta [00:07:28]:
You need to update that somehow, and when you do that, there are, like, a lot of steps inside, and there are a lot of things inside that just re renders for no reason. I mean, there's just because they depend on one single thing. I mean, there are a lot of ways that you can prevent this, and let's just say, React is not the the most performant framework, I'd say, and there are a lot of better ways to do this. But for what it's worth, React is actually actually good for what it does. Yeah.
Lucas Paganini [00:08:06]:
Yeah. No. I think that makes total sense. Like, the fact that if you look at the actual scope of React, it really does what it's supposed to do. The problem is really the fact that a lot of people look at React and expect it to fix a lot of other problems in your application. When I say fix, it's more like it's not really fixed because it's not like it's originally broken. It's more like providing solutions. Right? If you compare, for example, to Angular, which is a much more, much larger framework, it does so much more.
Lucas Paganini [00:08:50]:
Like, internationalization, for example, there is no baked in solution in React. Like, this is the way that you should handle internationalization. So if you wanna support multiple languages, you gotta decide which library, which solution you're gonna use along with React to fix this problem. If you want to, like, do something more fancy to control your forms, then there are multiple different ways for you to do that, and you have to choose which one you want. So it's simple. I I guess that, at least to me, what makes more people get drawn into React is the fact that because it is seen as a single library, it's also simpler to explain because the scope of what it does is smaller. Right? You can read the entire React docs in maybe, like, 2, 3 hours if you just sit through it and read. It's really straight to the point, and it's because it has a very specific set of problems that it solves.
Lucas Paganini [00:10:03]:
Whereas if you look into other frameworks, Vue. Js, Solid, Angular, etcetera, their documentations are gonna be more extensive, but that's also a reflection of the amount of things that they solve. And if you think that you're gonna be free from those other problems, then you're just cheating on yourself because those problems eventually are gonna come, and then you're gonna like, you never just use React. Right? Like, you're always using React and a mix of a bunch of other libraries put together so that you actually have a framework. So I think that this ended up making React more interesting because it was easier to get started with it, but it also creates a lot of problems later because it is easy to learn because there are a lot of things that it does not address, and you will eventually have to address those things somehow. So, yeah, at least to me, I would bet that that was one of the biggest reasons.
Pranta Dutta [00:11:16]:
Well, first of all, I think that the fact that React does not provide, like, all of this all of these things together, at first, I thought, like, why do I need I mean, just I my first framework that I ever used was Vue. So when I first came from Vue to Yat and, when I was first doing some routing, it was, like, 4 or 5 years ago. It was during lockdown. Okay. So so when I I was first doing that, I I realized that there are a lot of things that, I have to do manually. Like, I I have to write a lot of boilerplate and other stuff even with, with Redux. Redux also has a lot of boilerplate, and that was actually really painful. But what I came to realize is that this is actually a good thing.
Pranta Dutta [00:12:10]:
And the reason I'm saying it's actually a good thing I mean, the fact that the act doesn't provide anything. It's actually a good thing because when you do this, when you leave this to other people, then you get, like, a lot of cool stuff. Like, we have React router. We have Ganstack router. We have Ridge router. We have a lot of other routers, and they're doing a specific thing. I mean, in some sense, this is actually better for the ecosystem. Even with React Native, like, the the fact that React doesn't provide a lot of things out of the box, it just makes a lot of sense for other people to come in and just use the, the bare bone, the the the minimal thing that we have with React Native and make it into something that, something that we we want to make.
Pranta Dutta [00:13:02]:
Let's say let's say with Flutter. Okay? So with Flutter have you ever worked with Flutter? Just curious.
Lucas Paganini [00:13:12]:
I have not. It is something that I have been very curious about because I was exploring some of the hybrid development, tools lately. And, honestly, we we were trying to do stuff with capacitor, and it was just so painful, that we were like, okay. So, no, that's not gonna happen. We're gonna have to either choose in bet between React Native or Flutter because capacitor is just too painful. But we we didn't get enough time to do the proper research on Flutter yet. So I would be very curious to also hear your thoughts on it knowing that you're coming from this web dev perspective.
Pranta Dutta [00:13:53]:
So the point I was trying to make with Flutter is that they have a lot of things baked in in the framework. Okay? Like like a lot. You you don't you don't need a life rating. Like, that's how much things there there are in the factory ecosystem, and that actually creates a problem. You know, one problem the problem it creates is that there are, like I mean, most of the most of the apps that you see are built with further. You can see them. You can look at them. You can look at these apps and tell, yeah, that this app is made with butter.
Pranta Dutta [00:14:31]:
I mean, trust me. I can. Just show me some pictures. I will tell you if they're made with butter. It just it's that easy. I mean, it's it's it's actually, like, how would I say this? The thing Flutter is actually really easy, and that's the problem. So when everyone tries to do the same thing with the same the same line of code, It just every app looks the same way. Right? I mean, have have you noticed those, those GitHub, repeat apps that people show and they all look the same? That's because they are they are made with standard.
Pranta Dutta [00:15:10]:
And when when you have when someone shows you, an app that was built with React Native, you don't have this. That's because React Native doesn't provide a a specific set of rules to you. It just provides a view, and then you write your own own thing. But with Farther, you have, let's say, a container, and then you have about the radius and everything. And when you do this, everything looks same, but it's not the same with React Native. And I think that's actually a good thing. That's one of the things actually React got it right. Even with Angular and Vue, they have their own router.
Pranta Dutta [00:15:48]:
Okay? So they don't, like, there's literally no other router in Angular or or Vue. I I don't know if Vue has any other router than Vue router. I'm sorry. The big thing one, I'm I'm not I'm not sure though. But I I know that Angular doesn't have one. So, I mean, there are other things with Angular that does have things like, file based routing and stuff. I forgot the framework name, but the point I'm trying to make here is that the fact that React didn't provide anything with it, with it, with its original library, it made other people make their own thing. So we got a lot of stuff.
Pranta Dutta [00:16:29]:
We got Next. Js. We got, like, remix and, yeah, Danstack. And I I think this is actually a good idea, and I think React actually got it right. And to think that I at first, I thought, like, why would I need to install another, another library just for routing? I mean, I really thought that.
Lucas Paganini [00:16:53]:
Okay. That that does make sense in terms of Flutter. I think that Flutter also has a like, I think we need to separate things a bit because I think there's, like, this broader concept of something that is more opinionated and and solves more problems versus something that is smaller in scope and leaves you with more options to to do whatever you want. So, like, React is something that is more scope and then lets you make choices afterwards. And Flutter and Angular are more opinionated and have their own way of doing things. But I think there's also, like, I think we need to separate the idea from the actual examples because, Flutter and Angular, they are both very opinionated, and they have their own set of ways of how to do things. But, you don't have like, the problems that you were mentioning with Flutter are not things that I believe are applicable for Angular. And I think part of that as well is because Flutter is also built on a programming language that is not very used outside of Flutter.
Lucas Paganini [00:18:14]:
Right? Like, who else uses Dart, besides Flutter developers? Like, I don't know any anyone else that uses Dart for anything, besides people that that code with Flutter. But on the other hand, Angular is built on the, is built to run on the web, and, thus, it is just JavaScript at the end. Well, it's actually TypeScript, but you you get what I mean. At the end, it's just JavaScript. So you can still leverage the entire ecosystem of the web. You just have to sometimes add a few wrappers so that it, so that it just works inside Angular. Right? But you can still leverage all the web, which I think it's a is a big difference from Flutter. Right? Like, I would say that there's a lot of things that React developers, Vue developers, Angular developers, Solid developers, whatever.
Lucas Paganini [00:19:12]:
I think there's a lot that we can all share with because it's just vanilla JavaScript, you know, vanilla web development. So anything that is vanilla web development, anyone can use in any framework. The thing with Flutter specifically is that there there isn't much that you leverage besides the things that were specifically built for Flutter. Would you say that that's true as well? Like, does that make sense, or or do you disagree with this view? Because you have more knowledge of Flutter, so I might be wrong.
Pranta Dutta [00:19:49]:
No. Actually, you're you're 100% right. And I think that one of the one of the areas that this actually really shines I'll I'll give you a a proper example. So I was working with, how do I say, a project that has to be done in, like, a week. Okay? So it was it was, like, 4 or 5 months ago, and it had to be done, like, instantly. I didn't have time to test it properly. I didn't have to have enough time to, to to to make it, like, look good and stuff. Like, it was just an app.
Pranta Dutta [00:20:27]:
It had just one specific functionality. Like, it had a, a stopwatch, and it it would work like a stopwatch. Okay? And they do record some that, and they do record the the values, the laps, and, some other stuff. And it it was not actually that much complicated, but if I had to do that in React Native, I don't think I could have done that in in a week, but I did it with Flutter in a week. That's because Flutter actually provides you with a lot of things that you can just work with. Right? So I didn't need to to update a button. I just wanted a button that looks like a button. Okay? I I just needed to get stuff done, and Flutter is actually really perfect for that.
Pranta Dutta [00:21:17]:
And Flutter actually have, like, a lot of functionality under the hood. It it also provides you with that, but when you are working with, let's say, an an an an upper level thing, you don't need to go down. You don't want to go down the the, the the down level because the down level is generally more complex. Let's say I was doing one small thing the other day. I was just trying to, make the the the border, you know, border in a, in a how do I say this? A straight line, you know, instead of just radius. So I learned that you can't just normally do that in front of you need to you need to create a canvas, then you need to custom paint this. So that was, you know, like, I don't know. I mean yeah.
Pranta Dutta [00:22:12]:
So when you when the thing that you work, it doesn't work. You need to go a lot of different ways. You need to hack things a bit to make everything perfect. You want to but when you need to get stuff done, further is actually really perfect for that. And that's, I think, at at you made a really good point there. Because when it comes to Angular or Vue or React, let's say we have, an animation library, like, what should I say? Frame oh, frame doesn't work with, Yeah. It doesn't work with view or angle. It only works with React.
Pranta Dutta [00:22:51]:
So let's say any frame animation library that actually works with all of them because it internally, it uses, uses JavaScript or or a library like t three JS or Sweeper or anything like that that actually works with all view, Angular and, react react, framework. Because internally, it's just JavaScript. It just works. Right? So even though you don't have a specific library for Angular, you have one for React, then you can keep driving few if that specific library wasn't built for React, like, it was built for JavaScript, then you can actually use it with JavaScript, with Angular, or Vue, not just React. But I most of the time, I actually saw a lot I brace focus on React first, then move on to the other frameworks, which is actually a pretty common thing. But, yeah, you made a good point there about Flutter not being as, you know, as consistent, like, with the JavaScript ecosystem. But one thing I'd say, though, the the amount of packages that Dart has or Flutter has, it's actually pretty, I'd say I don't know. It's just unbelievable.
Pranta Dutta [00:24:10]:
Like, where did this much package come from? It it's actually kind of weird, to be honest. Like, it's really big. The ecosystem is actually really big. There are a lot of people, developing libraries, and I don't see them on anywhere. Like, I don't see them on YouTube. I don't see them on any podcast. I don't see them on, like, YouTube comments. You know? There are a lot of people on YouTube comments saying, yes.
Pranta Dutta [00:24:37]:
React is the best, and React Native is this and that. But I don't see a lot of people talking about Fuddl. But when I go to the package store, it art, I think, pop.deb. So when I go there, I see a lot of packages, which is, like, where did this come from? And one other thing I I would I'd like to say, this doesn't mean that that the fact that React has a lot of packages doesn't mean they're actually they always work. I'll I'll give you a proper example. So last year, I was working with a project with NFC. Do you have any idea with NFC? Yep. Yeah.
Pranta Dutta [00:25:21]:
So so with NFC, you need the native support. Right? You can't do anything with JavaScript. Yeah.
Lucas Paganini [00:25:31]:
Oh, sorry. Just to just to make this also clear to the audience, we're talking about NFC, not NFT. So it's not about, crypto stuff. It's about No. Being able to, like, magnetically transmit information, like a credit card that has an NFC, signal, and they can capture that and and grab the data. That's it.
Pranta Dutta [00:25:58]:
Yes. That's that's NFC. It's actually, I think, like, near field communication or something like that. Yeah. So, basically, it's a technology that lets you, do payments and other stuff. So the thing that we are doing is that we were scanning some cards, some NFC cards, and we are, writing some data on it, and then we are retrieving data data and we're doing some other stuff internally. Now so I at first, I thought this would I mean, I'm a React Native developer. Okay? So I first tried to use React Native.
Pranta Dutta [00:26:31]:
And when I was using React Native, there was this package called NFC manager that you use for NFC with React Native. And I used it, and I don't know. It just it just feels felt so much buggy, you know. Like, I mean, the read worked fine, but when it came to write, I couldn't write a lot of cards simultaneously. Just just hangs for a bit and throws weird errors. I don't I didn't, like, get the end of it. I didn't I just couldn't make it work, you know. But when I came to Flutters for help, I mean, it was out of desperation because I couldn't get it working properly with React Native, so I just came to Flutter for that.
Pranta Dutta [00:27:16]:
So when I came to Flutter, I I found out that there was this package that is weirdly also called NFC manager. Yeah. I know that's actually weird. Both of the package have the same name. So when I use that flutter flutter package called NFC manager, it worked like a charm. I mean, it's actually really, really good. Everything with, reading, writing, and it just worked. Also, it has a specific features called, called stream, which is it's actually really good.
Pranta Dutta [00:27:50]:
Like, this is one of the best features, in my opinion, in in dark, which is stream. The fact that you can listen to things. And, I mean, you could say that JavaScript also has that or, like, any other languages also have that, but trust me, this is actually better than most other languages. So, yeah, that actually properly worked out for me even though I think React Native has a bigger ecosystem. So when it came to, how do I say this, an an uncertain level of thing, Actually, Flutter worked and React Native didn't. I mean, I don't know. Maybe just skill issue from from my side. Like, I didn't know how to get it working, but I didn't have to do anything with Flutter.
Pranta Dutta [00:28:34]:
It just worked. Okay? It didn't with React Native. That's exactly my point.
Lucas Paganini [00:28:39]:
Yeah. That that is a big advantage indeed. Like, depending on how fast you need the thing to be done and also how much custom design do you want with it, Think that's a good good thing to consider. Peter, do you have any any questions, anything you wanna add or mention thus far?
Peter Osah [00:29:00]:
Okay. Yeah. Yeah. I do. So I'll see questions for I think so. So I think my first question is as regards probably, I'll be on the defense of React. So let me just be on the defense at the point in the sense of now. They are they are usually situations where, like, people have actually mentioned that, yeah, they have packages only working or.
Peter Osah [00:29:27]:
We have kind of promotes, setting kind of design or patterns or coding conventions that doesn't really scale, doesn't really make sense in a lot of opinions. So but then I will usually ask the question that at this point, like, do you think it's actually, like do you think React is to blame or maybe the the ones using React as the framework? Because, yeah, they are probably many usually, like I think I think I usually use this example of the use effects. There's this use effect abuse. I mentioned we act, yeah, react on docs. Actually has a post from Dan on why we shouldn't use React and Music Flex so much. But, yes, you see a lot of people kind of using it or in your. So at this point, will you kind of blame the framework or the framework is this framework is this or, actually, rather than maybe or the people doing it or or people building or using this framework, are they using it for value? Are they following the rules? Are they following the conventions of it? Are they also trying to kind of integrate, like, maybe actual, like, design patterns, like, maybe the, key, and the rest to building the app applications. So what do you think, Alfonso?
Pranta Dutta [00:30:57]:
Okay. So first of all, I think that both of this, both of this design patterns or paradigms or, like, whatever you want to call it, I think they have their place, first of all. Because there are times when you need, need to do something really quickly, and I think that that's where Futter actually shines. You you don't need to do a lot of stuff to just build an app. But but to answer your question, if if whether to react is too linear, Actually, I don't think so. I mean, honestly, they could have done a little better with the recommendation and stuff. Like, I'm actually going back to Futter again, but Flutter actually provides some other packages that works with, Flutter. I I mean, the Flutter team actually provides some other packages, like go router and provider and some other, packages.
Pranta Dutta [00:32:00]:
These are also, like, extra packages. You have to manually install them. But Futter Futter team actually, maintains them and builds them. But you don't see this in in, in React or React Native for the matter for that matter because they don't provide, like, any extra stuff. The I mean, to to quote Don Abramov, he actually said the only package that React provides is the React. So, yes, he actually said that once. So one of the things that I do think that we we need to, we need to we need to think about when making a decision like this is to when, what suits you. Okay? So let's say you have let's say you are making a really big big application.
Pranta Dutta [00:32:53]:
Like, you don't know what to expect. You don't have a proper understanding of what's going to happen. Then yeah, I don't know. If you do something opinionated like Flutter, changing things, it's actually really hard. But when it comes to, React Native, it's actually pretty easy. It's actually easier than Flutter. That's what I found. And one of the things is that about useEffect, you said.
Pranta Dutta [00:33:22]:
Well, let's just say useEffect actually creates more problems than it actually solves. That's I don't know. That's actually probably a bold statement. But when you have when one of the things that I I do want to mention here is that when you use more than, like, 3 or 4 use effect yeah. Yeah. You should probably, rename that function to use food gun that time because that's exactly what your usage users did. And you have multiple use effect in your code base. You just find anything could go wrong at that time, like, anything.
Pranta Dutta [00:34:06]:
This is just what happens. I mean, I don't know how to make this better. Like, even with the React 19 stuff, with their their shipping, like, they have some, they have a compiler now. So I guess they're not every, library anymore. But even with that, I didn't see any improvement with user fact, and I don't know what improvement would they provide. I just I don't I don't see a proper solution to this problem at all.
Peter Osah [00:34:35]:
Yeah. Okay. Yeah. Okay. Yeah. Let me I actually get that over. But then, one thing one thing about React is, that, React itself is almost is not. Right? So it's I think it's and that's kind of like a blessing because depending on the just the requirements or your or your requirements or anyone's requirements.
Peter Osah [00:35:00]:
Right? So there are people who have who kind of like kind of or maybe is to mind pattern and, like yeah. They they do want to follow or they do want to, like, if we work something that kind of have everything together and then kind of follows a specific pattern. I think it'll go from my from my expert. I think something like Angular now. Right? Angular follows, like, a very good, like, OOP convention and many, design systems you follow. Yeah. And that's so many people so many people feel that, yeah, those also have, like, the admit in the sense that they feel, busy learning call, busy learning call. Maybe okay, though, though, the ease of kind of finishing or, like, doing something quickly.
Peter Osah [00:35:50]:
Some people feel maybe you have to learn a lot to kind of use frameworks actually use, like, this pattern. But then, kind of gives you, like, a framework. No. It's just more like a a canvas. Oh, this is just what you need to do, and you could build and see one business in imagination. And, yeah, that has actually cast its own that has already created Zoom in the sense that of what when you really see us, like, kind of I've always used, like, an abuse of the framework where or the library, so many people use that to kind of they're right. They don't follow, like, actual patterns and conventions was, and and they kind of abuse the use of libraries, which we actually mentioned. Because they are certain like, okay, they are certain, things that people feel that, oh, should be live with words.
Peter Osah [00:36:43]:
You could actually do it with just, like, JavaScript JavaScript in. Right? So I don't know. So the why I'm why I'm explaining this is that now in this in this kind of with this kind of concepts now, right, who it's, like, it's we had itself to blame rather than being but rather how, like, people how people are adopted, it's actually the the problem. Because I think that's that's the the the the main thing I'm trying to kind of push out, like, okay. Yeah. Every everything has its merits and demerits, but I think it's based on how you use it or how do the user use it. Yeah. So what is it? Yeah.
Peter Osah [00:37:25]:
What did you say?
Pranta Dutta [00:37:27]:
Well, first of all, the fact that React is an opinionated means that you can do anything with React or React Native for that matter. But at the same time, I mean, I don't know. I I I will answer your question on the on the plane. But first, I just I don't know. You know, React Native doesn't even have a select component. Like, you need a library to select something or you need to create, like, select, you know, form select. When you click on something, a drop down appears. React doesn't have anything like that.
Pranta Dutta [00:38:02]:
React Native. Sorry. React Native doesn't have anything like that. You need to create you need to create your own component to make that happen or just install a top party library. I mean, why? It's just a simple thing. It just I don't know. Just also, I don't think React is to blame here. I mean, they were trying to do one thing, and they did it properly.
Pranta Dutta [00:38:26]:
And the fact that the the React actually doesn't provide anything, it's actually useful in all in lot of cases. Let's say, let's say let's come talk about the company, the meta. So they have a lot of applications. Right? They have a really big applications called Facebook. You know? So they have a lot of components there. So how would you just push one thing? Like, how would you push a specific set of design or patterns on, like, for a a million components? I mean, can you even do that? Like, how do you even do that? Like, all of these have, like, different, you know, people, Facebook actually have a lot of, subsections too, like developers.facebook.com, carriers.facebook.com, and, shops.facebook. It they have a lot of things like this. So all of these are different applications.
Pranta Dutta [00:39:30]:
So even if you try to do something like this, how do you even, like, propose a system that actually works with all of this? Like, I mean, if if if if you are doing something like, pushing, something like ESLint, you know, like a linking, something like that, you can do that. But how do you push design? I mean, I don't know, honestly. I I don't know. I it just maybe I don't I I honestly don't know how you even could do that even if you try to. But so one of the things that I'd like to say here is that Flutter is actually backed by Google, and Google actually pushes their own design, just material design. And each and every app that you create with Flutter actually comes with, a material design. I mean, you can change that if you have, like, other other internal these, design systems with Cupertino and other stuff for iOS, you know, so that'll just they look different, you know. You can do that, but mostly, like, I don't know, like, 90% of the time, people actually use the default material app.
Pranta Dutta [00:40:49]:
You know? So they are pushing something, and I think that both of these approaches actually works. And that both of them have their place in this, and we just have to decide when to use which. And, yeah, that that's about it.
Peter Osah [00:41:12]:
Yeah. Yeah. I think that's yeah. I think that that works actually. I think the answer is kind of great. So, I mean, it's yes. It's it's depends on the developers and also the React's multiple remote job. It sends that the devs are the ones that are kind of architects of view the application using React.
Peter Osah [00:41:31]:
So you get to decide how once whatever, like, what to use and how to do it come out for years of work. So, like, Lucas, do you have any, information?
Lucas Paganini [00:41:42]:
Yeah. I do have one last thing before we wrap up, which is out of all that, we didn't even talked about or explored the alternative of just using native mobile development, just doing native Android, native iOS. And I just wanted your opinion on that, Panato, because I think this definitely generates a lot of polemic. Right? Like, a lot of people have different opinions about that. But I think there are people that believe that we should prefer native apps and people that think we should prefer hybrid apps. I'm not even talking about Flutter versus React Native. I'm just talking about hybrid versus native on mobile. And I just wanted to hear your thoughts.
Lucas Paganini [00:42:39]:
Do you think that there's still space and reasons to go with native development in 2024? Or let's just say 2025 because we're already ending 2024. Right? So in 2025, do you think there's two reasons to go with native iOS and Android development, or this is the past and we should definitely go with hybrid independently of it being Flutter or React Native?
Pranta Dutta [00:43:06]:
Actually, there's been an interesting project called Kotlin Multiplatform. Have you heard about it?
Lucas Paganini [00:43:14]:
No. Sorry. I couldn't understand. What's the name?
Pranta Dutta [00:43:19]:
Kotlin. Kotlin Multiplatform.
Lucas Paganini [00:43:22]:
Oh, Kotlin. That's the project.
Peter Osah [00:43:24]:
Okay.
Pranta Dutta [00:43:26]:
Yeah. It's actually Kotlin Multiplatform. So, basically, it's it's like React sorry. It's like React Native for Flutter, but your I go with Kotlin. And the the the thing with this is that the Android developers, the existing Android developers already knows. Okay. Already they they already know Kotlin. That they are working with Kotlin every day.
Pranta Dutta [00:43:52]:
They're working with Compose. Compose is the system where you, you you write components in, with with with, native Android development, you know, normal component. You write them with Compose. So let's say you are an Android developer. Right? And you can develop apps with just Kotlin. And, you you will write it once, and everything else just works in in in iOS device too. And I think that's actually pretty good. Like, in Android, you get the existing existing thing.
Pranta Dutta [00:44:29]:
Like, the exact same thing the exact same experience like an native Android app. But on on iOS, you actually get the, the the exact same app. But the problem with this is that on iOS, it's not actually native. But you do have the capacity to write native code. So to answer your question, whether we should use native or or a prospect from framework, I would say, again, one of the things that one of the things that I found out is that if your project, grows to a certain point, you know, like, let's say you have a project that you've been working with, like, 1 year, 2 year, 3 year, there there will come a time when you need to work something. You need to work with the native libraries or the native system. Like, both of these platforms, like, Futter and React Native, they both provide stuff like modules, and Futter has something called channels that you can, you can communicate with the native flare. Like, you can, like, execute a Kotlin code for Android and, Swift code in, iOS.
Pranta Dutta [00:45:43]:
Both of these, framework actually have that. But my point is there will come a time when you if your project is big enough, that's important, by the way. If your project is big enough, there will come a time when you need to work something with native. So either you like it or not, you just have to use native. Okay? So I I mean, at the at this we do this, you could argue that that why not build the app with the native thing. Well, the thing here is that you are not going to develop any app as fast as you can with cross platform, cross platform frameworks like React Native or Futter if you're doing it with, native native Android or native iOS. You're you're never going to be able to do that. So that that's because both of these languages, like Kotlin and, Swift, they're actually, well, they actually have a lot of similarities, but they're different.
Pranta Dutta [00:46:44]:
Their whole system is different. Android works in a certain way. IOS works in another way. I mean, if you ever worked with, like, specific native permissions, like, Android doesn't care about most of the permissions, but when you're working with iOS, you need to set specific things in specific order to just keep everything working. So it just it's really painful at times. And if you're not using something like partner or React Native, it's really hard to do that. But at the same time, there will come a time when you do need to use the native features. So yeah.
Pranta Dutta [00:47:26]:
I mean, again, that actually depends on what we're trying to do. If you if you like you said, the the hybrid architecture hybrid architecture is actually pretty good, I think, because you have both the the native options, you know, and the post part from applications, and and you're doing specific stuff. That that's actually what Facebook does. You know? Facebook, and Messenger, and, like, other Instagram and other apps like this, they're hybrid apps. They have both react native system and some native, native, code inside, and that makes them the hybrid apps. And Yeah. So to answer your question properly, I would say think about what you're doing. You think if you think your project is like anything, like, I a few moments ago, I was talking about NFC.
Pranta Dutta [00:48:25]:
If your project is something like this that needs to communicate with the native fair, then I think you're actually better off writing something like, writing writing the the app logic totally from the scratch in native even though it will take some time. It will actually take more time. But in the end, it'll make your app more, more accessible. And, also, one of the one of the things which is actually really important is performance. You're never gonna get the performance from cross platform app apps like you would get from the native apps. Like, I mean, how could you? Right? It's just it's not possible. But that being said, Flutter is actually pretty fast. I mean, React Native isn't.
Pranta Dutta [00:49:16]:
But Flutter is Flutter is actually pretty fast. So, I mean, who's gonna diff who's gonna diff see the difference between milliseconds? Right? Let's say something is happening in 202 100 millisecond and 300 millisecond. Who's gonna notice the 100 millisecond difference? No one. That's who. So, yeah, I think that you should decide what what you're trying to do and then make a decision. Also, there are there are other things that actually a lot easy in Flutter or React Native than in in, in doing in, in natively, you know, like sending notifications. Yeah. That kinda sucks in native side.
Pranta Dutta [00:50:02]:
I have worked with I I have knowledge about developing some things internally, and, yeah, I'd rather do it in Flutter. I mean, I don't know. Maybe it's because, Firebase is also backed by Google. So maybe that's why they were together to make it simpler. Yeah. That could be a reason, but I don't know. I just found it more easy in in in in Clutter than in native side. Again, that that could be my skill issue.
Pranta Dutta [00:50:32]:
But, yeah, that's that's my opinion. If you have something really big, something really complex, then you're probably good at native. But if you don't just if you don't need that all that native stuff, you're just working with a specific thing. So recently, I worked with an app. I developed an app actually, for for our for our HR department. And if you think about the HR department, they're never gonna need any, native features. Right? I mean, what are they gonna do? Scan us? So yeah. They're never gonna need those features.
Pranta Dutta [00:51:10]:
So Futter is probably really good for them. I mean, I could just do some fancy animation and stuff. So yeah. That's that that's my point. You you need to you need to think about what you're trying to do and then choose what suits you the best.
Lucas Paganini [00:51:26]:
Makes sense. Makes sense. Alright, dude. Thank you so much. This has been a really valuable episode. And, yeah, it was a pleasure to have you. Let's do some quick promos, and then we can wrap this up. On my end, I am gonna just promote the companies that produce this show.
Lucas Paganini [00:51:48]:
So Top End Devs and Envoy. Top End Devs has a lot of other podcasts as well. So if you're interested in some other frameworks, some other technologies, definitely check out some of the other podcasts from Top End Devs. If you just wanna know more about web development in general, there's also JavaScript Jabber, which is a podcast just about, JavaScript and web development in general, also made by Top End Devs. And if you or your company is looking for more web developers to augment your staff and just develop features quicker, do check out envoy.com. This is unvoid.com, and reach out. They may have exactly what you're looking for. So, yeah, these are gonna be my promos for today.
Lucas Paganini [00:52:37]:
Peter, how about you? Wanna go next?
Peter Osah [00:52:39]:
Yeah. Yeah. For today, I I don't have, like, any promo to do.
Lucas Paganini [00:52:44]:
Okay. Okay. Alright. How about you, Pareto? Anything specific you'd like to promote?
Pranta Dutta [00:52:50]:
Yeah. So so I'm I'm I'm Pramtha. I'm a React Native developer. If you need any help, just reach out. And, if you're if you like to work on something, then you can you can reach out to me on my email and my website, pronto.dev. So yeah. Thanks.
Lucas Paganini [00:53:15]:
Alright. And for those that wanna reach out to Pronto, just so you know, his website is pranta.dev. This is pranta.dev. So I know that the way that it pronounces is Prento, but it's not an o at the end. It's an a. So make sure that you I'm sending the for those of you that are listening to this on a podcast player that has a comment section, like YouTube or, Facebook, whatever, then there's gonna be a link to Pronto's website there. But if you're just listening to us, then it is pranta.dev, and you can reach out to Pronto if you're looking for help to build something. Yeah.
Lucas Paganini [00:54:06]:
Awesome. Awesome.
Pranta Dutta [00:54:09]:
Okay. Thank you.
Lucas Paganini [00:54:11]:
Yes. Thank you for your time. Nice meeting you, and yeah, man.
Pranta Dutta [00:54:15]:
Thank you for having me.
Lucas Paganini [00:54:17]:
Alright. Thank you for joining. Thank you, everyone. Thank you for sticking up until the end of the show, and I will see you on the next one.