WEBVTT

1
00:00:05.320 --> 00:00:08.800
<v Speaker 1>Hey, welcome to React Round Up, the podcast where we

2
00:00:08.880 --> 00:00:09.800
<v Speaker 1>keep you updated on.

3
00:00:09.800 --> 00:00:11.160
<v Speaker 2>All things React related.

4
00:00:11.599 --> 00:00:14.839
<v Speaker 1>This show is sponsored by Raygun and produced by Top

5
00:00:14.880 --> 00:00:17.640
<v Speaker 1>and Doves and onboard. Top and Doves is very great

6
00:00:17.719 --> 00:00:19.960
<v Speaker 1>Top and Doves, so get top and pay and recognition.

7
00:00:20.039 --> 00:00:24.039
<v Speaker 1>We're working on interesting problems and making meaningful community contributions.

8
00:00:24.079 --> 00:00:27.800
<v Speaker 1>And Onvoid, which promotes which provides remote design and software

9
00:00:27.800 --> 00:00:31.120
<v Speaker 1>development services on a task basis, so clients only pay

10
00:00:31.120 --> 00:00:35.799
<v Speaker 1>when tests are delivered and approved. In today's episode, we

11
00:00:35.920 --> 00:00:38.640
<v Speaker 1>have a very special guest so that we can talk

12
00:00:38.679 --> 00:00:44.920
<v Speaker 1>about React Native versus capacity just as an even larger

13
00:00:44.960 --> 00:00:46.759
<v Speaker 1>interro for those of you that may not know what

14
00:00:46.799 --> 00:00:49.920
<v Speaker 1>the pastor is is yet another technology that allows you

15
00:00:50.039 --> 00:00:53.960
<v Speaker 1>to transform your web code so that it can run

16
00:00:54.039 --> 00:00:58.119
<v Speaker 1>all mobile as well, similar to how React Native does

17
00:00:58.119 --> 00:01:00.640
<v Speaker 1>it like in terms of the final product, but they.

18
00:01:00.520 --> 00:01:02.039
<v Speaker 2>Do it in a very different ways.

19
00:01:02.200 --> 00:01:04.879
<v Speaker 1>So today we're going to talk about those two technologies,

20
00:01:05.879 --> 00:01:08.400
<v Speaker 1>what are the differences between them, and when to use

21
00:01:08.439 --> 00:01:11.959
<v Speaker 1>each depending on your context and the context of your

22
00:01:12.120 --> 00:01:16.920
<v Speaker 1>team and your company. My name is Lucas Spaganinia. I'm

23
00:01:16.959 --> 00:01:19.280
<v Speaker 1>your host in a podcast, and joining me in today's

24
00:01:19.280 --> 00:01:27.359
<v Speaker 1>episode is also the host Peter Osa. I agree, and

25
00:01:27.959 --> 00:01:33.319
<v Speaker 1>our very special guests coming back for another for another episode.

26
00:01:33.840 --> 00:01:35.599
<v Speaker 1>Jamn Homegram.

27
00:01:36.599 --> 00:01:38.719
<v Speaker 3>Yeah, nice to be on again. Really nice to see

28
00:01:38.760 --> 00:01:39.280
<v Speaker 3>you guys again.

29
00:01:40.239 --> 00:01:41.159
<v Speaker 2>It's great having you.

30
00:01:41.560 --> 00:01:44.840
<v Speaker 1>For those of you that may have that may have

31
00:01:45.000 --> 00:01:49.760
<v Speaker 1>not listened to the previous episode where Jamen was, I

32
00:01:49.799 --> 00:01:53.200
<v Speaker 1>think it was like four or five episodes ago, something

33
00:01:53.280 --> 00:01:57.959
<v Speaker 1>like that, but it was an episode completely focused.

34
00:01:57.599 --> 00:01:58.640
<v Speaker 2>On React Native.

35
00:01:59.040 --> 00:02:02.280
<v Speaker 1>So if you want to deeper into that, just go

36
00:02:02.439 --> 00:02:04.359
<v Speaker 1>to the history of the show and then you go

37
00:02:04.439 --> 00:02:07.040
<v Speaker 1>back a few episodes and you will see it. This

38
00:02:07.120 --> 00:02:10.479
<v Speaker 1>as a recap. Jamen is the CEO and co founder

39
00:02:10.520 --> 00:02:16.520
<v Speaker 1>of Infinite Red, which is a company specialized in building

40
00:02:17.879 --> 00:02:20.719
<v Speaker 1>either from scratch or just taking a project in the

41
00:02:20.759 --> 00:02:25.400
<v Speaker 1>middle and completing it in React Native. So this is

42
00:02:25.439 --> 00:02:28.319
<v Speaker 1>what he does for a living. He's the perfect person

43
00:02:28.400 --> 00:02:31.120
<v Speaker 1>to tell us the difference between those two technologies.

44
00:02:31.520 --> 00:02:34.039
<v Speaker 3>That is a great pitch. I should hire you to

45
00:02:34.080 --> 00:02:35.719
<v Speaker 3>do all of our promos. That's perfect.

46
00:02:35.719 --> 00:02:44.400
<v Speaker 1>We can do that happily. Accept Yeah, all right, so Jamin,

47
00:02:44.639 --> 00:02:49.039
<v Speaker 1>let's get into it. Do you mind giving the audience

48
00:02:49.120 --> 00:02:52.800
<v Speaker 1>a quick pitch if you feel as necessary, because I

49
00:02:52.800 --> 00:02:56.280
<v Speaker 1>think I kind of introduced the goal of Capacitor, But

50
00:02:56.319 --> 00:02:58.759
<v Speaker 1>if you feel there's anything else necessary before we get

51
00:02:58.759 --> 00:03:00.560
<v Speaker 1>into the differences between them.

52
00:03:00.840 --> 00:03:04.319
<v Speaker 3>Now, yeah, I think you know, most of the time,

53
00:03:04.800 --> 00:03:07.520
<v Speaker 3>Capacitor is connected to Ionic, and a lot of people

54
00:03:07.560 --> 00:03:11.560
<v Speaker 3>are probably familiar with Ionic, which is I would say

55
00:03:11.599 --> 00:03:15.759
<v Speaker 3>like more of a full featured framework, and Capacitor is

56
00:03:15.919 --> 00:03:20.759
<v Speaker 3>more of like a cross platform native run time a lot,

57
00:03:20.800 --> 00:03:24.280
<v Speaker 3>you know, and we'll talk about the similarities and differences

58
00:03:24.280 --> 00:03:27.479
<v Speaker 3>between that and React Native and it leans on the

59
00:03:27.520 --> 00:03:31.360
<v Speaker 3>web technologies, but just like Reacnative, it has a lot

60
00:03:31.400 --> 00:03:34.759
<v Speaker 3>of the same you know, kind of goals and features

61
00:03:34.759 --> 00:03:39.120
<v Speaker 3>and whatnot. Now, I do want to tell the audience

62
00:03:39.840 --> 00:03:41.960
<v Speaker 3>I've been doing React Native for eight and a half years.

63
00:03:42.360 --> 00:03:46.919
<v Speaker 3>I the last Capacitor or Ionic project, I should say

64
00:03:47.360 --> 00:03:50.960
<v Speaker 3>that I've done was about that long ago. So what

65
00:03:51.120 --> 00:03:55.439
<v Speaker 3>I know about Ionic and Capacitor has been from a

66
00:03:55.479 --> 00:03:58.520
<v Speaker 3>distance or spinning up a little like play apps. I

67
00:03:58.560 --> 00:04:01.840
<v Speaker 3>haven't built apps in Capacitor that are that are like

68
00:04:02.360 --> 00:04:05.199
<v Speaker 3>really significant, so I always have to put that caveat

69
00:04:05.199 --> 00:04:07.800
<v Speaker 3>out there like that this is, you know, like this

70
00:04:07.840 --> 00:04:09.719
<v Speaker 3>is something that I want to make sure that I

71
00:04:09.759 --> 00:04:12.199
<v Speaker 3>that I do a good job of comparing the two

72
00:04:12.439 --> 00:04:16.000
<v Speaker 3>and and don't just lean on my own like experience

73
00:04:16.240 --> 00:04:20.600
<v Speaker 3>and and and even my own what my company specializes

74
00:04:20.639 --> 00:04:24.720
<v Speaker 3>in and that sort of thing. With that said, in

75
00:04:24.839 --> 00:04:29.560
<v Speaker 3>order to like prep for this episode, I actually reached

76
00:04:29.600 --> 00:04:34.600
<v Speaker 3>out to my friend Jessica Sachs, who used to work

77
00:04:34.600 --> 00:04:37.759
<v Speaker 3>for Ionic, and I went and I actually chatted with

78
00:04:37.839 --> 00:04:40.920
<v Speaker 3>her and I said, hey, look, I really want to

79
00:04:40.959 --> 00:04:43.360
<v Speaker 3>make sure I've got this right, and and we talked

80
00:04:43.399 --> 00:04:47.279
<v Speaker 3>for a while about what, you know, what Ionic and

81
00:04:47.360 --> 00:04:50.680
<v Speaker 3>Capacitor really like, what the state of the art is

82
00:04:50.720 --> 00:04:54.000
<v Speaker 3>in twenty twenty four. And I think, I, uh, you know,

83
00:04:54.040 --> 00:04:56.360
<v Speaker 3>I I think I'm I think I'm well well armed

84
00:04:56.399 --> 00:04:58.360
<v Speaker 3>for this. I think I can probably do a pretty

85
00:04:58.360 --> 00:05:01.759
<v Speaker 3>decent job where she won't be like cringing hopefully if

86
00:05:01.759 --> 00:05:03.199
<v Speaker 3>she listens to this episode.

87
00:05:03.600 --> 00:05:06.519
<v Speaker 2>Awesome, So you basically did a podcast to prepare for

88
00:05:06.600 --> 00:05:07.680
<v Speaker 2>the podcast.

89
00:05:08.000 --> 00:05:10.759
<v Speaker 3>I should have This is just a Twitter DM discussion,

90
00:05:10.800 --> 00:05:13.800
<v Speaker 3>but I should I should have done I should have

91
00:05:13.800 --> 00:05:16.319
<v Speaker 3>brought her on my my podcast reacting of radio. That

92
00:05:16.360 --> 00:05:18.920
<v Speaker 3>would have been really fun. Yeah, we could make that happen.

93
00:05:20.519 --> 00:05:23.879
<v Speaker 1>Definitely, definitely Okay, Awesome, We're we're also going to try

94
00:05:23.920 --> 00:05:24.600
<v Speaker 1>to bring her here.

95
00:05:24.639 --> 00:05:27.120
<v Speaker 2>I think it's that's that could be really interesting.

96
00:05:27.199 --> 00:05:30.839
<v Speaker 3>Yeah. Absolutely, If she was, I'll just volunteer her. She

97
00:05:30.920 --> 00:05:32.439
<v Speaker 3>has no knowledge of this, but.

98
00:05:35.079 --> 00:05:37.160
<v Speaker 2>Thank you Jessica for me up for this.

99
00:05:37.519 --> 00:05:41.120
<v Speaker 3>Wow. Yeah yeah.

100
00:05:41.759 --> 00:05:47.560
<v Speaker 1>So one interesting thing to clarify through the audience is that,

101
00:05:48.360 --> 00:05:50.639
<v Speaker 1>as far as I'm aware of and I'm not, i

102
00:05:50.680 --> 00:05:54.040
<v Speaker 1>am no Ionic expert myself as well. But maybe you

103
00:05:54.040 --> 00:05:56.360
<v Speaker 1>can clarify this to me since you talked to someone that.

104
00:05:56.680 --> 00:05:57.639
<v Speaker 2>Words at Ionic.

105
00:05:59.079 --> 00:06:01.959
<v Speaker 1>For the first time that I saw Ionic, it was

106
00:06:02.040 --> 00:06:04.879
<v Speaker 1>like three years ago or so, and.

107
00:06:06.199 --> 00:06:09.680
<v Speaker 2>I thought it was a framework, but then.

108
00:06:09.600 --> 00:06:13.319
<v Speaker 1>It was presented to me in an online course as

109
00:06:13.399 --> 00:06:19.040
<v Speaker 1>actually a UY library that compiled to the native components,

110
00:06:19.639 --> 00:06:21.680
<v Speaker 1>and then that was my understanding at the time. And

111
00:06:21.720 --> 00:06:27.079
<v Speaker 1>then recently I was trying to look up Ionic and

112
00:06:27.240 --> 00:06:32.000
<v Speaker 1>I realized that currently Ionic itself is the company. So

113
00:06:32.319 --> 00:06:38.399
<v Speaker 1>they named the company as Ionic, and then they have Capacitor,

114
00:06:38.480 --> 00:06:42.199
<v Speaker 1>which is one of the products of the company called Ionic,

115
00:06:42.759 --> 00:06:48.560
<v Speaker 1>and they have the UY library of components, which is

116
00:06:48.600 --> 00:06:55.360
<v Speaker 1>the Ionic framework. So is that correct? Like Ionic? Just

117
00:06:55.399 --> 00:07:00.160
<v Speaker 1>Ionic is the company. Ionic Framework are the UI components

118
00:07:00.240 --> 00:07:04.399
<v Speaker 1>that also come along with Capacitor because they depend on capasitor,

119
00:07:04.600 --> 00:07:08.639
<v Speaker 1>And then Capacitor itself is just the the build pool

120
00:07:08.839 --> 00:07:12.879
<v Speaker 1>that can transform your web code into mobile applications, but

121
00:07:13.000 --> 00:07:18.399
<v Speaker 1>it doesn't come with the pre done UI components that

122
00:07:18.439 --> 00:07:19.800
<v Speaker 1>translate to the native forms.

123
00:07:19.879 --> 00:07:20.279
<v Speaker 2>Is that it.

124
00:07:20.959 --> 00:07:22.800
<v Speaker 3>I think you did a good job, and I'm going

125
00:07:22.839 --> 00:07:25.240
<v Speaker 3>to start bumping up against the because this stuff it

126
00:07:25.240 --> 00:07:28.199
<v Speaker 3>can be kind of fuzzy, you know, like because I

127
00:07:28.240 --> 00:07:32.120
<v Speaker 3>mean even Ionic, Like if you go to ionicframework dot com,

128
00:07:32.800 --> 00:07:36.160
<v Speaker 3>they call it Ionic, like they say introduction to Ionic.

129
00:07:36.279 --> 00:07:39.680
<v Speaker 3>Ionic is an open source UI toolkit, you know. So

130
00:07:40.439 --> 00:07:43.040
<v Speaker 3>but I think you're right because ultimately I think that

131
00:07:43.160 --> 00:07:46.639
<v Speaker 3>the framework itself is Ionic. There is a company Ionic,

132
00:07:47.519 --> 00:07:51.079
<v Speaker 3>which is you know, of course maintaining it and kind

133
00:07:51.120 --> 00:07:54.160
<v Speaker 3>of like building a business around it. And then Capacitor

134
00:07:54.240 --> 00:07:58.800
<v Speaker 3>is really the technology that they created in order to

135
00:07:59.439 --> 00:08:04.160
<v Speaker 3>have per performant like as performance and capable as possible

136
00:08:05.759 --> 00:08:08.920
<v Speaker 3>bridge over to the native side. So yeah, I think

137
00:08:08.920 --> 00:08:09.600
<v Speaker 3>you did a good job.

138
00:08:09.600 --> 00:08:18.680
<v Speaker 1>Though. Cool And they have another interesting product called app flow,

139
00:08:19.600 --> 00:08:22.439
<v Speaker 1>and they also have live updates, which I thought was

140
00:08:22.480 --> 00:08:26.279
<v Speaker 1>really interesting. And I don't know if we're even going

141
00:08:26.360 --> 00:08:28.920
<v Speaker 1>to get into it, because I think perhaps we would

142
00:08:28.959 --> 00:08:31.480
<v Speaker 1>need a deeper understanding of the rest of the ecosystem

143
00:08:31.600 --> 00:08:34.200
<v Speaker 1>to even talk about that, but I was really curious

144
00:08:34.240 --> 00:08:40.000
<v Speaker 1>to understand if app flow and their live deployment picture

145
00:08:40.320 --> 00:08:44.440
<v Speaker 1>only work with Capacitor or Ionic, or if it actually

146
00:08:44.559 --> 00:08:48.559
<v Speaker 1>worked or React Native as well, because from their website,

147
00:08:48.639 --> 00:08:52.840
<v Speaker 1>I see that they have logos of other pools. So

148
00:08:53.000 --> 00:08:55.480
<v Speaker 1>if you go to their website for app flow, which

149
00:08:55.559 --> 00:08:58.919
<v Speaker 1>is a product of the Ionic company, then it has

150
00:08:58.960 --> 00:09:00.960
<v Speaker 1>a logo for a capacitor are you, but also for

151
00:09:01.039 --> 00:09:06.639
<v Speaker 1>React Native and Cordora, So I thought that was interesting.

152
00:09:07.320 --> 00:09:10.600
<v Speaker 3>Yeah, Ionic interestingly, and I've chatted with some of the

153
00:09:10.639 --> 00:09:15.759
<v Speaker 3>other Ionic folks as well, and they really have have

154
00:09:15.919 --> 00:09:19.639
<v Speaker 3>started to branch out, and like in some ways, they're

155
00:09:19.639 --> 00:09:23.080
<v Speaker 3>sort of like the Expo of capacitor, you know, like

156
00:09:23.120 --> 00:09:26.679
<v Speaker 3>they have all the other tools on top of capacitor.

157
00:09:27.799 --> 00:09:30.000
<v Speaker 3>That's kind of how you it's not a perfect technology,

158
00:09:30.120 --> 00:09:32.759
<v Speaker 3>but like it's it's sort of like building on top

159
00:09:32.799 --> 00:09:36.759
<v Speaker 3>of this technology. But unlike Expo, which is double down

160
00:09:36.799 --> 00:09:42.399
<v Speaker 3>and React Native, they are they seem to be adopting

161
00:09:42.440 --> 00:09:46.200
<v Speaker 3>other technologies and providing solutions across the board, so they

162
00:09:46.200 --> 00:09:51.120
<v Speaker 3>seem to have a wider I guess umbrella across you know,

163
00:09:51.200 --> 00:09:55.159
<v Speaker 3>React Native and and their technologies and and whatnot. They

164
00:09:55.200 --> 00:09:58.080
<v Speaker 3>do provide things like, yeah, the c CV service and

165
00:09:58.080 --> 00:10:02.639
<v Speaker 3>and and more. So, Yeah, it's it's an interesting company

166
00:10:02.679 --> 00:10:05.320
<v Speaker 3>for sure, And I've liked all the people that I've

167
00:10:05.320 --> 00:10:09.120
<v Speaker 3>talked to there. They're good engineers. They seem to understand,

168
00:10:09.200 --> 00:10:13.320
<v Speaker 3>you know, what us developers go through and whatnot.

169
00:10:14.639 --> 00:10:14.919
<v Speaker 2>Cool.

170
00:10:15.240 --> 00:10:18.840
<v Speaker 1>Have you yourself ever used some of those tools that

171
00:10:18.919 --> 00:10:22.919
<v Speaker 1>allow you to have real time updates.

172
00:10:22.360 --> 00:10:25.480
<v Speaker 3>On the React Native side. I have not, you know,

173
00:10:25.559 --> 00:10:27.840
<v Speaker 3>not so much on the Ionic side, but for sure

174
00:10:27.919 --> 00:10:29.799
<v Speaker 3>on the React Native side, we've used them all, like

175
00:10:29.919 --> 00:10:33.159
<v Speaker 3>on multiple projects, including rolling our own. We've had to

176
00:10:33.159 --> 00:10:36.519
<v Speaker 3>build our own because sometimes clients will come to us

177
00:10:36.519 --> 00:10:38.159
<v Speaker 3>and say, I want to React Native app. I want

178
00:10:38.200 --> 00:10:40.279
<v Speaker 3>over the air updates, but nope, I can't use Expo

179
00:10:40.399 --> 00:10:42.039
<v Speaker 3>and nope, I can't use app Center, and nope, I

180
00:10:42.080 --> 00:10:44.759
<v Speaker 3>can't use you know, any of the other options that

181
00:10:44.759 --> 00:10:47.879
<v Speaker 3>are out there. So we build our own, and we

182
00:10:47.919 --> 00:10:51.360
<v Speaker 3>build something in house and then use that. It's not

183
00:10:51.480 --> 00:10:55.200
<v Speaker 3>actually that difficult, I would say, especially when we've done

184
00:10:55.200 --> 00:10:58.159
<v Speaker 3>it a few times. But of course, building all the

185
00:10:58.200 --> 00:11:01.039
<v Speaker 3>features out that you might expect from an over there

186
00:11:01.240 --> 00:11:07.039
<v Speaker 3>update perspective, that's where it, you know, where like you

187
00:11:07.039 --> 00:11:10.120
<v Speaker 3>get into it's like a deep rabbit hole there.

188
00:11:10.399 --> 00:11:12.080
<v Speaker 1>And I know that this is a bit off topic,

189
00:11:12.120 --> 00:11:15.440
<v Speaker 1>but in the last episode we were discussing that when

190
00:11:15.440 --> 00:11:17.759
<v Speaker 1>you're dealing with native apps, you have to support the

191
00:11:17.879 --> 00:11:21.120
<v Speaker 1>users that are in old versions or you need to

192
00:11:21.200 --> 00:11:23.720
<v Speaker 1>like literally just block them and say, hey, if you

193
00:11:23.759 --> 00:11:26.960
<v Speaker 1>want to use the app, you need to update. And

194
00:11:27.200 --> 00:11:29.559
<v Speaker 1>that's completely different from what we have on the web,

195
00:11:29.600 --> 00:11:31.840
<v Speaker 1>where we just assume that all users are in the

196
00:11:31.879 --> 00:11:35.679
<v Speaker 1>latest versions, but those over the air updates they fix

197
00:11:35.799 --> 00:11:41.360
<v Speaker 1>this problem, right, But the complexity comes from the bureaucracy

198
00:11:41.360 --> 00:11:46.279
<v Speaker 1>of getting approval from the play Store and the App

199
00:11:46.279 --> 00:11:50.440
<v Speaker 1>store from Apple because from what I understand, the thing

200
00:11:50.480 --> 00:11:55.120
<v Speaker 1>that they are trying to prevent is companies pushing code

201
00:11:55.120 --> 00:11:59.279
<v Speaker 1>that didn't went through their official review process, right, So

202
00:11:59.320 --> 00:12:02.080
<v Speaker 1>how do you make this all out?

203
00:12:02.720 --> 00:12:06.759
<v Speaker 3>Yeah? Absolutely, well, I mean this is a this is

204
00:12:06.799 --> 00:12:09.200
<v Speaker 3>a very deep subject. Of course, there's there's a lot

205
00:12:09.240 --> 00:12:15.000
<v Speaker 3>of different factors here. One might ask, what what right

206
00:12:15.039 --> 00:12:18.120
<v Speaker 3>do Google and Apple have to you know, review this

207
00:12:18.200 --> 00:12:20.759
<v Speaker 3>in the first place, right, Like, and that's big, it's

208
00:12:20.759 --> 00:12:24.840
<v Speaker 3>a big discussion. They're they're kind of gatekeeping this and

209
00:12:25.080 --> 00:12:28.320
<v Speaker 3>can be very arbitrary and and they've even gotten in

210
00:12:28.360 --> 00:12:32.279
<v Speaker 3>trouble for some of their practices around this. The other

211
00:12:32.320 --> 00:12:35.440
<v Speaker 3>thing you could say is, well, okay, so this isn't

212
00:12:35.519 --> 00:12:38.519
<v Speaker 3>native code. This is just like JavaScript that's getting uploaded.

213
00:12:38.559 --> 00:12:42.720
<v Speaker 3>So it's really no different than in a browser loading

214
00:12:42.720 --> 00:12:45.000
<v Speaker 3>a new website, right, like you can just jump to

215
00:12:45.039 --> 00:12:47.320
<v Speaker 3>a new website. But Apple and Google seem to have

216
00:12:47.360 --> 00:12:53.240
<v Speaker 3>different rules around browsers versus other apps, like they seem

217
00:12:53.279 --> 00:12:55.919
<v Speaker 3>to really kind of differentiate between the two, and certainly

218
00:12:55.960 --> 00:13:00.840
<v Speaker 3>they have a financial a vested financial interest in disallowing

219
00:13:00.879 --> 00:13:04.399
<v Speaker 3>things that act like other app stores and Epic has

220
00:13:04.679 --> 00:13:08.480
<v Speaker 3>like had these massive battles with Apple around we should

221
00:13:08.480 --> 00:13:10.600
<v Speaker 3>be able to provide our own app store the inside

222
00:13:10.600 --> 00:13:15.639
<v Speaker 3>of the iOS eco system, and so you just kind

223
00:13:15.639 --> 00:13:20.879
<v Speaker 3>of keep going down this rabbit hole for now where

224
00:13:20.879 --> 00:13:22.720
<v Speaker 3>we are is they allow it as long as you

225
00:13:22.759 --> 00:13:27.480
<v Speaker 3>don't change the significantly change the like core functionality of

226
00:13:27.519 --> 00:13:32.360
<v Speaker 3>the app, or introduce things that you know, like you know,

227
00:13:32.399 --> 00:13:38.159
<v Speaker 3>get around the app store and rules. And the problem

228
00:13:38.399 --> 00:13:41.559
<v Speaker 3>is that there's really not a lot preventing people from

229
00:13:41.600 --> 00:13:47.320
<v Speaker 3>abusing this. So when it gets abused, not if, but

230
00:13:47.480 --> 00:13:50.480
<v Speaker 3>when it gets abused in that kind of high profile

231
00:13:50.559 --> 00:13:54.440
<v Speaker 3>way where someone ships over the air and update that

232
00:13:55.039 --> 00:14:00.679
<v Speaker 3>like brings in something that Apple would consider egregious. Then

233
00:14:00.679 --> 00:14:03.159
<v Speaker 3>there's probably gonna be a battle around this and they're

234
00:14:03.200 --> 00:14:07.080
<v Speaker 3>gonna start saying you can't do this. So it's something

235
00:14:07.120 --> 00:14:11.240
<v Speaker 3>that I'm keeping a very close eye on. It's like

236
00:14:11.759 --> 00:14:15.679
<v Speaker 3>Evan Bacon from Expo correctly says that over there updates

237
00:14:15.759 --> 00:14:19.600
<v Speaker 3>is one of reac Native's killer features. It's also, by

238
00:14:19.600 --> 00:14:23.440
<v Speaker 3>the way, Ionic capacitors killer feature too, because you can

239
00:14:23.480 --> 00:14:28.919
<v Speaker 3>do the same thing there. But we're always a little

240
00:14:28.960 --> 00:14:32.000
<v Speaker 3>bit leery of like like over selling that just because

241
00:14:32.039 --> 00:14:34.799
<v Speaker 3>Apple could come in and put the hammer down. If

242
00:14:34.799 --> 00:14:36.399
<v Speaker 3>that happens, they're going to have a battle on their

243
00:14:36.440 --> 00:14:39.200
<v Speaker 3>hand though, and they're already fighting some battles you know,

244
00:14:39.279 --> 00:14:43.360
<v Speaker 3>in the EU and other places including the US. And

245
00:14:44.639 --> 00:14:47.679
<v Speaker 3>so this is a whole podcast episode topic. I could

246
00:14:47.720 --> 00:14:49.600
<v Speaker 3>go on forever about it, but it is. There's a

247
00:14:49.639 --> 00:14:54.080
<v Speaker 3>lot more to this story, but it basically is like, yes,

248
00:14:54.200 --> 00:14:57.720
<v Speaker 3>it's awesome, we use it. We try not to do

249
00:14:57.759 --> 00:15:00.399
<v Speaker 3>it in such a way that like if Apple came in,

250
00:15:00.440 --> 00:15:03.480
<v Speaker 3>they would get really mad at us, just because they

251
00:15:03.799 --> 00:15:08.000
<v Speaker 3>unfortunately are the gatekeepers here and you know, don't don't

252
00:15:08.000 --> 00:15:11.120
<v Speaker 3>rely on it forever, Like that could be problematic. Now

253
00:15:11.120 --> 00:15:13.759
<v Speaker 3>there is obviously the other way for submitting updates, and

254
00:15:13.799 --> 00:15:16.279
<v Speaker 3>we can always send in a new new build and then,

255
00:15:16.720 --> 00:15:20.279
<v Speaker 3>you know, two weeks later, get a rejection that gives

256
00:15:20.279 --> 00:15:23.000
<v Speaker 3>you no information about why it's rejected, and then have

257
00:15:23.000 --> 00:15:25.080
<v Speaker 3>to guess on how to fix it. I'm not bitter

258
00:15:25.159 --> 00:15:26.879
<v Speaker 3>at all. I'm sure you can't tell.

259
00:15:27.159 --> 00:15:29.639
<v Speaker 1>No, not at all. I can I can see that

260
00:15:31.200 --> 00:15:32.360
<v Speaker 1>I'm bitter for you, dude.

261
00:15:34.200 --> 00:15:37.480
<v Speaker 3>I've been dealing with this for oh man, it's almost

262
00:15:37.559 --> 00:15:38.759
<v Speaker 3>twenty twelve years now.

263
00:15:38.879 --> 00:15:48.360
<v Speaker 1>So yeah, Well, although this was somewhat off topic, it's

264
00:15:48.360 --> 00:15:50.519
<v Speaker 1>still on topic, right because.

265
00:15:50.240 --> 00:15:52.559
<v Speaker 2>Since we're discussing differences between.

266
00:15:52.159 --> 00:15:54.639
<v Speaker 1>Capacitor and React Native, one of the things that we

267
00:15:54.679 --> 00:15:58.080
<v Speaker 1>could discuss is this over their functionality, and it seems

268
00:15:58.120 --> 00:16:03.600
<v Speaker 1>that it's not unique feature of either of both. Right,

269
00:16:03.679 --> 00:16:06.519
<v Speaker 1>you can have this with React Native. You could have

270
00:16:06.600 --> 00:16:08.320
<v Speaker 1>this with Capasitor as well.

271
00:16:10.720 --> 00:16:12.240
<v Speaker 3>I'm sorry, can you ask that question again?

272
00:16:13.039 --> 00:16:16.720
<v Speaker 1>Yeah, the over the air updates, they could be done

273
00:16:16.879 --> 00:16:20.639
<v Speaker 1>either with React Native or Capacitor. So this is one

274
00:16:20.639 --> 00:16:23.600
<v Speaker 1>of the things that is not really a difference between them.

275
00:16:23.720 --> 00:16:25.960
<v Speaker 1>Maybe the way that it's done can be different, but

276
00:16:26.159 --> 00:16:27.519
<v Speaker 1>they both supported.

277
00:16:27.759 --> 00:16:30.600
<v Speaker 3>Yeah, yeah, exactly, and this is the benefit of both

278
00:16:30.639 --> 00:16:34.039
<v Speaker 3>of them using a JavaScript bundle because you can just

279
00:16:34.039 --> 00:16:38.320
<v Speaker 3>ship a new JavaScript bundle. Now today most React native

280
00:16:38.320 --> 00:16:43.879
<v Speaker 3>apps actually ship Hermes bytecode bundle, which is I mean,

281
00:16:43.919 --> 00:16:47.559
<v Speaker 3>you've probably heard of like web assembly and web assembly has.

282
00:16:49.200 --> 00:16:52.399
<v Speaker 3>You know, you can like basically ship what would be

283
00:16:52.559 --> 00:16:58.120
<v Speaker 3>sort of JavaScript, but it's in a bite byte code format. Similar.

284
00:16:58.200 --> 00:17:02.679
<v Speaker 3>I guess if In from the Hermes team was listening

285
00:17:02.679 --> 00:17:04.319
<v Speaker 3>to this, he would cringe because he knows all the

286
00:17:04.359 --> 00:17:07.920
<v Speaker 3>reasons that that's wrong. But that's basically how I think

287
00:17:07.960 --> 00:17:10.599
<v Speaker 3>about it is that it's in those terms, but it's

288
00:17:10.640 --> 00:17:13.079
<v Speaker 3>still kind of JavaScript under the hood, you know, it

289
00:17:13.160 --> 00:17:16.359
<v Speaker 3>still has the same kind of characteristics and whatnot. Under

290
00:17:16.359 --> 00:17:20.200
<v Speaker 3>the hood, it's just been compiled from JavaScript. So it's

291
00:17:20.240 --> 00:17:22.200
<v Speaker 3>a bundle, it's a file. It's a single file. Like

292
00:17:22.680 --> 00:17:24.960
<v Speaker 3>in most cases and the vast majority cases, it's a

293
00:17:24.960 --> 00:17:27.559
<v Speaker 3>one file. You literally just put it up on an endpoint,

294
00:17:27.559 --> 00:17:29.680
<v Speaker 3>and your app downloads it just like it would download

295
00:17:29.720 --> 00:17:32.559
<v Speaker 3>any file, replaces it or puts it in a certain spot,

296
00:17:32.759 --> 00:17:35.680
<v Speaker 3>and then starts using that bundle reloads, you know, like

297
00:17:36.039 --> 00:17:40.160
<v Speaker 3>it starts using that bundle instead. So that's essentially how

298
00:17:40.160 --> 00:17:42.240
<v Speaker 3>it works.

299
00:17:44.160 --> 00:17:49.839
<v Speaker 1>Gotcha, Okay, So let's go into some of the differences

300
00:17:49.839 --> 00:17:54.720
<v Speaker 1>between it. What would you say, especially after your talk

301
00:17:54.839 --> 00:17:59.200
<v Speaker 1>with someone from the Ionic company, what would you say

302
00:17:59.240 --> 00:18:03.839
<v Speaker 1>are the most interesting differences between you React Native and

303
00:18:04.920 --> 00:18:08.039
<v Speaker 1>Capacitor or just the entire ironic framework.

304
00:18:09.200 --> 00:18:12.960
<v Speaker 3>What I like to do in these situations is really

305
00:18:13.079 --> 00:18:16.279
<v Speaker 3>kind of help the audience understand at what level we

306
00:18:16.359 --> 00:18:19.680
<v Speaker 3>are comparing them, because if we're simply comparing them from

307
00:18:19.720 --> 00:18:25.000
<v Speaker 3>a technical standpoint, like what you can achieve standpoint, then

308
00:18:25.039 --> 00:18:28.079
<v Speaker 3>you might go one direction. But I like to look

309
00:18:28.119 --> 00:18:32.559
<v Speaker 3>at technologies holistically. There's a lot more to a technology

310
00:18:32.599 --> 00:18:36.599
<v Speaker 3>than just what can you achieve with what ease with

311
00:18:36.640 --> 00:18:39.359
<v Speaker 3>what developer experience. Certainly, those are a big part of it,

312
00:18:39.519 --> 00:18:43.480
<v Speaker 3>and you know that's something I've searched for my entire careers,

313
00:18:43.720 --> 00:18:49.000
<v Speaker 3>better solutions for doing those things. However, these apps are

314
00:18:49.240 --> 00:18:54.440
<v Speaker 3>usually for businesses, and these businesses have constraints, and these

315
00:18:54.440 --> 00:18:59.960
<v Speaker 3>constraints matter. So when you look at things like Native

316
00:19:00.319 --> 00:19:07.039
<v Speaker 3>versus React Native, or PWA's versus Mobile at All, these

317
00:19:07.240 --> 00:19:10.200
<v Speaker 3>all have these questions wrapped up in them around the

318
00:19:10.200 --> 00:19:15.119
<v Speaker 3>business parts of it, and Ionic and React Native both

319
00:19:16.079 --> 00:19:20.759
<v Speaker 3>approach this problem very pragmatically. They come at it like, hey, look,

320
00:19:21.519 --> 00:19:25.880
<v Speaker 3>we all want good experiences, but we also understand that

321
00:19:25.920 --> 00:19:27.839
<v Speaker 3>we have constraints and we want to be able to

322
00:19:27.839 --> 00:19:32.839
<v Speaker 3>ship quickly with technologies that we all know and that

323
00:19:32.880 --> 00:19:37.880
<v Speaker 3>we can share across multiple teams. We want to enable

324
00:19:38.599 --> 00:19:43.240
<v Speaker 3>the biggest cohort of developers, which is web to build

325
00:19:43.359 --> 00:19:47.039
<v Speaker 3>and deploy mobile apps. So they both really approach that

326
00:19:47.960 --> 00:19:51.960
<v Speaker 3>from that standpoint. Now where they differ is where they

327
00:19:51.960 --> 00:19:54.720
<v Speaker 3>make these trade offs and what they're willing to trade off.

328
00:19:55.319 --> 00:19:58.880
<v Speaker 3>So I would see it in some ways as there's

329
00:19:58.920 --> 00:20:02.960
<v Speaker 3>different levels of of abstraction here. So obviously you can

330
00:20:03.240 --> 00:20:06.160
<v Speaker 3>build a native app. You can even go lower and

331
00:20:06.200 --> 00:20:09.599
<v Speaker 3>than a native app like like you know, you're you're

332
00:20:09.640 --> 00:20:12.559
<v Speaker 3>you're just like writing like super low level like c

333
00:20:12.799 --> 00:20:15.119
<v Speaker 3>or whatever. But you can you can write what you

334
00:20:15.160 --> 00:20:18.599
<v Speaker 3>know Swift in Cotland, you can build in the native SDKs,

335
00:20:19.680 --> 00:20:24.799
<v Speaker 3>and that gives you some benefits of like being able

336
00:20:24.880 --> 00:20:29.640
<v Speaker 3>to customize and really fine tune at that level your apps.

337
00:20:30.079 --> 00:20:33.759
<v Speaker 3>But the business problem is that your web developers are

338
00:20:33.759 --> 00:20:37.359
<v Speaker 3>a little bit intimidated by like hey, like like hey,

339
00:20:37.759 --> 00:20:41.279
<v Speaker 3>build me, build me a mobile app. In both Swift

340
00:20:41.319 --> 00:20:45.519
<v Speaker 3>and Cotland by the way. You know, this isn't like

341
00:20:45.559 --> 00:20:48.599
<v Speaker 3>a React developer who's just done JavaScript, you know, and Typeescript,

342
00:20:48.880 --> 00:20:50.480
<v Speaker 3>Like they're going to have to learn a lot of

343
00:20:50.519 --> 00:20:53.880
<v Speaker 3>stuff to do that. Additionally, if you want to be like, Okay,

344
00:20:53.920 --> 00:20:56.839
<v Speaker 3>I'm going to build out my team of iOS developers

345
00:20:56.839 --> 00:20:58.839
<v Speaker 3>and I'm going to build up my team of Android developers.

346
00:20:59.279 --> 00:21:04.200
<v Speaker 3>Now now you have three teams, three different subcultures will emerge.

347
00:21:04.240 --> 00:21:08.200
<v Speaker 3>I've seen it every time, like they're working together all

348
00:21:08.240 --> 00:21:11.119
<v Speaker 3>the time. And anytime that you have teams, I mean

349
00:21:11.200 --> 00:21:13.519
<v Speaker 3>my own team, like you know, we're thirty some people.

350
00:21:13.559 --> 00:21:15.720
<v Speaker 3>We now only do React Native, but at the time

351
00:21:16.160 --> 00:21:20.000
<v Speaker 3>when we started, we did Elixir, we did React Web,

352
00:21:20.519 --> 00:21:23.680
<v Speaker 3>React Native, we did a few other things too, And

353
00:21:24.880 --> 00:21:28.319
<v Speaker 3>those subcultures would emerge. They would hang out together, they

354
00:21:28.359 --> 00:21:30.960
<v Speaker 3>would talk together, they would like share knowledge together, but

355
00:21:30.960 --> 00:21:34.279
<v Speaker 3>they wouldn't do it across their teams. So now you

356
00:21:34.319 --> 00:21:37.799
<v Speaker 3>have three different I remember talking to Square Space for example,

357
00:21:37.799 --> 00:21:41.200
<v Speaker 3>and Square Space had like in their office they had

358
00:21:41.240 --> 00:21:43.960
<v Speaker 3>I think in New York, they had like a pod

359
00:21:44.359 --> 00:21:46.519
<v Speaker 3>for their Android developers. They had a pod for their

360
00:21:46.519 --> 00:21:49.440
<v Speaker 3>iOS developers, they had a pod, huge pod for their

361
00:21:49.640 --> 00:21:53.519
<v Speaker 3>Web developers. When they went to React Native, and this

362
00:21:53.559 --> 00:21:55.359
<v Speaker 3>would have been the same if they went to Capacitor.

363
00:21:55.759 --> 00:22:00.000
<v Speaker 3>They were able to re architect their literally their office,

364
00:22:00.160 --> 00:22:02.920
<v Speaker 3>like like remodel their office, to combine those into a

365
00:22:03.000 --> 00:22:05.640
<v Speaker 3>single team that was divided up in different ways, and

366
00:22:05.680 --> 00:22:08.000
<v Speaker 3>they could all talk together, they can all help each other,

367
00:22:08.039 --> 00:22:12.680
<v Speaker 3>et cetera. And so when you're talking about the trade

368
00:22:12.680 --> 00:22:15.640
<v Speaker 3>offs that we're talking that we're making here, this is

369
00:22:15.680 --> 00:22:20.480
<v Speaker 3>like one of the key things about Ionic. And I'm

370
00:22:20.480 --> 00:22:23.680
<v Speaker 3>gonna say, whenever I say Ionic and Capacitor, just assume

371
00:22:23.680 --> 00:22:26.480
<v Speaker 3>I'm talking about the whole thing. I don't want to

372
00:22:26.519 --> 00:22:28.880
<v Speaker 3>have to I'll just say Capacitor. I'll just I'll say capastor,

373
00:22:28.880 --> 00:22:30.720
<v Speaker 3>even though that's like one chunk of it. All right,

374
00:22:30.799 --> 00:22:35.480
<v Speaker 3>So anytime you're talking about Capacitor and reac natives, that's

375
00:22:35.599 --> 00:22:39.319
<v Speaker 3>the major benefit. You bring in all the knowledge of

376
00:22:39.359 --> 00:22:42.640
<v Speaker 3>your web developers, all the a lot of the tooling,

377
00:22:42.759 --> 00:22:44.240
<v Speaker 3>not all of it, but you bring in a lot

378
00:22:44.240 --> 00:22:47.240
<v Speaker 3>of the tooling. You bring You can share code, like

379
00:22:47.319 --> 00:22:52.119
<v Speaker 3>if you have a validation function you know, something like that,

380
00:22:52.279 --> 00:22:54.559
<v Speaker 3>or even just a library that you use you can

381
00:22:54.640 --> 00:22:57.640
<v Speaker 3>use across the board. You can share types if you

382
00:22:57.720 --> 00:23:01.319
<v Speaker 3>use Typescript, like you can say, Okay, you know I

383
00:23:01.359 --> 00:23:04.920
<v Speaker 3>want to use I'm consuming this API and it has

384
00:23:04.960 --> 00:23:07.720
<v Speaker 3>this type. Okay, well, our iOS app, our Android app,

385
00:23:07.720 --> 00:23:12.119
<v Speaker 3>and our web app all share the same types, and

386
00:23:12.160 --> 00:23:14.519
<v Speaker 3>you can kind of go from there. And every time

387
00:23:14.559 --> 00:23:20.400
<v Speaker 3>I see this happening at any company, it's incredibly striking

388
00:23:20.640 --> 00:23:26.039
<v Speaker 3>how compelling that story is. It's the business case of it,

389
00:23:26.119 --> 00:23:29.240
<v Speaker 3>and it's the organization, it's the human element that really

390
00:23:29.279 --> 00:23:33.680
<v Speaker 3>really changes there. And then there's a speed element as well,

391
00:23:33.759 --> 00:23:40.559
<v Speaker 3>because you're building two to three sometimes plus platforms at

392
00:23:40.559 --> 00:23:42.519
<v Speaker 3>a time rather than rebuilding it over and over. And

393
00:23:42.559 --> 00:23:44.640
<v Speaker 3>I've done the rebuilding over and over. I've done the web,

394
00:23:44.680 --> 00:23:46.319
<v Speaker 3>and then now we have to build an iOS app.

395
00:23:46.359 --> 00:23:49.319
<v Speaker 3>And now turns out people actually want androids. Okay, we

396
00:23:49.359 --> 00:23:52.240
<v Speaker 3>want Android, let's put it. And you're having to build

397
00:23:52.240 --> 00:23:54.119
<v Speaker 3>it over and over and over and solve the same

398
00:23:54.160 --> 00:23:57.599
<v Speaker 3>problems over and over and over, and it just feels

399
00:23:57.640 --> 00:23:59.079
<v Speaker 3>like a waste of time, Like why are we doing

400
00:23:59.119 --> 00:24:02.160
<v Speaker 3>this over and over? Like build it once or at

401
00:24:02.200 --> 00:24:05.319
<v Speaker 3>most like build it twice, and and you'd have web

402
00:24:05.359 --> 00:24:09.000
<v Speaker 3>and then mobile. Right, So Ionic really want to lean

403
00:24:09.160 --> 00:24:11.480
<v Speaker 3>wants to lean toward let's build it once, like let's

404
00:24:11.559 --> 00:24:16.359
<v Speaker 3>use all web technologies and whatnot, so they will like

405
00:24:16.599 --> 00:24:20.440
<v Speaker 3>the technology itself. For those who don't know capacitors using

406
00:24:20.480 --> 00:24:25.200
<v Speaker 3>a web view like they have, they have native bindings,

407
00:24:25.480 --> 00:24:28.079
<v Speaker 3>but it's not for the UI, Like the native bindings

408
00:24:28.160 --> 00:24:31.160
<v Speaker 3>are at the S or they're at the API level.

409
00:24:31.160 --> 00:24:33.079
<v Speaker 3>So you want to like get your location, or you

410
00:24:33.119 --> 00:24:35.680
<v Speaker 3>want to get you want to access the accelerometer, or

411
00:24:35.759 --> 00:24:40.519
<v Speaker 3>you want to like have a little you know, like

412
00:24:40.559 --> 00:24:44.359
<v Speaker 3>have the phone vibrate or whatever hapic feedback, then they'll

413
00:24:44.359 --> 00:24:47.720
<v Speaker 3>provide native bindings for those. But then the UI itself

414
00:24:47.799 --> 00:24:49.279
<v Speaker 3>is just rendered in a browser, so it's all the

415
00:24:49.319 --> 00:24:53.559
<v Speaker 3>normal technologies that you're used to, like like HTMLCSS, JavaScript,

416
00:24:53.720 --> 00:24:55.279
<v Speaker 3>all in the browser and you can use all of

417
00:24:55.279 --> 00:24:59.319
<v Speaker 3>your web knowledge within that. React Native is not going

418
00:24:59.400 --> 00:25:03.519
<v Speaker 3>to do that. React Native uses just JavaScript and when

419
00:25:03.839 --> 00:25:07.440
<v Speaker 3>you it has all the same like native bindings for

420
00:25:07.880 --> 00:25:13.039
<v Speaker 3>all the device features, but the UI layer is actually

421
00:25:13.559 --> 00:25:17.279
<v Speaker 3>building native views. And so that's the main difference is

422
00:25:17.720 --> 00:25:20.799
<v Speaker 3>on capacity. You're going to have a WebView running with

423
00:25:20.880 --> 00:25:24.920
<v Speaker 3>a browser and then on the React Native side you're

424
00:25:24.920 --> 00:25:27.960
<v Speaker 3>going to be running native views. But there's trade offs

425
00:25:28.000 --> 00:25:31.799
<v Speaker 3>there because a browser, even though it's heavier, it's sort

426
00:25:31.799 --> 00:25:35.000
<v Speaker 3>of like like Electron for example, brings with it all

427
00:25:35.039 --> 00:25:39.480
<v Speaker 3>these benefits of using the powerful web technologies that we've developed,

428
00:25:41.160 --> 00:25:43.079
<v Speaker 3>where React native has to re implement some of that

429
00:25:43.119 --> 00:25:48.359
<v Speaker 3>stuff and and like like make for a similar feel there.

430
00:25:48.680 --> 00:25:52.920
<v Speaker 3>So it's really at the business level, and then you

431
00:25:53.000 --> 00:25:57.400
<v Speaker 3>have to start thinking about the tech level and the

432
00:25:57.440 --> 00:26:01.559
<v Speaker 3>trade offs there and how far are because there are

433
00:26:01.759 --> 00:26:03.759
<v Speaker 3>there are limits to how far you can go with

434
00:26:03.799 --> 00:26:06.240
<v Speaker 3>a web view, like like at some point that like

435
00:26:06.319 --> 00:26:09.160
<v Speaker 3>high fidelity buttery is smooth kind of feel that you

436
00:26:09.240 --> 00:26:11.960
<v Speaker 3>want from an app. You may hit it, You're you're

437
00:26:11.960 --> 00:26:14.480
<v Speaker 3>gonna you're gonna probably hit a ceiling with with ironic,

438
00:26:15.720 --> 00:26:17.759
<v Speaker 3>but that ceiling is a little higher than you think,

439
00:26:18.079 --> 00:26:23.000
<v Speaker 3>and it also is uh you know, it's it's not

440
00:26:23.079 --> 00:26:27.920
<v Speaker 3>every app needs like the buttery smooth feel because maybe

441
00:26:27.960 --> 00:26:31.039
<v Speaker 3>you're you're just really tapping between screens and stuff like that.

442
00:26:31.480 --> 00:26:35.640
<v Speaker 2>Yep, Okay, So basically.

443
00:26:36.839 --> 00:26:41.400
<v Speaker 1>What you're saying is well, at least one portion of

444
00:26:41.440 --> 00:26:43.960
<v Speaker 1>what you're saying because there were many points touched.

445
00:26:43.680 --> 00:26:46.640
<v Speaker 3>But kind of was a rabbit trail there.

446
00:26:46.640 --> 00:26:51.359
<v Speaker 1>Sorry, ye, But one important thing that I think we

447
00:26:51.359 --> 00:26:55.880
<v Speaker 1>could highlight and correct me if I'm wrong. Most developers

448
00:26:56.559 --> 00:27:01.319
<v Speaker 1>think that the ceiling that they're going to hit with

449
00:27:01.559 --> 00:27:07.720
<v Speaker 1>going with either Capacitor or React Native is lower than

450
00:27:07.759 --> 00:27:12.279
<v Speaker 1>it actually is. So if you're afraid of trying to

451
00:27:12.599 --> 00:27:16.200
<v Speaker 1>build it once and ship it everywhere because you think

452
00:27:16.240 --> 00:27:20.200
<v Speaker 1>that for some reason your application has a particular feature

453
00:27:20.279 --> 00:27:23.519
<v Speaker 1>that is just not going to work with trying to

454
00:27:23.599 --> 00:27:28.119
<v Speaker 1>use those hybrid technologies in most scenarios, you're actually wrong.

455
00:27:28.279 --> 00:27:31.960
<v Speaker 1>In most scenarios, you can actually build it hybrid and

456
00:27:32.039 --> 00:27:35.799
<v Speaker 1>you're not going to regret it, And the chances that

457
00:27:36.480 --> 00:27:38.440
<v Speaker 1>you're going to have a feature that is simply not

458
00:27:38.519 --> 00:27:43.200
<v Speaker 1>supported unless you're native are extremely small or perhaps even

459
00:27:43.400 --> 00:27:46.400
<v Speaker 1>an existent, because I think you can still mix and

460
00:27:46.440 --> 00:27:49.319
<v Speaker 1>match right native code with hybrid.

461
00:27:50.160 --> 00:27:55.000
<v Speaker 3>Yeah, that's right, and you're exactly right. The ceiling is

462
00:27:55.000 --> 00:27:58.799
<v Speaker 3>a lot higher, especially in my opinion, with React Native,

463
00:27:58.880 --> 00:28:05.759
<v Speaker 3>and we can go into that, but because I would

464
00:28:05.799 --> 00:28:11.400
<v Speaker 3>say that, for example, the the browser does limit some

465
00:28:11.519 --> 00:28:15.279
<v Speaker 3>things with Capacitor because you can't bring in like a

466
00:28:15.400 --> 00:28:19.160
<v Speaker 3>native component and put it into a browser, where with

467
00:28:19.240 --> 00:28:23.079
<v Speaker 3>React Native you literally can sprinkle every other component, could

468
00:28:23.079 --> 00:28:25.799
<v Speaker 3>be a custom native component that you wrote in Swift

469
00:28:25.880 --> 00:28:29.079
<v Speaker 3>or Cottlin and just drop it right into the middle

470
00:28:29.119 --> 00:28:31.400
<v Speaker 3>of your Reactnative app and it works like you can

471
00:28:31.440 --> 00:28:34.359
<v Speaker 3>do that. So that's uh, we're starting to get into

472
00:28:34.359 --> 00:28:38.119
<v Speaker 3>some of the trade offs here. Ionic has a lot

473
00:28:38.119 --> 00:28:39.960
<v Speaker 3>of benefits and I can go into some of those,

474
00:28:40.480 --> 00:28:43.039
<v Speaker 3>including things like it's much easier to set up than

475
00:28:43.079 --> 00:28:46.680
<v Speaker 3>React Native. I mean, that's just every Reacnative will admit that.

476
00:28:46.759 --> 00:28:50.440
<v Speaker 3>It's true, it's like so much easier. But this is

477
00:28:50.480 --> 00:28:52.640
<v Speaker 3>one place where you're going to hit the ceiling sooner

478
00:28:53.359 --> 00:28:57.799
<v Speaker 3>with capacitor. It's you're going to hit that level because

479
00:28:57.839 --> 00:28:59.640
<v Speaker 3>you can't then drop into native when you need to.

480
00:28:59.799 --> 00:29:03.400
<v Speaker 3>Now capacity devs will say how often do you actually

481
00:29:03.440 --> 00:29:06.799
<v Speaker 3>need to do that? Like not very often, And it

482
00:29:06.880 --> 00:29:09.160
<v Speaker 3>is true, it's not very often. But you have that

483
00:29:09.200 --> 00:29:12.759
<v Speaker 3>extra tool to reach for with React Native, which you

484
00:29:12.960 --> 00:29:16.319
<v Speaker 3>would not. And that's why I think I've been very

485
00:29:16.359 --> 00:29:18.440
<v Speaker 3>happy with Reacnative. I feel like it really hits that

486
00:29:18.519 --> 00:29:21.480
<v Speaker 3>kind of sweet spot between all the convenience and whatnot

487
00:29:22.200 --> 00:29:25.880
<v Speaker 3>with the potential for customization.

488
00:29:26.880 --> 00:29:32.920
<v Speaker 1>Gotcha, Okay, that's very interesting, So we react native specifically.

489
00:29:33.319 --> 00:29:37.359
<v Speaker 1>Let's say that I'm super hyped about the WWDC that

490
00:29:37.480 --> 00:29:41.519
<v Speaker 1>just happened, and I want to use the latest API

491
00:29:41.680 --> 00:29:44.920
<v Speaker 1>that Apple just released. I want to build for vision

492
00:29:45.000 --> 00:29:51.000
<v Speaker 1>os to like the second that Apple releases it, is

493
00:29:51.039 --> 00:29:54.200
<v Speaker 1>it already available to me? Or do I need to

494
00:29:54.559 --> 00:29:57.960
<v Speaker 1>wait for the latest version of React Native or whatever.

495
00:30:01.359 --> 00:30:08.319
<v Speaker 3>So the essentially that it would be available to you

496
00:30:08.799 --> 00:30:14.720
<v Speaker 3>with some caveats. There are some situations where where you

497
00:30:14.839 --> 00:30:18.279
<v Speaker 3>might need React native to It depends. Okay, here's the

498
00:30:18.279 --> 00:30:21.119
<v Speaker 3>biggest question. It's really it really comes down to do

499
00:30:21.160 --> 00:30:23.160
<v Speaker 3>you want React native to support it or do you

500
00:30:23.200 --> 00:30:24.799
<v Speaker 3>just want the ability to put it in your app?

501
00:30:25.000 --> 00:30:26.839
<v Speaker 3>Because as always, you can drop in a Native and

502
00:30:26.839 --> 00:30:29.920
<v Speaker 3>you can add anything you want that is supported in Native,

503
00:30:30.119 --> 00:30:34.400
<v Speaker 3>like anything Bleeding Edge, Brand New whatever. React Native itself

504
00:30:34.519 --> 00:30:37.640
<v Speaker 3>might not have a binding for that, and that's fine,

505
00:30:37.680 --> 00:30:39.559
<v Speaker 3>like you could. You know a lot of times when

506
00:30:39.559 --> 00:30:41.079
<v Speaker 3>something comes out, people want to play with it and

507
00:30:41.119 --> 00:30:43.039
<v Speaker 3>you'll find a third party library that pops out in

508
00:30:43.079 --> 00:30:45.079
<v Speaker 3>the next week or two. Like it happens all the time.

509
00:30:45.799 --> 00:30:48.319
<v Speaker 3>But I have said this for many, many, many years,

510
00:30:48.799 --> 00:30:51.200
<v Speaker 3>and I'll keep saying it until I'm blue in the face.

511
00:30:51.759 --> 00:30:55.279
<v Speaker 3>Here's the deal. React Native developers need to not be

512
00:30:55.359 --> 00:30:59.240
<v Speaker 3>scared to write native components. They need to not be

513
00:30:59.319 --> 00:31:02.599
<v Speaker 3>scared of that. It's really important. I've thought about even

514
00:31:02.839 --> 00:31:05.720
<v Speaker 3>making my own course. Like, take this course and you

515
00:31:05.759 --> 00:31:09.319
<v Speaker 3>will no longer be scared to write your own native

516
00:31:09.559 --> 00:31:14.680
<v Speaker 3>component because if some new feature comes out WWDC or

517
00:31:14.720 --> 00:31:17.240
<v Speaker 3>whatever and you want to take advantage of it in

518
00:31:17.279 --> 00:31:19.319
<v Speaker 3>your app and you don't want to wait on anybody

519
00:31:19.359 --> 00:31:22.559
<v Speaker 3>else to do this, just build it yourself. It's not

520
00:31:22.799 --> 00:31:27.680
<v Speaker 3>that difficult, it really is not. And so yeah, there's

521
00:31:27.839 --> 00:31:32.680
<v Speaker 3>there's really there's really no leg time. No more than really,

522
00:31:32.799 --> 00:31:35.400
<v Speaker 3>I mean like native apps all the time will leg

523
00:31:35.559 --> 00:31:38.519
<v Speaker 3>on adding new features just because of engineering time. Like

524
00:31:38.559 --> 00:31:40.000
<v Speaker 3>you got to implement it, you got to add it

525
00:31:40.039 --> 00:31:42.759
<v Speaker 3>in right, No more than that, Like, and if you

526
00:31:42.799 --> 00:31:44.400
<v Speaker 3>really really want to do it, you just build a

527
00:31:44.519 --> 00:31:46.960
<v Speaker 3>native and integrated into your app. Now, if it's something

528
00:31:47.000 --> 00:31:49.960
<v Speaker 3>that React Native should be taken care or taking advantage of,

529
00:31:50.680 --> 00:31:52.759
<v Speaker 3>then you may wait a little bit for the core

530
00:31:52.759 --> 00:31:55.680
<v Speaker 3>team to kind of catch up with her. You can obviously,

531
00:31:55.720 --> 00:31:57.960
<v Speaker 3>it is open source, so you can contribute to React

532
00:31:58.039 --> 00:32:01.799
<v Speaker 3>Native and kind of help that process. But those are

533
00:32:01.880 --> 00:32:04.039
<v Speaker 3>kind of few and far between. It's rare that something

534
00:32:04.119 --> 00:32:07.880
<v Speaker 3>actually affects the core of sure all.

535
00:32:07.839 --> 00:32:12.680
<v Speaker 1>Right, I thinks as a last one, at least for me,

536
00:32:12.920 --> 00:32:16.680
<v Speaker 1>in terms of things that pop up. If you go

537
00:32:16.799 --> 00:32:20.759
<v Speaker 1>to Ionic's website, they have an article written by their

538
00:32:20.759 --> 00:32:25.559
<v Speaker 1>CEO and co founder, Max Lynch, and they explain the

539
00:32:25.599 --> 00:32:30.960
<v Speaker 1>difference between Ionic react which is the React version of

540
00:32:31.000 --> 00:32:36.920
<v Speaker 1>the Ionic UI components, and React Native. And one of

541
00:32:36.960 --> 00:32:39.519
<v Speaker 1>the things that they say there, which I think it's

542
00:32:39.599 --> 00:32:43.119
<v Speaker 1>really interesting, is that they say that there's a difference

543
00:32:43.200 --> 00:32:51.119
<v Speaker 1>between how Ionic and React Native approach cross platform support.

544
00:32:51.319 --> 00:32:56.400
<v Speaker 1>They say that React Native takes up learn once, write anywhere,

545
00:32:57.599 --> 00:33:03.440
<v Speaker 1>and Ionic takes up right once, run anywhere. And basically

546
00:33:03.640 --> 00:33:06.480
<v Speaker 1>what they're saying is that the differences with React native.

547
00:33:07.480 --> 00:33:11.640
<v Speaker 1>You learn Reactnative and then you use it to create

548
00:33:11.759 --> 00:33:19.160
<v Speaker 1>screens specifically for Android and specifically for iOS. And in

549
00:33:19.240 --> 00:33:24.960
<v Speaker 1>contrast with Ionic, you don't think about either iOS or Android.

550
00:33:25.119 --> 00:33:28.240
<v Speaker 1>You just write it once and you trust that they're

551
00:33:28.279 --> 00:33:31.440
<v Speaker 1>going to package and that single build is going to

552
00:33:31.559 --> 00:33:36.920
<v Speaker 1>work for Android and iOS. Which sounds cool, but then

553
00:33:37.119 --> 00:33:39.759
<v Speaker 1>it brings so many other questions from my mind, like

554
00:33:39.799 --> 00:33:42.559
<v Speaker 1>this example that we were just talking about WWDC, like

555
00:33:43.000 --> 00:33:47.559
<v Speaker 1>Vision os two only exists in the Apple ecosystem, Like

556
00:33:47.599 --> 00:33:50.839
<v Speaker 1>it's never going to exist in the Android ecosystem, So

557
00:33:51.119 --> 00:33:54.160
<v Speaker 1>how do you build it once if you have something

558
00:33:54.200 --> 00:34:00.079
<v Speaker 1>that it's only going to exist in a particular ecosystem.

559
00:33:59.680 --> 00:34:07.720
<v Speaker 3>So I'll be honest, this tagline annoys me a little bit.

560
00:34:08.480 --> 00:34:14.920
<v Speaker 3>The learn once, run anywhere. To me, I want to

561
00:34:14.960 --> 00:34:21.760
<v Speaker 3>say this without being like too negative, but to me,

562
00:34:21.960 --> 00:34:25.400
<v Speaker 3>it feels a lot like developers trying to lower expectations

563
00:34:25.440 --> 00:34:29.199
<v Speaker 3>so they don't get criticism. That's what it feels like.

564
00:34:29.320 --> 00:34:32.000
<v Speaker 3>Learn once, run anywhere. Oh we never said you could

565
00:34:32.400 --> 00:34:35.480
<v Speaker 3>write it once and run anywhere, so don't criticize us

566
00:34:35.480 --> 00:34:39.239
<v Speaker 3>if it doesn't work that way. I think that tagline

567
00:34:39.320 --> 00:34:41.400
<v Speaker 3>is just wrong. I think it's just wrong based on

568
00:34:42.239 --> 00:34:45.039
<v Speaker 3>literally like almost one hundred apps that we've built over

569
00:34:45.079 --> 00:34:48.960
<v Speaker 3>the last nine years, like big ones, like tons of them.

570
00:34:49.760 --> 00:34:55.559
<v Speaker 3>And we started out with React Native version zero point eleven.

571
00:34:55.599 --> 00:34:58.159
<v Speaker 3>It's now up to zero seventy four or seventy five

572
00:34:58.679 --> 00:35:03.400
<v Speaker 3>depend when this comes out. And here's the deal. Like

573
00:35:04.400 --> 00:35:07.599
<v Speaker 3>the very first apps that we started with two parallel

574
00:35:08.559 --> 00:35:11.760
<v Speaker 3>projects just to try it out make sure it worked,

575
00:35:12.800 --> 00:35:15.559
<v Speaker 3>we got over eighty percent code reuse in that very

576
00:35:15.599 --> 00:35:19.480
<v Speaker 3>first project. It was like close to ninety percent code

577
00:35:19.519 --> 00:35:23.880
<v Speaker 3>reuse between iOS and Android. Over the intervening years, we

578
00:35:24.000 --> 00:35:27.159
<v Speaker 3>have regularly hit one hundred percent code reuse or ninety

579
00:35:27.280 --> 00:35:29.679
<v Speaker 3>nine percent code reuse like once in a great while,

580
00:35:29.719 --> 00:35:32.559
<v Speaker 3>we'll have a little if platform OS is Android, do

581
00:35:32.599 --> 00:35:35.280
<v Speaker 3>this otherwise, you know. Or we might do the extension

582
00:35:35.280 --> 00:35:39.039
<v Speaker 3>thing where it's like index dot Android dot tsx, index

583
00:35:39.079 --> 00:35:42.440
<v Speaker 3>dot iOS dot tsx and it'll render that. But it's

584
00:35:42.800 --> 00:35:45.840
<v Speaker 3>the vast majority of the code that we write is

585
00:35:46.159 --> 00:35:51.880
<v Speaker 3>write once, run anywhere, vast majority, And I think it's

586
00:35:51.880 --> 00:35:55.920
<v Speaker 3>done more harm than good. It's to me, it's been literally,

587
00:35:55.960 --> 00:35:57.679
<v Speaker 3>I think that slogan is just a kind of lower

588
00:35:57.719 --> 00:36:00.440
<v Speaker 3>expectation is all it is. And so then people will

589
00:36:00.440 --> 00:36:02.639
<v Speaker 3>then take it very seriously and say, oh, well, we

590
00:36:02.679 --> 00:36:04.840
<v Speaker 3>have to write every screen twice anyway, so why would

591
00:36:04.880 --> 00:36:07.840
<v Speaker 3>we use react native. It's not true. You just don't

592
00:36:08.079 --> 00:36:12.119
<v Speaker 3>like in real life, you know. Ninety eight percent, I'll

593
00:36:12.119 --> 00:36:15.239
<v Speaker 3>say ninety eight percent. I'll be the developer lowering expectations here.

594
00:36:15.840 --> 00:36:17.960
<v Speaker 3>Ninety eight percent of your code is going to be

595
00:36:19.159 --> 00:36:20.920
<v Speaker 3>the same. It's gonna be the code that you're going

596
00:36:20.960 --> 00:36:26.559
<v Speaker 3>to use one component for both. And usually when you're

597
00:36:26.639 --> 00:36:30.320
<v Speaker 3>making a differentiation, it's either because of platform differences as

598
00:36:30.360 --> 00:36:32.480
<v Speaker 3>far as what they support, which you would have to

599
00:36:32.519 --> 00:36:39.199
<v Speaker 3>do anyway in Ionic, or or it's differences that you

600
00:36:39.239 --> 00:36:42.599
<v Speaker 3>want to like, you want, like Android users expect this

601
00:36:42.679 --> 00:36:45.000
<v Speaker 3>to be different, you know, so you're kind of like

602
00:36:45.079 --> 00:36:49.480
<v Speaker 3>catering to your user base. iOS and users expect it

603
00:36:49.519 --> 00:36:51.679
<v Speaker 3>to be this way and Android the other way. So

604
00:36:51.679 --> 00:36:55.519
<v Speaker 3>in that case you should write something different there. But yeah,

605
00:36:55.519 --> 00:36:57.079
<v Speaker 3>this is a little bit of a rant. I'm sorry,

606
00:36:57.159 --> 00:37:00.400
<v Speaker 3>but like the whole learn once write everywhere to me

607
00:37:00.639 --> 00:37:06.599
<v Speaker 3>is a it's it's not a good slogan. Expo XPO talks.

608
00:37:06.639 --> 00:37:09.599
<v Speaker 3>You know, Expo says, create universal native apps with React

609
00:37:09.639 --> 00:37:12.440
<v Speaker 3>that run on iOS or Android iOS in the web,

610
00:37:13.079 --> 00:37:16.119
<v Speaker 3>so they I think have a better tagline. Uh. And

611
00:37:16.199 --> 00:37:18.480
<v Speaker 3>to me, Expo kind of gets this a little bit

612
00:37:18.519 --> 00:37:23.320
<v Speaker 3>better than you know, like meta engineers are brilliant, they're

613
00:37:23.320 --> 00:37:27.519
<v Speaker 3>incredible engineers, not always the greatest marketers. That's not what

614
00:37:27.559 --> 00:37:32.719
<v Speaker 3>they're you know, there for. Uh and so sometimes these things,

615
00:37:33.159 --> 00:37:36.320
<v Speaker 3>you know, like, it's a very engineer type slogan, not

616
00:37:36.400 --> 00:37:39.559
<v Speaker 3>one that I likely gotcha.

617
00:37:39.960 --> 00:37:45.760
<v Speaker 1>Okay, Well, in any case, Jessica from Ionic can now

618
00:37:45.880 --> 00:37:48.800
<v Speaker 1>even have more reasons to come here and defend.

619
00:37:49.559 --> 00:37:52.840
<v Speaker 2>Yeah, yeah, no, that makes sense.

620
00:37:53.920 --> 00:37:58.639
<v Speaker 1>Okay, man, I'm sure there are thousands of other things.

621
00:37:58.639 --> 00:38:05.480
<v Speaker 1>Do you, Peter, please do you have any any questions?

622
00:38:06.159 --> 00:38:09.679
<v Speaker 4>Okay, yeah, I think one just one question on the

623
00:38:09.760 --> 00:38:11.119
<v Speaker 4>pay fourmance.

624
00:38:11.239 --> 00:38:11.400
<v Speaker 1>Right.

625
00:38:11.559 --> 00:38:15.800
<v Speaker 4>So, first of all, capacitor is like your web view, right,

626
00:38:16.760 --> 00:38:20.840
<v Speaker 4>also reactative, this is like native right. So I think

627
00:38:21.360 --> 00:38:24.920
<v Speaker 4>most of the time we go to reddits and many forms,

628
00:38:25.159 --> 00:38:29.639
<v Speaker 4>people usually does talk about performance, which which one actually

629
00:38:29.679 --> 00:38:32.079
<v Speaker 4>performs better on which one and so on and so forth.

630
00:38:32.400 --> 00:38:35.239
<v Speaker 4>So kind of give like you may be a breakdown

631
00:38:35.280 --> 00:38:39.079
<v Speaker 4>of which one you feel those beast or do? Actually

632
00:38:39.079 --> 00:38:41.880
<v Speaker 4>I have my answer, Well, I just want to get yours,

633
00:38:42.039 --> 00:38:44.440
<v Speaker 4>because yeah, yeah, that'll be cruse.

634
00:38:45.119 --> 00:38:50.039
<v Speaker 3>It's a great question. And like I said, uh, I

635
00:38:50.039 --> 00:38:51.960
<v Speaker 3>think up to a certain point, you get the same

636
00:38:51.960 --> 00:38:56.400
<v Speaker 3>performance or a similar performance, because usually there's a lower

637
00:38:56.639 --> 00:39:02.039
<v Speaker 3>threshold where performance anything above that doesn't really impact the user.

638
00:39:02.320 --> 00:39:04.880
<v Speaker 3>Like you'll you have sixty frames per second, maybe you

639
00:39:04.880 --> 00:39:07.360
<v Speaker 3>have one hundred and twenty frames per second. If you

640
00:39:07.400 --> 00:39:10.760
<v Speaker 3>can render four thousand frames per second, does the user

641
00:39:10.800 --> 00:39:14.000
<v Speaker 3>notice that? No, because the screen literally only updates one

642
00:39:14.039 --> 00:39:16.599
<v Speaker 3>hundred and twenty times per second. It's not going to

643
00:39:16.679 --> 00:39:19.559
<v Speaker 3>update four thousand times per second. Even if you could,

644
00:39:19.719 --> 00:39:22.800
<v Speaker 3>you know, a human could perceive that. So within that,

645
00:39:22.880 --> 00:39:25.400
<v Speaker 3>like if you're in the games industry and you're working

646
00:39:25.440 --> 00:39:29.880
<v Speaker 3>within like frame rate you know windows, you you kind

647
00:39:29.880 --> 00:39:33.239
<v Speaker 3>of understand around like like what matters and what doesn't.

648
00:39:33.280 --> 00:39:36.280
<v Speaker 3>If you're doing some work and then you know, you

649
00:39:36.280 --> 00:39:39.199
<v Speaker 3>you make the frame window like you're in that frame window.

650
00:39:39.880 --> 00:39:42.159
<v Speaker 3>You're good, Like you're you're fine. Now, there may be

651
00:39:42.239 --> 00:39:44.800
<v Speaker 3>some other things that matter there, like battery life and stuff,

652
00:39:44.840 --> 00:39:47.840
<v Speaker 3>and certainly we think about those things, but it's not

653
00:39:48.440 --> 00:39:51.800
<v Speaker 3>the perceived performance of the app, like that's not that's

654
00:39:51.840 --> 00:39:55.360
<v Speaker 3>not called that's not affected there. So that's number one,

655
00:39:55.599 --> 00:39:58.119
<v Speaker 3>like what matters. It's a there's a lower bound of

656
00:39:58.199 --> 00:40:01.000
<v Speaker 3>like it's got to be at least there, like we

657
00:40:01.039 --> 00:40:02.920
<v Speaker 3>got to hit the frame, you know, we can't be

658
00:40:02.960 --> 00:40:08.000
<v Speaker 3>skipping frames. And then the other part of it would

659
00:40:08.000 --> 00:40:10.320
<v Speaker 3>be like what if you start getting into really heavy

660
00:40:10.360 --> 00:40:13.679
<v Speaker 3>screens where it is not possible to like start hitting

661
00:40:13.719 --> 00:40:16.159
<v Speaker 3>those those frame rates, or there's other things that are

662
00:40:16.159 --> 00:40:21.559
<v Speaker 3>wrong with it. And there's just one really important rule

663
00:40:21.800 --> 00:40:25.039
<v Speaker 3>before we get into the technical limitations, which is you

664
00:40:25.079 --> 00:40:30.440
<v Speaker 3>can write poor performing apps in any language anywhere. I

665
00:40:30.440 --> 00:40:32.639
<v Speaker 3>don't care if you're writing C plus plus, I don't

666
00:40:32.639 --> 00:40:36.039
<v Speaker 3>care if you're writing handcrafted assembly. You can write it

667
00:40:36.159 --> 00:40:40.000
<v Speaker 3>in such a way that it's it's poorly. It performs poorly,

668
00:40:40.760 --> 00:40:44.440
<v Speaker 3>and because of that, there's a variety of ways to

669
00:40:44.480 --> 00:40:47.599
<v Speaker 3>approach this. But you have like compilers that will that

670
00:40:47.679 --> 00:40:53.679
<v Speaker 3>will and like like JavaScript engines that will take the

671
00:40:53.679 --> 00:40:56.119
<v Speaker 3>the code that you write and try to optimize. They'll

672
00:40:56.159 --> 00:40:58.800
<v Speaker 3>do things like inlining functions, they'll do things like you know,

673
00:41:00.719 --> 00:41:05.440
<v Speaker 3>memoizing things and like shortcuts and whatnot, and those can

674
00:41:05.559 --> 00:41:11.559
<v Speaker 3>very much help. But where capacitor hits the limit is

675
00:41:11.599 --> 00:41:15.360
<v Speaker 3>the limit of the browser that is in the system,

676
00:41:15.840 --> 00:41:20.440
<v Speaker 3>so the WebView, the web engine, so that brings with it. It's

677
00:41:20.400 --> 00:41:23.719
<v Speaker 3>a certain amount of overhead itself. And then especially on

678
00:41:23.880 --> 00:41:28.599
<v Speaker 3>iOS it's usually not as advanced. Google seems to take

679
00:41:28.639 --> 00:41:31.519
<v Speaker 3>their web view a little more seriously and the engine

680
00:41:31.519 --> 00:41:33.800
<v Speaker 3>a little more seriously, so the Android side seems to

681
00:41:33.800 --> 00:41:37.440
<v Speaker 3>be a little faster. However, there's still limits there because

682
00:41:37.480 --> 00:41:42.719
<v Speaker 3>you know, it's a web browser. So the performance of

683
00:41:42.840 --> 00:41:44.920
<v Speaker 3>Ionic is going to be a cap. At some point

684
00:41:45.079 --> 00:41:46.840
<v Speaker 3>you're going to hit that or capacity. You're going to

685
00:41:46.920 --> 00:41:50.079
<v Speaker 3>hit that cap, you're gonna hit that ceiling. React Native

686
00:41:52.119 --> 00:41:55.880
<v Speaker 3>also has a ceiling because of and this is kind

687
00:41:55.880 --> 00:41:58.119
<v Speaker 3>of like influx right now, because the new architecture. But

688
00:41:58.199 --> 00:42:01.280
<v Speaker 3>there is a ceiling because of the the JavaScript bridge.

689
00:42:01.519 --> 00:42:03.039
<v Speaker 3>But there's a number of ways to get around that.

690
00:42:03.159 --> 00:42:05.719
<v Speaker 3>So one is that you can run more things on

691
00:42:05.760 --> 00:42:09.159
<v Speaker 3>the native side. So animations, for example, you craft the animation,

692
00:42:09.519 --> 00:42:11.480
<v Speaker 3>you send the information over the bridge, and then the

693
00:42:11.559 --> 00:42:13.760
<v Speaker 3>native side does all of the animating like you don't

694
00:42:13.800 --> 00:42:17.320
<v Speaker 3>even it doesn't even hit the jobscript side, So you

695
00:42:17.360 --> 00:42:20.280
<v Speaker 3>just have like everything running in the native side. And

696
00:42:20.320 --> 00:42:23.679
<v Speaker 3>then obviously if you need to, I always tell my

697
00:42:23.760 --> 00:42:25.880
<v Speaker 3>developers like, don't be afraid to drop in native if

698
00:42:25.880 --> 00:42:29.239
<v Speaker 3>you need to. But vast majority of the time, just

699
00:42:29.800 --> 00:42:33.400
<v Speaker 3>the universal truth is someone has to care. If someone

700
00:42:33.519 --> 00:42:38.000
<v Speaker 3>cares about performance, you can get so much further before

701
00:42:38.000 --> 00:42:41.920
<v Speaker 3>you hit the limits of the technology itself. So someone

702
00:42:42.000 --> 00:42:45.960
<v Speaker 3>caring and spending the time will go super super far.

703
00:42:47.639 --> 00:42:50.920
<v Speaker 3>And then yeah, the React native apps are native apps

704
00:42:50.920 --> 00:42:52.679
<v Speaker 3>because you can drop in a native any time you want,

705
00:42:52.719 --> 00:42:55.239
<v Speaker 3>and you can build anything you need to. So there

706
00:42:55.239 --> 00:42:57.440
<v Speaker 3>should never be an excuse for poor performance in a

707
00:42:57.480 --> 00:42:59.639
<v Speaker 3>React native app. There might be an excuse for poor

708
00:43:00.000 --> 00:43:04.920
<v Speaker 3>performance in a capacitor app, And that's okay because the

709
00:43:04.960 --> 00:43:07.519
<v Speaker 3>way that that Jess kind of described it to me

710
00:43:07.719 --> 00:43:10.400
<v Speaker 3>when we talked about this is that she really recommends

711
00:43:10.960 --> 00:43:16.199
<v Speaker 3>Ionic and capacitor apps for more like document focused apps,

712
00:43:16.519 --> 00:43:20.159
<v Speaker 3>like apps that are more like around content like that.

713
00:43:20.639 --> 00:43:24.079
<v Speaker 3>If you're talking about app focused apps like like you

714
00:43:24.119 --> 00:43:28.800
<v Speaker 3>know that need like really smooth animations and scrolling, and

715
00:43:28.960 --> 00:43:30.880
<v Speaker 3>you know think something like I don't know, dual Lingo

716
00:43:31.239 --> 00:43:36.119
<v Speaker 3>or Instagram or something like that, then it makes sense

717
00:43:36.159 --> 00:43:39.119
<v Speaker 3>to maybe go with something you know, something else and

718
00:43:39.159 --> 00:43:42.320
<v Speaker 3>Reacnative of course would be a prime thing there. But

719
00:43:42.400 --> 00:43:45.679
<v Speaker 3>performance really isn't an excuse with reacnative. There should never

720
00:43:45.719 --> 00:43:48.679
<v Speaker 3>be something that you can't achieve with REAC native in

721
00:43:49.320 --> 00:43:52.639
<v Speaker 3>as far as performance. And I will say just a

722
00:43:52.679 --> 00:43:55.639
<v Speaker 3>shout out for my own company, Infinite Read, if you

723
00:43:55.840 --> 00:43:59.079
<v Speaker 3>have trouble hitting that performance, then come talk to us,

724
00:43:59.079 --> 00:44:02.199
<v Speaker 3>because there's no reason why you can't get there, and

725
00:44:02.239 --> 00:44:04.719
<v Speaker 3>certainly if you have us built alongside you all the way,

726
00:44:04.719 --> 00:44:07.840
<v Speaker 3>we'll teach you how to how to build perform apps

727
00:44:07.880 --> 00:44:09.199
<v Speaker 3>like that. That's part of what we do.

728
00:44:11.559 --> 00:44:15.000
<v Speaker 4>Is also, Yeah, I think I think I'm actually very

729
00:44:15.119 --> 00:44:18.599
<v Speaker 4>quite satisfied with that. Yeah, because the web view as

730
00:44:18.679 --> 00:44:22.800
<v Speaker 4>space was really like it was actually a point actually

731
00:44:23.000 --> 00:44:25.639
<v Speaker 4>noticed because that was something that I felt like, Yeah,

732
00:44:25.719 --> 00:44:27.760
<v Speaker 4>if Capasito is going to have like a boat name,

733
00:44:27.840 --> 00:44:30.480
<v Speaker 4>that would be where it would be right, was the

734
00:44:30.559 --> 00:44:33.159
<v Speaker 4>limit of the web few and so yeah, I think

735
00:44:33.159 --> 00:44:35.000
<v Speaker 4>you kind of went through that very well.

736
00:44:35.079 --> 00:44:37.679
<v Speaker 2>Yeah, I think, yeah, that's quite great.

737
00:44:37.920 --> 00:44:41.960
<v Speaker 1>All right yamen, I'm gonna throw in a catch all

738
00:44:42.119 --> 00:44:45.559
<v Speaker 1>question just before we wrap things up. Do you think

739
00:44:45.599 --> 00:44:51.119
<v Speaker 1>there's anything that you would like to mention that perhaps

740
00:44:51.119 --> 00:44:54.079
<v Speaker 1>we haven't asked and you think would be relevant for

741
00:44:54.199 --> 00:44:55.239
<v Speaker 1>this subject.

742
00:44:56.400 --> 00:45:05.079
<v Speaker 3>Yeah. I think when when you're thinking about the subject

743
00:45:05.280 --> 00:45:09.960
<v Speaker 3>of capacitor versus React Native, one of the biggest questions

744
00:45:10.000 --> 00:45:13.480
<v Speaker 3>you should be asking yourself is your team makeup and

745
00:45:13.599 --> 00:45:18.559
<v Speaker 3>the business needs. And I mentioned this before. Now, if

746
00:45:18.599 --> 00:45:21.360
<v Speaker 3>you if you're using something like Angular and you would

747
00:45:21.360 --> 00:45:25.280
<v Speaker 3>love to continue to use Angular, you know, and just

748
00:45:25.360 --> 00:45:30.079
<v Speaker 3>kind of keep that rolling throughout your your organization, then

749
00:45:30.079 --> 00:45:33.400
<v Speaker 3>you can consider something like Ionic and capacitor, because that

750
00:45:33.440 --> 00:45:35.599
<v Speaker 3>would be you know, that would be a possibility there.

751
00:45:36.960 --> 00:45:41.119
<v Speaker 3>If you are using React. I know that there's Ionic React,

752
00:45:41.199 --> 00:45:44.559
<v Speaker 3>but I think you should strongly consider React native just

753
00:45:44.559 --> 00:45:49.960
<v Speaker 3>because of the flexibility. There are some other like like

754
00:45:50.159 --> 00:45:52.599
<v Speaker 3>view Native and svelt Native and stuff like that try

755
00:45:52.599 --> 00:45:57.159
<v Speaker 3>to build on top of React Native However, they're not

756
00:45:57.480 --> 00:46:02.800
<v Speaker 3>the greatest supported, you know, generally speaking, So I would

757
00:46:02.840 --> 00:46:05.719
<v Speaker 3>say if you if you're insisting on using something other

758
00:46:05.800 --> 00:46:10.760
<v Speaker 3>than React, then yeah, consider consider Ironic and Capacitor. If

759
00:46:10.800 --> 00:46:15.719
<v Speaker 3>you're using React, use well, really Expo. You should be

760
00:46:15.760 --> 00:46:19.559
<v Speaker 3>really looking at Expo and uh, it's gonna be hard

761
00:46:19.559 --> 00:46:23.800
<v Speaker 3>to beat the the combination there. I think it really

762
00:46:23.800 --> 00:46:26.480
<v Speaker 3>makes good, good trade offs. I'm I'm still a huge

763
00:46:26.480 --> 00:46:29.840
<v Speaker 3>fan of React Native after all these years, which normally

764
00:46:29.880 --> 00:46:32.320
<v Speaker 3>I move on to another technology after five years, and

765
00:46:32.360 --> 00:46:36.960
<v Speaker 3>this is like almost double that now, So yeah, very much.

766
00:46:37.000 --> 00:46:39.000
<v Speaker 3>I think that's that's a kind I think where and

767
00:46:39.320 --> 00:46:41.000
<v Speaker 3>you know, I can help you make that decision if

768
00:46:41.000 --> 00:46:42.519
<v Speaker 3>you if you're a company, you know, talk to me.

769
00:46:42.559 --> 00:46:46.000
<v Speaker 3>I'm more than happy to chat about it. And uh,

770
00:46:46.039 --> 00:46:47.760
<v Speaker 3>but I always try to I always try to have

771
00:46:47.920 --> 00:46:50.400
<v Speaker 3>like you know, I I don't want to be unfair

772
00:46:50.440 --> 00:46:53.639
<v Speaker 3>to these other technologies. There's reasons, there's it's as like

773
00:46:53.880 --> 00:46:56.639
<v Speaker 3>every that you know, the joke is like it depends right,

774
00:46:56.719 --> 00:46:58.880
<v Speaker 3>like there's a it's a it's a trade off discussion

775
00:46:58.960 --> 00:47:02.960
<v Speaker 3>and whatnot. And for my particular values and what I

776
00:47:03.000 --> 00:47:06.000
<v Speaker 3>want to hit, you know, business wise as well as

777
00:47:06.000 --> 00:47:10.000
<v Speaker 3>technology and developer experience wise, I really think React native

778
00:47:10.039 --> 00:47:15.239
<v Speaker 3>makes sense, but obviously there are totally valid reasons to

779
00:47:15.559 --> 00:47:17.440
<v Speaker 3>use something like capastor.

780
00:47:17.679 --> 00:47:21.639
<v Speaker 1>Okay makes sense talking about this, let's do some promos

781
00:47:21.719 --> 00:47:24.719
<v Speaker 1>and talk a little bit more about what it is

782
00:47:24.760 --> 00:47:26.840
<v Speaker 1>that you do, because that was mentioned in the beginning.

783
00:47:26.840 --> 00:47:33.239
<v Speaker 1>But just seri either besides being the CTO and co

784
00:47:33.320 --> 00:47:34.960
<v Speaker 1>founder of a company.

785
00:47:34.559 --> 00:47:36.800
<v Speaker 2>That is specialized in React native.

786
00:47:36.920 --> 00:47:40.760
<v Speaker 1>So as Jimin was just saying, any company that is

787
00:47:40.880 --> 00:47:45.639
<v Speaker 1>even considering exploring this route should definitely check out Infinite

788
00:47:45.719 --> 00:47:50.320
<v Speaker 1>Red's website and contact them. Besides that, you also do

789
00:47:50.880 --> 00:47:54.559
<v Speaker 1>lots of content, right, and some of them even produced

790
00:47:54.599 --> 00:47:57.880
<v Speaker 1>and sponsored by Infinite Red. I know there's a conference

791
00:47:58.000 --> 00:48:00.800
<v Speaker 1>that's going to happen. I think in perhaps you can

792
00:48:00.840 --> 00:48:01.800
<v Speaker 1>talk a bit more about that.

793
00:48:02.199 --> 00:48:05.320
<v Speaker 3>Yeah, that's right, So Chain React. This will be the

794
00:48:05.360 --> 00:48:10.320
<v Speaker 3>fifth edition of Chain React. It is purely react native conference.

795
00:48:10.360 --> 00:48:12.360
<v Speaker 3>So if you go there, you're gonna be surrounded by

796
00:48:12.360 --> 00:48:16.039
<v Speaker 3>React native developers or people who are interested in React native.

797
00:48:16.559 --> 00:48:19.599
<v Speaker 3>All of the talks at single track two day conference

798
00:48:19.719 --> 00:48:22.960
<v Speaker 3>in Portland, Oregon, it's all React Native. It's the people

799
00:48:23.039 --> 00:48:25.840
<v Speaker 3>you know from Meta, from Microsoft, from Amazon, all these

800
00:48:25.840 --> 00:48:28.719
<v Speaker 3>big companies that are using React Native will be there.

801
00:48:28.960 --> 00:48:31.440
<v Speaker 3>You're gonna be rubbing elbows. It's only going to be

802
00:48:31.519 --> 00:48:33.760
<v Speaker 3>like three hundred dish people, you know, so like it's

803
00:48:33.800 --> 00:48:36.039
<v Speaker 3>not a ton of people. It's a small kind of

804
00:48:36.079 --> 00:48:39.480
<v Speaker 3>tight knit community. You're gonna get a chance to meet everybody,

805
00:48:39.480 --> 00:48:42.400
<v Speaker 3>including myself, and you're going to see a bunch of

806
00:48:42.440 --> 00:48:45.599
<v Speaker 3>Reactnat or a bunch of Infinite Red and React Native

807
00:48:45.639 --> 00:48:48.119
<v Speaker 3>engineers running around with red shirts, so you can talk

808
00:48:48.119 --> 00:48:51.639
<v Speaker 3>to any of them. So it is July. We have

809
00:48:51.679 --> 00:48:54.639
<v Speaker 3>a workshop day on the seventeenth and then the eighteenth

810
00:48:54.639 --> 00:49:01.159
<v Speaker 3>and nineteenth of July our talk days. So we have

811
00:49:01.719 --> 00:49:03.760
<v Speaker 3>a bunch of exciting stuff kind of planned for that.

812
00:49:03.920 --> 00:49:09.079
<v Speaker 3>So go to chain reactcomp dot com and uh and

813
00:49:09.079 --> 00:49:11.760
<v Speaker 3>and get your get your tickets there. I'd love to

814
00:49:11.760 --> 00:49:17.320
<v Speaker 3>see you all at chain React in Portland, Oregon. And

815
00:49:17.360 --> 00:49:20.719
<v Speaker 3>then yeah, we we do a lot of other content.

816
00:49:20.960 --> 00:49:22.920
<v Speaker 3>I have a YouTube channel, although I haven't put out

817
00:49:22.920 --> 00:49:24.920
<v Speaker 3>a video for a little while. I do need to

818
00:49:24.960 --> 00:49:28.159
<v Speaker 3>do that, but it's called Jamin's Code Quests, and I

819
00:49:28.280 --> 00:49:31.079
<v Speaker 3>go kind of splunk through stuff, I explain stuff. I

820
00:49:31.360 --> 00:49:33.760
<v Speaker 3>you know, it's it's kind of fun. And you can

821
00:49:34.159 --> 00:49:36.840
<v Speaker 3>also go to my Twitch stream just my first and

822
00:49:36.880 --> 00:49:40.519
<v Speaker 3>last name, Jamon Holgren on Twitch. I do stream from

823
00:49:40.519 --> 00:49:43.639
<v Speaker 3>time to time, and I have a podcast, REAC Native Radio,

824
00:49:43.960 --> 00:49:46.719
<v Speaker 3>which is all about react Native. We just crossed our

825
00:49:46.880 --> 00:49:49.360
<v Speaker 3>three hundredth episode, which is fun and I think you

826
00:49:49.440 --> 00:49:52.679
<v Speaker 3>folks are when how many episodes have you done? Now?

827
00:49:52.719 --> 00:49:54.119
<v Speaker 3>It's it's up there as well.

828
00:49:55.079 --> 00:49:58.239
<v Speaker 2>It's pretty close. It's I think two hundred and seventy

829
00:49:58.400 --> 00:49:58.800
<v Speaker 2>or something.

830
00:49:59.360 --> 00:50:02.480
<v Speaker 3>Yeah, yeah, you done a ton. So there's uh, there's

831
00:50:02.519 --> 00:50:05.199
<v Speaker 3>a lot of uh content, reacnative content there and we

832
00:50:05.480 --> 00:50:08.960
<v Speaker 3>interview lots of people, uh lots of different topics. It's

833
00:50:08.960 --> 00:50:12.559
<v Speaker 3>pretty much the biggest Reacnative podcast. And uh we have

834
00:50:12.599 --> 00:50:15.679
<v Speaker 3>a Reacnative newsletter so Reacnative Newsletter dot com. I don't

835
00:50:15.719 --> 00:50:17.199
<v Speaker 3>know I could keep going. I don't want to. I

836
00:50:17.199 --> 00:50:18.719
<v Speaker 3>don't want to bore everybody. You can go to infinite

837
00:50:18.760 --> 00:50:21.119
<v Speaker 3>dot read and click through our website. You'll see at

838
00:50:21.119 --> 00:50:21.840
<v Speaker 3>all it's there.

839
00:50:22.920 --> 00:50:27.320
<v Speaker 1>Awesome, Okay, and Peter, how about you would you like

840
00:50:27.440 --> 00:50:30.000
<v Speaker 1>to bring up anything? Yeah?

841
00:50:30.440 --> 00:50:34.679
<v Speaker 4>Most a little more do I just will I think

842
00:50:34.679 --> 00:50:37.239
<v Speaker 4>we sent little with a lot complear. I think I

843
00:50:37.280 --> 00:50:42.039
<v Speaker 4>will just expliment a testing so I just clear right,

844
00:50:42.119 --> 00:50:43.719
<v Speaker 4>So yeah, I think that's your's.

845
00:50:44.239 --> 00:50:46.599
<v Speaker 2>You gotta check it out. Adopted the link and the

846
00:50:46.760 --> 00:50:49.880
<v Speaker 2>chat you okay, awesome.

847
00:50:50.199 --> 00:50:53.440
<v Speaker 1>I also sent some of the lengths in the comments section.

848
00:50:53.639 --> 00:50:56.880
<v Speaker 1>For those of you that are watching us from YouTube

849
00:50:57.000 --> 00:51:00.599
<v Speaker 1>or any of the other livestream platforms, there should be

850
00:51:00.679 --> 00:51:04.400
<v Speaker 1>something in the comment section first for Chain React cof.

851
00:51:04.920 --> 00:51:08.599
<v Speaker 1>If you're not, then it's just Chain React cof dot com.

852
00:51:09.159 --> 00:51:14.119
<v Speaker 1>There's also the website for Infinite Red. It's literally just

853
00:51:15.400 --> 00:51:20.280
<v Speaker 1>infinite dot red, so I mean, you can't really go

854
00:51:20.400 --> 00:51:25.840
<v Speaker 1>wrong with that. And I'm also gonna send the article

855
00:51:26.039 --> 00:51:31.760
<v Speaker 1>that Peter just mentioned. On my end, I'm just gonna

856
00:51:32.159 --> 00:51:34.599
<v Speaker 1>again touch upon the companies that produce the show. So

857
00:51:34.639 --> 00:51:38.360
<v Speaker 1>Top and Depths produces all the podcasts in this top

858
00:51:38.480 --> 00:51:42.920
<v Speaker 1>end Umbrella React round Up being one of them, but

859
00:51:43.000 --> 00:51:48.119
<v Speaker 1>we also have shows about Angular, Ruby, on Rails.

860
00:51:47.599 --> 00:51:48.239
<v Speaker 2>Cic D.

861
00:51:48.800 --> 00:51:51.280
<v Speaker 1>Anyways, there's a bunch of stuff, so do check out

862
00:51:51.639 --> 00:51:53.440
<v Speaker 1>Top and Dews. You can go to the website and

863
00:51:53.440 --> 00:51:57.800
<v Speaker 1>see all the shows available. And Onvoid, which provides remote

864
00:51:57.920 --> 00:52:02.079
<v Speaker 1>design and software development services. What if you're looking for

865
00:52:02.159 --> 00:52:04.960
<v Speaker 1>React native, then don't consider avoid just go straight to

866
00:52:05.000 --> 00:52:10.400
<v Speaker 1>infinite Red. But for other inquiries, do checkout onvoid dot com.

867
00:52:10.440 --> 00:52:14.800
<v Speaker 1>This is un void dot com. And what's interesting is

868
00:52:14.840 --> 00:52:19.559
<v Speaker 1>that instead of paying per hour, you only pay per tasks,

869
00:52:19.840 --> 00:52:23.719
<v Speaker 1>and you pay only after your tests are delivered and uproot.

870
00:52:24.320 --> 00:52:27.159
<v Speaker 1>So it's not just they delivered and you pay. You

871
00:52:27.239 --> 00:52:30.840
<v Speaker 1>actually do quality control before you commit to paying to them,

872
00:52:31.280 --> 00:52:36.280
<v Speaker 1>so it's on their best interest to deliver you quality

873
00:52:36.440 --> 00:52:41.920
<v Speaker 1>work best So that means that all the biggest pain

874
00:52:42.000 --> 00:52:45.280
<v Speaker 1>points that company have companies usually have with software outsourcing

875
00:52:45.639 --> 00:52:48.719
<v Speaker 1>are just gone when you work with them, So do

876
00:52:48.880 --> 00:52:52.039
<v Speaker 1>check out if you're interested in that. That's it for me.

877
00:52:52.320 --> 00:52:54.800
<v Speaker 1>Thank you for sticking up to the end. We're almost

878
00:52:54.840 --> 00:53:00.960
<v Speaker 1>at one hour. You could have changed this episode, the

879
00:53:01.000 --> 00:53:04.239
<v Speaker 1>episode of this podcast for one episode of House of

880
00:53:04.280 --> 00:53:06.920
<v Speaker 1>the Dragon, which, by the way, I encourage you to

881
00:53:07.000 --> 00:53:10.360
<v Speaker 1>do eventually because it's really good this new season.

882
00:53:10.679 --> 00:53:13.280
<v Speaker 2>So yeah, thank you for sticking with us for so

883
00:53:13.400 --> 00:53:16.639
<v Speaker 1>Long, and I will see you in the next one.
