Speaker 1: Hey, welcome to React Round Up, the podcast where we
Speaker 1: keep you updated on all things React related. This show
Speaker 1: is produced by Top End Devs and Void. Top and
Speaker 1: Depths is where it create top and Depths. We get
Speaker 1: top and pay and recognition while working on interesting problems
Speaker 1: and making meaningful community contributions. An Void which provides client
Speaker 1: friendly remote design and software development services, so clients only
Speaker 1: pay after the tasks are delivered and approved by the client.
Speaker 1: In today's episode, we will talk about the popularity of
Speaker 1: React in well, it's basically about an article of a
Speaker 1: very special guest that I'm going to mention in a
Speaker 1: second that wrote an article titled why React on the
Speaker 1: front end race. My name is Lucas Baganini, your host
Speaker 1: in a podcast and joining me in today's episode is
Speaker 1: Peter Osa. Hello everyone, and our guest for this episode,
Speaker 1: which is also the person that wrote the article we're
Speaker 1: talking about, Pronto Dota, which is a React native developer
Speaker 1: with more than four years of React experience.
Speaker 2: Hello everyone, I'm Branto and I'll be talking about reacted.
Speaker 1: Awesome. Awesome, all right, so fronto, let's just jump right
Speaker 1: into it. So first, I thought it was really funny
Speaker 1: reading your article because you actually wrote it in a
Speaker 1: very sarcastic way, bringing facts but also bringing them in
Speaker 1: a kind of sarcastic way. Do you mind telling us
Speaker 1: a bit about why React became so popular, how he
Speaker 1: was able to, as you said, when the front and race,
Speaker 1: and also what are some of the the drawbacks from
Speaker 1: it that we just learned to live at it unfortunately.
Speaker 2: Well, first of all, React is actually a library, right,
Speaker 2: I mean, yeah, so that's that one of the things
Speaker 2: that I actually mentioned in the book post that people
Speaker 2: will always remind you that, yeah, it's a library. And
Speaker 2: one of the things that I really don't like about well,
Speaker 2: not actually React, actually the React developers. I see a
Speaker 2: lot of buzz around it that basically says, yes, React
Speaker 2: is the king, React is the best thing in the
Speaker 2: whole world, white world, and things like that, which is
Speaker 2: actually not true. And the look, the point is React
Speaker 2: actually won the race. There's no denying that fact. But
Speaker 2: if you sit on it like, yeah, this is the
Speaker 2: best thing, no, it's not.
Speaker 3: The reason it's not is.
Speaker 2: Because there's like fifty other frameworks that I don't know.
Speaker 2: The conversation that you're having right now, maybe in the meantime,
Speaker 2: there's been a JavaScript framework. I mean, there's a very
Speaker 2: good possibility that actually happened. So if you think that
Speaker 2: React is like the only thing in the whole universe
Speaker 2: with the JavaScript, with the JavaScript framework that you can
Speaker 2: use to build apps or web applications, you're wrong. And
Speaker 2: that's exactly the point of this post. So basically what
Speaker 2: I wanted or what I tried to do here is
Speaker 2: that I tried to tell everyone that React actually won,
Speaker 2: but it's not the best thing in the world. So
Speaker 2: you have other options, and you have a lot of
Speaker 2: options actually, and there are situations and times when you
Speaker 2: need to explore them. You need to try to understand
Speaker 2: that what makes React great and what makes it well
Speaker 2: sometimes actually really painful to work with. And I have, actually,
Speaker 2: i would say, like a basic understanding of other JavaScript
Speaker 2: frameworks like Few or Angular. I have worked fairly with them,
Speaker 2: Like I'm not like an expert, but I work with
Speaker 2: them and I understand how they work, and also React Native.
Speaker 2: But one of the things that I really saw people
Speaker 2: do is that yeah, you should always learn one thing,
Speaker 2: and yeah you should just do these always, and it's
Speaker 2: it's always like React is the best, and learn this
Speaker 2: and then you don't need to do anything.
Speaker 3: Anything at all, like you can always do React.
Speaker 2: I mean, there's actually true to that because right now
Speaker 2: Windows is actually using a lot of React and React Native,
Speaker 2: and there are a lot of big companies that actually
Speaker 2: use React.
Speaker 3: So yeah, maybe that's true to that. But there are
Speaker 3: a lot.
Speaker 2: Of things that it's just I don't know. Sometimes it
Speaker 2: feels like, how would I say this, it's bloaty.
Speaker 3: Actually it's really.
Speaker 2: And one of the things that I'd say about React
Speaker 2: is that.
Speaker 3: It actually delivers.
Speaker 2: It actually sets it actually does what it sets out
Speaker 2: to do, and it does with flying colors.
Speaker 3: And one of the.
Speaker 2: Things that I actually really admire about React is that
Speaker 2: since its inception, React has been developing its ecosystem like
Speaker 2: every other month here or I don't know, like every day.
Speaker 2: And one of the things that make made this possible
Speaker 2: is the Facebook the matter team at Facebook or whatever
Speaker 2: they call this is then to the point is the
Speaker 2: people behind React are extremely talented and they always uh,
Speaker 2: they always deliver like they do deliver. And to answer
Speaker 2: your questions about the drawbacks, one of the things I
Speaker 2: don't really like about React is that when you when
Speaker 2: you have like a really big project, I don't know
Speaker 2: a lot of components. Maybe then it becomes really hard
Speaker 2: to upgrade something. Or like let's say you need to
Speaker 2: need to change a specific thing and you need to
Speaker 2: bring in all these all these other things into this.
Speaker 2: And when you have one single component, then you can
Speaker 2: update it easily.
Speaker 3: But when you have.
Speaker 2: One component that depends on like fifty other components, that
Speaker 2: it becomes really really hard to just update one single function.
Speaker 2: Like let's say you have just one state and that
Speaker 2: state is being used by five other components behind them,
Speaker 2: and let's say you need to update it in somehow.
Speaker 2: You need to update that somehow, and when you do that,
Speaker 2: there are like a lot of steps inside, and there
Speaker 2: are a lot of things inside that just re renders
Speaker 2: for no reason, I mean, just because they depends on
Speaker 2: one single thing. I mean, there are a lot of
Speaker 2: ways that you can prevent this. And let's just say
Speaker 2: React this is not the most performance framework, I'd say,
Speaker 2: and there are a lot of better ways to do this.
Speaker 2: But for what it's worth to create, this actually actually
Speaker 2: good for what it does.
Speaker 1: Yeah, yeah, no, I think that makes total sense. Like
Speaker 1: the fact that if you look at the actual scope
Speaker 1: of React, it really does what it's supposed to do.
Speaker 1: The problem is really the fact that a lot of
Speaker 1: people look at React and expect it to fix a
Speaker 1: lot of other problems in your application. When I say fix,
Speaker 1: it's more like it's not really fix, because it's not
Speaker 1: like it's originally broken. It's more like providing solutions. Right.
Speaker 1: If you compare, for example, to Angler, which is a
Speaker 1: much more, much larger framework, it does so much more
Speaker 1: like internationalization, for example, there is no baked in solution
Speaker 1: in React like this is the way that you should
Speaker 1: handle internationalization. So if you want to support multiple languages,
Speaker 1: you got to decide which library, which solution you're gonna
Speaker 1: use along with React to fix this problem. If you
Speaker 1: want to do something more fancy to control your forms,
Speaker 1: then there are multiple different ways for you to do that,
Speaker 1: and you have to choose which one you want. So
Speaker 1: it's simple. I guess that, at least to me. What
Speaker 1: makes more people get drawn into React is the fact
Speaker 1: that because it is seen as a single library, it's
Speaker 1: also simpler to explain because the scope of what it
Speaker 1: does is smaller. Right, you can read the entire React
Speaker 1: docs in maybe like two three hours if you just
Speaker 1: sit through it and read it's really straight to the point,
Speaker 1: and it's because it has a very specific set of
Speaker 1: problems that it solves, whereas if you look into other
Speaker 1: frameworks view jas, solid Angular, et cetera, their documentations are
Speaker 1: going to be more extensive, but that's also a reflection
Speaker 1: of the amount of things that they solve. And if
Speaker 1: you think that you're going to be free from those
Speaker 1: other problems, then you're just cheating on yourself because those
Speaker 1: problems eventually are going to come and then you're going
Speaker 1: to like you never just use React right, like you're
Speaker 1: always using React and a mix of a bunch of
Speaker 1: other libraries put together so that you actually have a framework.
Speaker 1: So I think that this ended up making React more
Speaker 1: interesting because it was easier to get started with it,
Speaker 1: but it also creates a lot of problems later because
Speaker 1: it is easy to learn because there are a lot
Speaker 1: of things that it does not address, and you will
Speaker 1: eventually have to address those things somehow. So yeah, at
Speaker 1: least to me, I would bat that that was one
Speaker 1: of the biggest reasons.
Speaker 2: Well, first of all, I think that the fact that
Speaker 2: we act does not provide like all of all of
Speaker 2: these things together. And first I thought, like, why do
Speaker 2: I need. I mean, first, the first framework that I
Speaker 2: ever used was View. So when I first came from
Speaker 2: View to yet, and when I was first doing some routing,
Speaker 2: it was.
Speaker 3: Like four or five years ago.
Speaker 2: It was during lockdown, Okay, So so when I was
Speaker 2: first doing that, I realized that there are a lot
Speaker 2: of things that I have to do manually, Like I
Speaker 2: have to write a lot of boiler bat and other stuff.
Speaker 3: Even with reducts.
Speaker 2: Reducs also has a lot of boy oil a bit,
Speaker 2: and that was actually really painful. But what I came
Speaker 2: to realize is that this is actually a good thing.
Speaker 2: And the reason I'm saying it's actually a good thing,
Speaker 2: I mean the fact that React doesn't provide anything. It's
Speaker 2: actually a good thing because when you do this, when
Speaker 2: you leave this to other people, then you get like
Speaker 2: a lot of pool stuff Like we have React router,
Speaker 2: we have dance stack router, we have rich router, we
Speaker 2: have a lot of other outers and they're doing a
Speaker 2: specific thing. I mean, in some sense, this is actually
Speaker 2: better for the ecosystem, even with React native.
Speaker 3: Like the fact that React.
Speaker 2: Doesn't provide a lot of things out of the box,
Speaker 2: it just makes a lot of sense for other people
Speaker 2: to come in and just use the bare bone, the
Speaker 2: minimal thing that we have with react native and make
Speaker 2: it into something that something that we want to make.
Speaker 2: Let's say, let's say with flutter. Okay, so with flutter,
Speaker 2: have you ever worked with butter?
Speaker 3: Just curious? I have not.
Speaker 1: It is something that I have been very curious about
Speaker 1: because I was exploring some of the hybrid development tools lately,
Speaker 1: and honestly, we were trying to do stuff with capacitor
Speaker 1: and it was just so painful that we were like, Okay,
Speaker 1: so no, that's not gonna happen. We're gonna have to
Speaker 1: either choose between react Native or Flutter because capacitor is
Speaker 1: just too painful. But we didn't get enough time to
Speaker 1: do the proper research on Flutter yet. So I would
Speaker 1: be very curious to also hear your thoughts on it,
Speaker 1: knowing that you're coming from this web out perspective.
Speaker 2: So the point I was trying to make it flutter
Speaker 2: is that they have a lot of things baked.
Speaker 3: In in the framework. Okay, right, like a lot.
Speaker 2: If you don't, you don't need a life, very like,
Speaker 2: that's how much thinks there there are an inter batter
Speaker 2: ecosystem and that actually creates a problem. You know, one problem.
Speaker 2: The problem it creates is that there are like I mean,
Speaker 2: most of the most of the apps.
Speaker 3: That you see have failed to it butter.
Speaker 2: You can see them, you can look at them. You
Speaker 2: can look at these apps and tell yeah that this
Speaker 2: app is made with butter. I mean, trust me, I
Speaker 2: can just show me some pictures. I will tell you
Speaker 2: if they're may be butter. It just it's that easy.
Speaker 2: I mean, it's it's it's actually like, how would I
Speaker 2: say this?
Speaker 3: The thing.
Speaker 2: Flutter is actually really easy. And that's the problem. So
Speaker 2: when everyone tries to do the same thing with the
Speaker 2: same the same line of code, it just every app
Speaker 2: looks the same way, right, I mean, have you noticed
Speaker 2: those those heathulp reap me apps that people show and
Speaker 2: they all look the same. That's because they are they
Speaker 2: were made with planted. And when when you have when
Speaker 2: someone shows you an app that was built with React Native,
Speaker 2: you don't have this. That's because Reagnaitive doesn't provide a
Speaker 2: specific set of rules to you. It just provides a
Speaker 2: view and then you write your own own thing. But
Speaker 2: with flatter, you have let's say a container and then
Speaker 2: you have a border, radius and everything, and when you
Speaker 2: do this, everything looks the same. But it's not the
Speaker 2: same with React Native, and I think that's actually a
Speaker 2: good thing. That's one of the things actually React got
Speaker 2: it right. Even with Angular and View, they have their
Speaker 2: own router, okay, so they don't like there's literally no
Speaker 2: other router in.
Speaker 3: Angular or View. I don't know if you have any
Speaker 3: other outer than your outer.
Speaker 2: Sorry the baked in one. I'm not sure though, but
Speaker 2: I know that Angler doesn't happen, so I mean there
Speaker 2: are other things with Angler that does have things like
Speaker 2: file based outing and stuff.
Speaker 3: I forget the fame.
Speaker 2: Of name, but the point I'm trying to make here
Speaker 2: is that the fact that React didn't provide anything with
Speaker 2: it with it with its original library, it made other
Speaker 2: people made.
Speaker 3: Their own thing. So we got a lot of stuff.
Speaker 2: We got next Chase, we got like remix and the
Speaker 2: ten step. And I think this is actually a good idea,
Speaker 2: and I think React actually got it right.
Speaker 3: And to think that.
Speaker 2: At first, I thought like, why would I need to
Speaker 2: install another another library just for louding.
Speaker 3: I mean I really thought that, Okay.
Speaker 1: That that does make sense in terms of flurter. I
Speaker 1: think that Flutter also has a I think we need
Speaker 1: to separate things a bit because I think there's like
Speaker 1: this broader concept of something that is more opinionated and
Speaker 1: solves more problems versus something that is smaller in scope
Speaker 1: and leaves you with more options to do whatever you want.
Speaker 1: So like React is something that is more scope and
Speaker 1: then lets you make choices afterwards, and Flutter and Angular
Speaker 1: are more opinionated and have their own way of doing things.
Speaker 1: But I think there's also like I think we need
Speaker 1: to separate the idea from the actual examples because Flutter
Speaker 1: and Angular they are both very opinionated and they have
Speaker 1: their own set of ways of how to do things,
Speaker 1: But you don't have, Like the problems that you were
Speaker 1: mentioning with Flutter are not things that I believe you
Speaker 1: are applicable for Angler. And I think part of that
Speaker 1: as well is because Flutter is also built on a
Speaker 1: programming language that is not very used outside of Flutter, right, Like,
Speaker 1: who else uses Dart besides Flutter developers, Like, I don't
Speaker 1: know any anyone else that uses Dart for anything besides
Speaker 1: people that that code with Flutter. But on the other hand,
Speaker 1: Angular is built on the it is built to run
Speaker 1: on the web, and thus it is just JavaScript at
Speaker 1: the end. Well it's actually typescript, but you get what
Speaker 1: I meant. It's just showscript. So you can still leverage
Speaker 1: the entire ecosystem of the web. You just have to
Speaker 1: sometimes add a few wrappers so that it so that
Speaker 1: it just works inside Angular, right, but you can still
Speaker 1: leverage all the web, which I think it's a is
Speaker 1: a big difference from Flutter. Right, Like I would say
Speaker 1: that there's a lot of things that React developers, View developers,
Speaker 1: Angular developers, solid developers, whatever. I think there's a lot
Speaker 1: that we can all share because it's just vanilla JavaScript,
Speaker 1: you know, vanilla web development. So anything that is vanilla
Speaker 1: web development anyone can use in any framework.
Speaker 3: The thing with.
Speaker 1: Flutters specifically is that there isn't much a leverage besides
Speaker 1: the things that were specifically built for Flutter. Would you
Speaker 1: say that that's true as well? Like, does that make
Speaker 1: sense or do you disagree with this view because you
Speaker 1: have more knowledge of Flutter so I might be wrong.
Speaker 2: No, Actually, you're one hundred percent right, And I think
Speaker 2: that one of the one of the areas that this
Speaker 2: actually really shines.
Speaker 3: I'll give you a proper sample. So I was working
Speaker 3: with how do I say, a project that has to be.
Speaker 2: Done in like a week, okay, so it was it
Speaker 2: was like four or five months ago, and it had
Speaker 2: to be done like instantly. I didn't have time to
Speaker 2: test it properly. I didn't have to have enough time
Speaker 2: to to to make it look good and stuff like.
Speaker 3: It was just an app.
Speaker 2: It had just one specific functionality, like it had a
Speaker 2: stop watch and it would work like stop watch okay,
Speaker 2: and they would record something and I would record the values,
Speaker 2: the laps and some other stuff. And it was not
Speaker 2: actually that much complicated. But if I had to do
Speaker 2: that in React Native, I don't think I could have
Speaker 2: done that in a week. But I did it with
Speaker 2: Flutter in a week. That's because Flutter actually provides you
Speaker 2: with a lot of things that you can just work with, right.
Speaker 2: So I didn't need to update a button.
Speaker 3: I just wanted the button that looks like a button. Okay.
Speaker 2: I just needed to get stuff done. And Flatter is
Speaker 2: actually really perfect for that, and Flutter actually have like
Speaker 2: a lot of functionality under the hood.
Speaker 3: It also provides you with that. But when you are.
Speaker 2: Working with let's say and an upper level thing.
Speaker 3: You don't need to go down.
Speaker 2: You don't want to go down the the the down
Speaker 2: level because the down level is generally more complex.
Speaker 3: Let's say I was doing one small thing the other day.
Speaker 3: I was just trying to.
Speaker 2: Make the border, you know, border in a U in
Speaker 2: a how do I say a straight line, you know,
Speaker 2: instead of just radius. So I learned that you can't
Speaker 2: just normally do that. You need to you know, to
Speaker 2: create a canvas. Then you need to custom make this.
Speaker 3: So that was you know, Uh, I don't know.
Speaker 2: I mean yeah, So when when the thing that you
Speaker 2: work it doesn't work, you need to go a lot
Speaker 2: of different ways. You need to have things a bit
Speaker 2: to make everything perfect you want to. But when you
Speaker 2: need to get stuff done, Father is actually really perfect
Speaker 2: for that. And that's I think you made a really
Speaker 2: good point there. Because when it comes to angle or
Speaker 2: view or react. Let's say we have an animation library like, uh, what.
Speaker 3: Should I say? Frame or frame?
Speaker 2: It doesn't work with Yeah, it doesn't work with view
Speaker 2: or angle. It only works to react. So let's say
Speaker 2: any frame animation library that actually works with all of
Speaker 2: them because it internally it uses uses trablescript or like
Speaker 2: d ths or swept or anything like that that actually
Speaker 2: works with all View, Angular and Beact framework because internally
Speaker 2: it's just JavaScript. It just works, right, So even though
Speaker 2: you don't have a specific library for Angular, you have
Speaker 2: one for React, then you can. I mean, if that
Speaker 2: specific library wasn't built for React like it was built
Speaker 2: for JavaScript, then you can actually use it with javascrip,
Speaker 2: with Angular or View, not just React.
Speaker 3: But most of the time I.
Speaker 2: Actually saw a lot of libraries focus on React first
Speaker 2: then move on to the other frameworks, which is actually
Speaker 2: a pretty common thing. But yeah, you made a good
Speaker 2: point that I would flutter not being as you know,
Speaker 2: as consistent like with the JavaScript ecosystem.
Speaker 3: But one thing I'd say, though, the amount.
Speaker 2: Of packages that the art has sort of Flutter has,
Speaker 2: it's actually pretty I'd say, I don't know, it's just unbelievable.
Speaker 2: Where did this munch package come from? It's actually kind
Speaker 2: of weird, to be honest, Like it's really big. Ecosystem
Speaker 2: is actually really big. There are a lot of people
Speaker 2: developing libraries, and I don't see them on anywhere, Like
Speaker 2: I don't see them on YouTube, I don't see them
Speaker 2: on any podcasts. I don't see them on like YouTube comments.
Speaker 2: You know, there are a lot of people on YouTube
Speaker 2: governments saying yes, Reacted the best and reacnatic, these these
Speaker 2: and that. But I don't see a lot of people
Speaker 2: talking about Fludder. But when I go through the package
Speaker 2: store with art, I think pup dot depth. So when
Speaker 2: I go there, I see a lot of packages, which
Speaker 2: is like where did this come from? And one other
Speaker 2: things I would I'd like to say this doesn't mean
Speaker 2: that the fact that React has a lot of packages
Speaker 2: doesn't mean that actually they always work. I will give
Speaker 2: you a proper example. So last year I was working
Speaker 2: with a project with NFC. Do you have any idea
Speaker 2: with NFC?
Speaker 1: Yep.
Speaker 2: So, so with NFC you need the native support, right,
Speaker 2: you can't do anything with the jabascript.
Speaker 1: Y im sorry, Just to just to make this is
Speaker 1: also clear to the audience, UH, we're talking about n
Speaker 1: f C, not n f T. So it's not about
Speaker 1: uh crypto stuff. It's about being able to like magnetically
Speaker 1: transmit information like a credit card that has an NFC
Speaker 1: UH signal and then you can capture that and grab
Speaker 1: the data.
Speaker 3: That's it.
Speaker 2: Yes, that's that's NFCA. It's actually I think like near
Speaker 2: field communication or something like that. Yeah, So basically it's
Speaker 2: a technology that lets you to payments and other stuff.
Speaker 2: So the thing that we were doing is that we
Speaker 2: were scanning some cards, some NFC cards, and we're writing
Speaker 2: some data on it, and then we're retrieving data and
Speaker 2: we're doing us some other stuff internally. Now, so I
Speaker 2: at first I thought this would I mean, I'm a
Speaker 2: reacnative developer, okay, So I first tried to use Reactnative.
Speaker 2: And when I was using Reactnative, there was this package
Speaker 2: called NFC Manager that you use for NFC with Reacnative,
Speaker 2: and I used it, and.
Speaker 3: I don't know, it just.
Speaker 2: It just feels felt so much buggy, you know, Like
Speaker 2: I mean, the weed worked fine, but when it came
Speaker 2: to write, I couldn't write a lot of cards simultaneously.
Speaker 2: Just just hangs for a bit and throws weird air.
Speaker 2: I don't I didn't get the end of it.
Speaker 3: I didn't.
Speaker 2: I just couldn't make it.
Speaker 3: Work, you know.
Speaker 2: But when I came to Flutter for help, I mean
Speaker 2: it was out of desperation because I couldn't get it working.
Speaker 3: Properly with Reacnative. So I just came to Flutter for that.
Speaker 3: So when I came to Flutter, I found.
Speaker 2: Out that there was this package that is weirdly also
Speaker 2: called NFC manager. Yeah, I know, that's actually weird. The
Speaker 2: package had the same name. So when I used that
Speaker 2: Flutter Flutter package called NFC manager, it worked like.
Speaker 3: It I mean, it's actually really really good.
Speaker 2: Everything with reading, writing, and it just worked. Also, it
Speaker 2: has a specific features called called stream, which is it's
Speaker 2: actually really good, like this is one of the best
Speaker 2: features in my opinion, in Dart, which is stream, the
Speaker 2: fact that you can listen to things. And I mean
Speaker 2: could say that javas Kip also has that, or like
Speaker 2: any other languages also have that, but trust me, this
Speaker 2: is actually better than most other languages. So yeah, that
Speaker 2: actually properly worked out for me, even though I think
Speaker 2: Reacnative has a bigger ecosystem. So when it came to
Speaker 2: a how do I say this an uncertain level of thing,
Speaker 2: Actually Flutter worked and Reacnative didn't. I mean, I don't know,
Speaker 2: maybe just scale issue. From my side, I didn't know
Speaker 2: how to get it working, but I didn't have to
Speaker 2: do anything with Flutter.
Speaker 3: It just worked. Okay, it didn't be React native. That's
Speaker 3: exactly my point.
Speaker 1: Yeah, that that is a big advantage indeed, like depending
Speaker 1: on how fast you need the thing to be done,
Speaker 1: and also how much custom design do you want with that.
Speaker 1: I think that's a good good thing to consider. And Peter,
Speaker 1: do you have any any questions anything you want to
Speaker 1: add or mention thus far?
Speaker 4: Okay, yeah, yeah I do, so I would say questions
Speaker 4: I think too.
Speaker 5: So I think my first question is as forgures, probably
Speaker 5: are beyond the defense or react, so maybe just beyond
Speaker 5: the defense at the point in the sense that now
Speaker 5: they yeah, there are usually situations where like people have
Speaker 5: actually mentioned that yeah, we have packages are working, or
Speaker 5: we have kind of promote setting kind of design or
Speaker 5: patterns or coding conventions that doesn't really scale, doesn't really
Speaker 5: make sense in love opinions. So but then I will
Speaker 5: usually ask the question that at this point, like do
Speaker 5: you think it's actually like do you think React is
Speaker 5: to blame or maybe the ones using React as the framework,
Speaker 5: because yeah, they are probably many usually like I think,
Speaker 5: I think I usually use this example of the use
Speaker 5: effect there's disuse effect abused, and I went to react.
Speaker 5: They are React on dogs actually has a post from
Speaker 5: them about on why you shouldn't use react, muse effects
Speaker 5: so much.
Speaker 4: But yet you see a lot of people kind of
Speaker 4: using it or maybe your business.
Speaker 5: So at this point where you kind of blame the
Speaker 5: framework or the framework, is the film workers or actually
Speaker 5: rather than maybe or the people.
Speaker 4: Doing it or people building or using this framework. Are
Speaker 4: they using it? Probably?
Speaker 5: Are they following the rules, are definitely in the conventions
Speaker 5: of it. Are they also trying to kind of inequate
Speaker 5: like maybe actual like design patterns like maybe the popular
Speaker 5: want keys, siagny and the West to building react applications?
Speaker 4: So what do you think is.
Speaker 3: Okay? So, first of all, I think that.
Speaker 2: Both of this, both of these design patterns or paradigms
Speaker 2: or like whatever you want to call it, I think.
Speaker 3: They have their place.
Speaker 2: Fast of all, because there are times when you need
Speaker 2: need to do something really quickly, and I think that
Speaker 2: that's where flatter actually shines. You don't need to do
Speaker 2: a lot of stuff to just build an app. But
Speaker 2: to answer your question if whether to react is to
Speaker 2: blame here, actually I don't think so. I mean, honestly,
Speaker 2: they could have done a little better with the recommendation
Speaker 2: and stuff like I'm actually going back to flatter again,
Speaker 2: but Flatter actually provides some other packages that works with Flutter.
Speaker 2: I mean, the Flatter team actually provides some other packages
Speaker 2: like go router and provider and some other packages. These
Speaker 2: are also like extra packages. You have to manually install them,
Speaker 2: but Fatter Fatter team actually maintains them and builds them.
Speaker 2: But you don't see this in in in React or
Speaker 2: React Native to the matter for that matter, because they
Speaker 2: don't provide any extra stuff. The I mean to to
Speaker 2: quote Don Abramoff, he actually said the only pro package
Speaker 2: that React provides is the React So yes, he actually
Speaker 2: said that once. So one of the things that I
Speaker 2: do think that we need to we need to we
Speaker 2: need to think about when making a decision like this,
Speaker 2: is to when what suits you. Okay, so let's say
Speaker 2: you have let's say you are making a really big,
Speaker 2: big application, like you don't know what to expect, you
Speaker 2: don't have a proper understanding of what's going to happen.
Speaker 3: Then yeah, I don't know.
Speaker 2: If you do something obinionated like Flutter, changing things, it's
Speaker 2: actually really hard. But when it comes to React Native,
Speaker 2: it's actually pretty easy. It's actually easier than Flutter. That's
Speaker 2: what I found. And one of the things is that
Speaker 2: about use effect. You said, well, let's just say use
Speaker 2: effect actually creates more problems than it actually solves. That's
Speaker 2: I don't know, that's actually probably a bold statement.
Speaker 3: But when you have.
Speaker 2: One of the things that I do want to mention
Speaker 2: here is that when you use more than like three
Speaker 2: or four use effect, Yeah, yeah, you should probably rename
Speaker 2: that function to use food gun that time, because that's
Speaker 2: exactly what users did. When you have multiple use effect
Speaker 2: in your code base. You just, I mean, anything could
Speaker 2: go wrong at that time, like anything.
Speaker 3: This is just what happens. I mean, I don't know
Speaker 3: how to make this better.
Speaker 2: Like even with they React nineteen stuff with their they're
Speaker 2: shipping like they have some they have a compiler now,
Speaker 2: so I guess they're not a library anymore. But even
Speaker 2: with that, I don't see any improvement. It is a fact,
Speaker 2: and I don't know what improvement would they provide. I
Speaker 2: just I don't I don't see a proper solution to
Speaker 2: this problem at all.
Speaker 4: Yeah, okay, yeah, okay, yeah, let me I actually get that.
Speaker 4: Well then, one thing one thing about.
Speaker 5: Reartic ism that react itself is more copmumunated, right, So
Speaker 5: it's I think it's and that's kind of like it's
Speaker 5: less you and because depending on the just the.
Speaker 4: Requirements or your or your requirements or any is recovering.
Speaker 5: So right, So there are people who have who kind
Speaker 5: of like kind of maybe it's to mind pattern and like, yeah,
Speaker 5: they do want to follow up. They don't want it
Speaker 5: like a framework something that kind of have a building
Speaker 5: together and then kind of follows a specific pattern I
Speaker 5: think from my for my expert, I think something like
Speaker 5: angular now right, a black follows like a very good
Speaker 5: like OPI convention and many design systems you follow. Yeah,
Speaker 5: and that's so many people, so many people who feel
Speaker 5: that yeah does also have like their demerits in the
Speaker 5: sense that the few there's a learning of there's a
Speaker 5: large higher learning of maybe okay, or the ease of
Speaker 5: kind of finishing or like doing something quickly. So people
Speaker 5: feel maybe you have to learn a lot to kind
Speaker 5: of frame exactly use like this pattern.
Speaker 4: But then creat kind of gives you like if for
Speaker 4: more more just more like a.
Speaker 5: Cameras, Oh, this is just what you need to do
Speaker 5: and you could use anything you want based as imagination and.
Speaker 4: Yeah, that has actually has that ratly created.
Speaker 5: The merits in the sense that of what when people
Speaker 5: really see us like kind of our only is like an.
Speaker 4: Abuse of the framework ware or the library world.
Speaker 5: So many people use that to kind of they're right,
Speaker 5: they don't follow like actual patterns and conventions claus and
Speaker 5: they kind of abuse the use of libraries, which we
Speaker 5: actually mentioned because they're setting like okay, they're setting things
Speaker 5: that people feel that should be lively, but you could
Speaker 5: actually do it with just like javascart to see javaskearting clienting.
Speaker 4: Right, So I don't know.
Speaker 6: So the why why I'm explaining this is that now
Speaker 6: in this in this kind of with this kind of
Speaker 6: concept now right, who it's like it's react itself to
Speaker 6: believe rather than then brad how like people how people
Speaker 6: are adopted.
Speaker 5: It's actually the problem because I think that's those the
Speaker 5: main thing and tend to kind of push out like okay, yeah,
Speaker 5: every everything has the merits and the merits, but I
Speaker 5: think it's based on how you use it or how
Speaker 5: do developer use it?
Speaker 4: Yeah, so what do you say? Yeah, what do you say?
Speaker 2: Well, first of all the fact that react is unopinionated
Speaker 2: means that you can do anything to react or reactnated.
Speaker 2: But that matter but at the same time, I mean,
Speaker 2: I don't know. I will answer your question on the
Speaker 2: on the plane, but first I just I don't know.
Speaker 2: You know, reacnative doesn't even have a select component, Like
Speaker 2: you need a library to select something, or you need
Speaker 2: to create like select, you know, form select when you
Speaker 2: click on something and drop down a bit. React doesn't
Speaker 2: have anything like that. Reagnated sorry, Reagnity doesn't have anything
Speaker 2: like that. You need to create. You need to create
Speaker 2: your own component to make that happen, or just install
Speaker 2: a third party library. I mean, why, it's just a
Speaker 2: simple thing.
Speaker 4: It just I don't know.
Speaker 2: Just Also, I don't think React is to blame here.
Speaker 2: I mean, they were trying to do one thing and
Speaker 2: they did it properly. And the fact that the React
Speaker 2: actually doesn't provide anything, it's actually useful in a lot
Speaker 2: of cases. Let's say, uh, let's say let's talk about
Speaker 2: the company the Matter. So they have a lot of applications, right,
Speaker 2: they have a really big applications called Facebook, you know,
Speaker 2: so they.
Speaker 3: Have a lot of components there.
Speaker 2: So how would you just push one thing, like how
Speaker 2: do you push a specific set design or battles on?
Speaker 2: Like I'm emilion components. I mean, can you even do that? Like,
Speaker 2: how do you even do that? Like all of these
Speaker 2: have like different uh you know people, Facebook actually have
Speaker 2: a lot of subsections to like developers or Facebook dot
Speaker 2: com carriers to develop Facebook dot com and shops dot Facebook.
Speaker 2: They have a lot of things like this. So all
Speaker 2: of these are different applications. So even if you try
Speaker 2: to do something like this, how do you even like propose.
Speaker 3: A system that actually works with all of this?
Speaker 2: Like I mean, if if if if you're doing something
Speaker 2: like uh, pushing at something like yeslink, you know, like
Speaker 2: a linking something like that, you can do that, But
Speaker 2: how do you push design? I mean I don't know, honestly,
Speaker 2: and I don't know it just maybe I don't. I
Speaker 2: honestly don't know how even could do that even if
Speaker 2: you try to. But so one of the things that
Speaker 2: I'd like to say here is that Butter is actually
Speaker 2: backed by Google, and Google actually pushes their own design,
Speaker 2: just material design, and each and every app that you
Speaker 2: create with Butter actually comes with a material design. I
Speaker 2: mean you can change that you have like other other
Speaker 2: internal these design systems with Coupertino and other stuff for iOS.
Speaker 3: You know, So that'll just look different.
Speaker 2: You know, you can do that, but mostly, like I
Speaker 2: don't know, like ninety percent of the time, people actually
Speaker 2: use the default material app you know, so they're pushing something.
Speaker 2: And I think that both of these approaches actually works
Speaker 2: and their book, both of them have their place in
Speaker 2: this and we just have to decide when to use switch.
Speaker 3: Yeah that's about it.
Speaker 5: Yeah, Yeah, I think that's yeah, I think that that works. Actually,
Speaker 5: I think the answer that's kind of great. So I
Speaker 5: think it's yes, it depends on the developers.
Speaker 4: I'm reacts, not.
Speaker 5: That thes are the ones that kind of architects or
Speaker 5: viuild the applications and react to be gate to decide how.
Speaker 4: Whatever, like what you use on how to do it,
Speaker 4: come out to use it.
Speaker 1: So like look as you have any Yeah, I do
Speaker 1: have one last thing before we wrap up, which is
Speaker 1: out of all that, we didn't even talk about or
Speaker 1: explore the alternative of just using native mobile development, just
Speaker 1: doing native Android native iOS. And I just wanted your
Speaker 1: opinion on that, Panto, because I think this definitely generates
Speaker 1: a lot of polemic, right, Like a lot of people
Speaker 1: have different opinions about that, but I think there are
Speaker 1: people that believe that we should prefer native apps and
Speaker 1: people that think we should prefer hybrid apps. I'm not
Speaker 1: even talking about Flutter versus React Native. I'm just talking
Speaker 1: about hybrid versus native on mobile, And I just wanted
Speaker 1: to hear your thoughts. Do you think that there's still
Speaker 1: space and reasons to go with native development in twenty
Speaker 1: twenty four or let's just say twenty twenty five, because
Speaker 1: we're already ending twenty twenty four, right, so in twenty
Speaker 1: twenty five, do you think there's two reasons to go
Speaker 1: with native iOS and android development or this is the
Speaker 1: pass and we should definitely go with hybrid independently of
Speaker 1: it being Fluttered or React Native.
Speaker 2: Actually, there's been an interesting project called Corklean Multiplatform.
Speaker 3: Have you heard about it? No?
Speaker 1: Sorry, I couldn't understand how. What's the name.
Speaker 2: Cotlin Codlin multi Platform? Oh okay, yeah, it's actually Cotlan
Speaker 2: multi Platform. So basically it's it's like React sorry, it's
Speaker 2: like React Native for Flutter, but you write code with
Speaker 2: Cotland and that the thing with this is that the
Speaker 2: Android developers, the existing Android developers already knows okay, already
Speaker 2: they already know Godlin that they're working with Cotlin every day.
Speaker 2: They're working with composed. The Composed is the system where
Speaker 2: you're uh, you're you write components and with with with
Speaker 2: native Android development, you know, normal component you write them
Speaker 2: with compost. So let's say you are an Android developer, right,
Speaker 2: and you can develop apps with just Cocklin and.
Speaker 3: Uh you will write it once and.
Speaker 2: Everything else just works in an iOS device too, And
Speaker 2: I think that's actually pretty good. Like in Android you
Speaker 2: get the existing existing thing, like the exact same thing,
Speaker 2: the exact same experience, like a native Android app, but
Speaker 2: on on iOS you actually get the the exact same app.
Speaker 3: But the problem with this is that on iOS it's.
Speaker 2: Not actually native, but you do have the capacity to
Speaker 2: write native god. So to answer your question whether we
Speaker 2: should use native or or a cross platform framework, I
Speaker 2: would say again one of.
Speaker 3: The things that one of the things that I found
Speaker 3: out is that.
Speaker 2: If your project grows to a certain point, you know,
Speaker 2: like let's say you have a project that you've been
Speaker 2: working with like one year, two year, three year, there
Speaker 2: will come a time when you need to work something.
Speaker 2: You need to work with the native libraries or the
Speaker 2: native system, like both of these platforms like Butter and
Speaker 2: React Native. They both provide stuff like modules, and Butter
Speaker 2: has something called channels that you can you can communicate
Speaker 2: with a native player like you can execute a Cordian
Speaker 2: code for Android and Swift code in iOS. Both of
Speaker 2: this framework actually have that. But my point is there
Speaker 2: will come a time when you if your project.
Speaker 3: Is big enough.
Speaker 2: That's important by the way, if your project is big enough,
Speaker 2: they will come a time when you need to work
Speaker 2: something with Native. So either you'll like it or not,
Speaker 2: you just have to use Native, Okay. So I mean
Speaker 2: at the at this with this, you could argue that
Speaker 2: that why not build the app with the native thing? Well,
Speaker 2: the thing is that you're not going to develop any
Speaker 2: app as fast as you can with cross platform, cross
Speaker 2: part frameworks like React Native for fatter, if you're doing
Speaker 2: it with Native Native Android or Native Virus, you're you're
Speaker 2: never going to be able to do that. So that
Speaker 2: that's because both of these languages were like Courtlin and Swiss,
Speaker 2: they're actually well they actually have a lot of similarities,
Speaker 2: but they're different. Their whole system is different, and Reid
Speaker 2: works in a certain way. I always works in another way.
Speaker 2: I mean, if you ever worked with like specific Native
Speaker 2: band missions like Android doesn't cheare about most of the permissions,
Speaker 2: but when you're working with iOS, you need to set
Speaker 2: specific things in specific order to just keep everything working.
Speaker 2: So it's just it's really painful if at times if
Speaker 2: you're not using something like but audient native, it's really
Speaker 2: hard to do that.
Speaker 3: But at the same time, there will come a time
Speaker 3: when you do need to use the native pictures.
Speaker 2: So yeah, I mean again that actually depends on what
Speaker 2: you're trying to do. If you if you like you said,
Speaker 2: the hyperd architecture, hybrid architecture is actually pretty good, I
Speaker 2: think because you have both the native options you know,
Speaker 2: and the prospert from applications, and you're doing specific stuff
Speaker 2: that that's actually what Facebook does, you know, Facebook Messenger,
Speaker 2: and like other Instagram and other apps like this, they're
Speaker 2: hybrid apps.
Speaker 3: They have both the React native system and native native
Speaker 3: code inside. That makes them the hybrid apps. And yeah,
Speaker 3: so to.
Speaker 2: Answer your question, probably I would say think about what
Speaker 2: you're doing. You think if you think your project is
Speaker 2: like anything like a few moments if I was talking
Speaker 2: about NFC, if your project is something like this that
Speaker 2: needs to communicate with the native fair, then I think
Speaker 2: you're actually better off writing something like writing writing the
Speaker 2: app logic totally from the scratchy native even though it
Speaker 2: will take some time to actually take more time, but
Speaker 2: in the end, it will make your app more more accessible.
Speaker 2: And also one of the one of the things which
Speaker 2: is actually really important is performance. You're never gonna get
Speaker 2: the performance from cross platform apps like you would get
Speaker 2: from the native paps, Like, I mean, how could you, right,
Speaker 2: It's just it's not possible. But that being said, fatter
Speaker 2: is actually very fast. I mean react metifision, but flatter
Speaker 2: is flatter.
Speaker 3: Is actually very fast.
Speaker 2: So I mean, who's gonna do Who's gonna see the
Speaker 2: difference between milliseconds? Right, Let's say something is happening in
Speaker 2: two hundred two hundred millisecond and three hundred millisecond.
Speaker 3: Who's going to notice the hundred million second difference? No one?
Speaker 2: That's so so yeah, I think that you should decide
Speaker 2: what what you're trying to do and then make a decision.
Speaker 3: Also, there are there are other.
Speaker 2: Things that actually a lot easy in flutter or react native,
Speaker 2: then in in in doing in natively, you know, like
Speaker 2: sending notifications. Yeah, that kind of th acts in native side.
Speaker 3: I've worked with.
Speaker 2: I have knowledge for developing some things internally, and yeah,
Speaker 2: I'd rather do it in Flutter.
Speaker 3: I mean, I don't know.
Speaker 2: Maybe it's because fire Base is also backed by Google,
Speaker 2: so maybe that's why they work together to make it simpler. Yeah,
Speaker 2: that could be a reason, but I don't know. I
Speaker 2: just found it more easy in in flutter than in native.
Speaker 2: Side again, that that could be my skill issue, but yeah,
Speaker 2: that's that's my opinion. If you have something really big,
Speaker 2: something really complex, then you're probably good at native. But
Speaker 2: if you don't, just if you don't need that all
Speaker 2: that native stuff, you're just working with a specific thing.
Speaker 2: So recently I worked with an app. I developed an
Speaker 2: app actually for for our for our HI department. And
Speaker 2: if you think about the HI department, they're never gonna
Speaker 2: need any native features, right, I mean, what are they gonna.
Speaker 3: Do scan us?
Speaker 2: So yeah, they're never gonna need those features, so WATA
Speaker 2: is probably retally good for them. I mean I could
Speaker 2: just do some fancy animation and stuff. So yeah, that's
Speaker 2: that's my point. You need to you need to think
Speaker 2: about what you're trying to do and then choose what
Speaker 2: suits you the best.
Speaker 1: Makes sense, makes sense all right, dude, thank you so much.
Speaker 1: This has been a really valuable episode. And yeah, it
Speaker 1: was a pleasure to have you. Let's do some quick
Speaker 1: promos and then we can wrap this up. On my end,
Speaker 1: I am gonna just promote the companies that produce this show.
Speaker 1: So Top and Doves a Onvoid. Pop Anddaves has a
Speaker 1: lot of other podcasts as well, So if you're interested
Speaker 1: in some other framers, some other technologies, definitely check out
Speaker 1: some of the other podcasts from top and down. If
Speaker 1: you just want to know more about web development in general,
Speaker 1: there's also JavaScript Jabber, which is a podcast just about
Speaker 1: JavaScript and web development in general, also made by toppin'devs.
Speaker 1: And if you or your company is looking for more
Speaker 1: web developers to augment your staff and just develop features quicker,
Speaker 1: do check out onvoid dot com. This is U n
Speaker 1: voi d dot com and reach out. They may have
Speaker 1: exactly what you're looking for. So, yeah, these are going
Speaker 1: to be my promos for today, Peter, how about you
Speaker 1: want to go next?
Speaker 4: Yeah, for the I don't have any.
Speaker 1: Okay, okay, all right, how about you print anything specific
Speaker 1: you'd like to promote.
Speaker 2: Yeah, so I'm I'm prompt them I'm read native developer.
Speaker 2: If you need any help, just reach out and if
Speaker 2: you're if you like to work on something, then you can.
Speaker 2: You can reach out to me on my email and
Speaker 2: my website bound dev.
Speaker 3: So yeah, thanks.
Speaker 1: All right, And for those that want to reach out too,
Speaker 1: Just so you know, his website is Pronto dot dev.
Speaker 1: This is b r a n t A dot dev.
Speaker 1: So I know that the way that it pronunciates is prontal,
Speaker 1: but it's not an O at the end. It's an A.
Speaker 1: So make sure that I'm sending the For those of
Speaker 1: you that are listening to this on a podcast player
Speaker 1: that has a comments section like YouTube or Facebook, whatever,
Speaker 1: then there's going to be a link to Pronto's website there.
Speaker 1: But if you're just listening to us, then it is
Speaker 1: p r a n t A dot dev and you
Speaker 1: can and reach out to fronto if you're looking for
Speaker 1: help to build something. Yeah, awesome, awesome, Okay, thank you, yes,
Speaker 1: thank you for your time. Nice meeting you and Helen.
Speaker 3: Thank you for having me all right, thank you.
Speaker 1: For joining me, Thank you everyone. Thank you for sticking
Speaker 1: up until the end of the show. And I will
Speaker 1: see you on the next one.