WEBVTT

1
00:00:05.160 --> 00:00:08.919
<v Speaker 1>Hello, everybody, Welcome to another exciting episode of JavaScript Shabber.

2
00:00:08.960 --> 00:00:11.039
<v Speaker 1>I am Steve Edwards, the host with the face for

3
00:00:11.199 --> 00:00:13.039
<v Speaker 1>radio and the voice for being a mime, and if

4
00:00:13.039 --> 00:00:16.440
<v Speaker 1>you're watching on TV you can see that. And I'm

5
00:00:16.480 --> 00:00:19.480
<v Speaker 1>here with co panelist mister Dan Shapiro. How you doing, Dan,

6
00:00:20.519 --> 00:00:21.399
<v Speaker 1>I'm doing great.

7
00:00:21.600 --> 00:00:24.960
<v Speaker 2>Hi from Tel Aviv. Is it still hot and dry,

8
00:00:26.399 --> 00:00:29.039
<v Speaker 2>isn't it always? Oh? Yes, yeah, it's good.

9
00:00:29.160 --> 00:00:31.199
<v Speaker 1>We got really we got up in the nineties, fair

10
00:00:31.320 --> 00:00:35.000
<v Speaker 1>nine here recently, but it's a little cooler and cloudier today,

11
00:00:35.000 --> 00:00:38.960
<v Speaker 1>which is always a bummer. But anyway, our special guest

12
00:00:39.079 --> 00:00:41.479
<v Speaker 1>is mister Ryan Christian. How are you doing, Ryan?

13
00:00:42.359 --> 00:00:42.840
<v Speaker 3>Doing great?

14
00:00:42.920 --> 00:00:43.240
<v Speaker 2>Thank you?

15
00:00:43.960 --> 00:00:47.960
<v Speaker 1>So before we dive into the topic of Preact, once

16
00:00:48.000 --> 00:00:51.079
<v Speaker 1>you tell people who you are, why you're famous, why

17
00:00:51.119 --> 00:00:53.159
<v Speaker 1>they should give you money, where they can give you money,

18
00:00:53.240 --> 00:00:53.679
<v Speaker 1>et cetera.

19
00:00:54.719 --> 00:00:59.759
<v Speaker 3>Oh man, I wish.

20
00:00:57.560 --> 00:01:02.840
<v Speaker 2>Well, I'm all the people working on open source super rich. Yeah, yeah,

21
00:01:02.920 --> 00:01:03.280
<v Speaker 2>I hear.

22
00:01:03.759 --> 00:01:07.200
<v Speaker 3>The Larry Belle guy has a lambo soul waiting for

23
00:01:07.239 --> 00:01:13.280
<v Speaker 3>mine to come in, still waiting for one. So my

24
00:01:13.359 --> 00:01:16.079
<v Speaker 3>name is Ryan Christian. I'm a core maintainer of Preact

25
00:01:16.120 --> 00:01:18.480
<v Speaker 3>and have been for the past about four and a

26
00:01:18.480 --> 00:01:22.840
<v Speaker 3>half years now. Preact, for those unware, is a job

27
00:01:22.920 --> 00:01:27.560
<v Speaker 3>script UI library, and as the name can sort of suggest,

28
00:01:28.120 --> 00:01:31.400
<v Speaker 3>it is largely API compatible with React and shares a

29
00:01:31.400 --> 00:01:34.519
<v Speaker 3>lot of similarities with it in terms of how you

30
00:01:34.599 --> 00:01:37.920
<v Speaker 3>use it and some of the API constructs. I guess

31
00:01:37.920 --> 00:01:39.599
<v Speaker 3>where we diverge a little bit, just give a little

32
00:01:39.640 --> 00:01:42.599
<v Speaker 3>bit more information, is we're kind of more focused on size.

33
00:01:43.000 --> 00:01:46.599
<v Speaker 3>The core library is about four kb these days four

34
00:01:46.599 --> 00:01:49.840
<v Speaker 3>and a half kb, contrary to our marketing line, which

35
00:01:50.000 --> 00:01:53.200
<v Speaker 3>will be updated shortly. And we also kind of focus

36
00:01:53.200 --> 00:01:55.959
<v Speaker 3>on performance a little bit more heavily than React does.

37
00:01:57.439 --> 00:02:00.560
<v Speaker 3>And that terms React I think comes about across the

38
00:02:00.560 --> 00:02:04.239
<v Speaker 3>wire about sixty kV these days fifty eight. So there's

39
00:02:04.280 --> 00:02:07.640
<v Speaker 3>a quite big floor in difference in terms of the

40
00:02:07.640 --> 00:02:09.960
<v Speaker 3>size of libraries and how they can be used.

41
00:02:11.120 --> 00:02:14.080
<v Speaker 2>So I have to ask a question about that. I

42
00:02:14.199 --> 00:02:18.000
<v Speaker 2>know that well. First of all, going back a little

43
00:02:18.000 --> 00:02:20.599
<v Speaker 2>bit in history, pre Act was created by originally by

44
00:02:20.639 --> 00:02:26.120
<v Speaker 2>Jesson Miller, and as I recall, he created it because

45
00:02:26.280 --> 00:02:29.840
<v Speaker 2>his attitude was that in order to properly understand something,

46
00:02:30.039 --> 00:02:33.919
<v Speaker 2>he needs to effectively rebuild it, and he rebuilt it

47
00:02:34.000 --> 00:02:37.719
<v Speaker 2>so well that it became very successful and on its own.

48
00:02:38.800 --> 00:02:41.199
<v Speaker 2>By the way, we were talking about this before we

49
00:02:41.240 --> 00:02:46.039
<v Speaker 2>started recording people, I don't think people necessarily realize how

50
00:02:46.120 --> 00:02:51.319
<v Speaker 2>popular pre act actually is in terms of by the

51
00:02:51.319 --> 00:02:54.080
<v Speaker 2>way you called it a library, why don't you call

52
00:02:54.120 --> 00:02:55.000
<v Speaker 2>it a framework?

53
00:02:57.280 --> 00:03:01.000
<v Speaker 3>I guess my view is, I guess the older view

54
00:03:01.080 --> 00:03:03.919
<v Speaker 3>of a library is something you call in, something you use,

55
00:03:04.080 --> 00:03:08.159
<v Speaker 3>you manage to put in your existing app, or however

56
00:03:08.199 --> 00:03:11.520
<v Speaker 3>you want to do it. We generally don't prescribe solutions.

57
00:03:11.520 --> 00:03:14.280
<v Speaker 3>We don't require you to use it in certain ways.

58
00:03:15.360 --> 00:03:17.800
<v Speaker 3>It's a have toolkits that you can use however you

59
00:03:17.800 --> 00:03:22.000
<v Speaker 3>see fit, which from my understanding is for my use

60
00:03:22.039 --> 00:03:24.919
<v Speaker 3>I suppose is better fit towards the library side of

61
00:03:24.919 --> 00:03:26.639
<v Speaker 3>the spectrum than framework.

62
00:03:28.599 --> 00:03:34.800
<v Speaker 2>But yeah, it is nuanced. I use the kind of

63
00:03:34.840 --> 00:03:39.159
<v Speaker 2>definitions that I used to use was that with and

64
00:03:39.199 --> 00:03:40.919
<v Speaker 2>I know that a lot of people still use them.

65
00:03:41.080 --> 00:03:43.759
<v Speaker 2>AJ for example, I know likes to use. This distinction

66
00:03:44.639 --> 00:03:49.000
<v Speaker 2>is that with the library, your application code calls into

67
00:03:49.039 --> 00:03:52.199
<v Speaker 2>the library, and with the framework, it's the framework that

68
00:03:52.280 --> 00:03:56.759
<v Speaker 2>calls into your application code. I've kind of modified the

69
00:03:56.800 --> 00:03:59.560
<v Speaker 2>way that I look at it. The way that I

70
00:03:59.599 --> 00:04:04.759
<v Speaker 2>look at it is that frameworks prescribe certain architectures, whereas

71
00:04:04.879 --> 00:04:09.159
<v Speaker 2>libraries do not. So that's kind of the distinction that

72
00:04:09.199 --> 00:04:12.319
<v Speaker 2>I make these days. So you would say that Preact

73
00:04:12.439 --> 00:04:16.319
<v Speaker 2>does not kind of describe a certain architecture.

74
00:04:16.160 --> 00:04:20.160
<v Speaker 3>No, I mean, we generally leave that up to users.

75
00:04:20.160 --> 00:04:22.879
<v Speaker 3>They can decide how to do it. We're only concerned

76
00:04:22.920 --> 00:04:28.600
<v Speaker 3>with components and how you build out your you know,

77
00:04:28.800 --> 00:04:30.720
<v Speaker 3>veed on library and whatnot or vt on tree.

78
00:04:30.759 --> 00:04:35.279
<v Speaker 1>Excuse me, so coming coming from the view view standpoint,

79
00:04:35.600 --> 00:04:39.560
<v Speaker 1>you know, I haven't really developed with reacting and myself,

80
00:04:40.000 --> 00:04:43.600
<v Speaker 1>so I'm just curious trying to understand how Preact works

81
00:04:43.639 --> 00:04:46.600
<v Speaker 1>and React. So if I have a pre Act project

82
00:04:46.720 --> 00:04:49.160
<v Speaker 1>in my package at Jason, do I only have Preact

83
00:04:49.759 --> 00:04:53.120
<v Speaker 1>and then that depends on the React library or how

84
00:04:53.199 --> 00:04:55.920
<v Speaker 1>is it that you have this this this much smaller

85
00:04:56.040 --> 00:04:59.319
<v Speaker 1>version of React. Does it have all the functionality of

86
00:04:59.360 --> 00:05:02.399
<v Speaker 1>React itself or just a limited set of functionality?

87
00:05:03.000 --> 00:05:06.759
<v Speaker 3>Sure, so that's a great question. Preact core itself, Preact

88
00:05:06.759 --> 00:05:09.879
<v Speaker 3>is split into a bunch of sub packages. We have

89
00:05:09.959 --> 00:05:13.319
<v Speaker 3>the main Preact library that you install, and that comes

90
00:05:13.360 --> 00:05:16.079
<v Speaker 3>with a core of like I mentioned about four and

91
00:05:16.120 --> 00:05:20.040
<v Speaker 3>a half kb of content that has mostly focused on

92
00:05:20.120 --> 00:05:24.279
<v Speaker 3>class components. However, We have add ons which add different

93
00:05:24.279 --> 00:05:28.680
<v Speaker 3>API constructs, such as Preact slash hooks, so it's installed

94
00:05:29.000 --> 00:05:31.959
<v Speaker 3>with the Preact library and bundled into the Preact library,

95
00:05:32.319 --> 00:05:36.920
<v Speaker 3>but hooks you have an optional add on. Compat is

96
00:05:36.959 --> 00:05:40.920
<v Speaker 3>another thing that we look at. So our compatibility with

97
00:05:41.040 --> 00:05:46.519
<v Speaker 3>React comes from another subpackage, Preact compat, which is about

98
00:05:46.800 --> 00:05:50.439
<v Speaker 3>ninety five percent compatible with React. But we diverge in

99
00:05:50.480 --> 00:05:55.480
<v Speaker 3>some pretty big ways, namely around the event system. React

100
00:05:55.639 --> 00:05:58.360
<v Speaker 3>uses their own synthetic event system. They do not use

101
00:05:58.399 --> 00:06:02.639
<v Speaker 3>the vanilla events that you find in the dom. Well

102
00:06:02.720 --> 00:06:07.120
<v Speaker 3>they still do, yeah, and they'll probably have to do

103
00:06:07.160 --> 00:06:09.920
<v Speaker 3>so forever because that would be one hell of a

104
00:06:09.959 --> 00:06:14.879
<v Speaker 3>breaking change at this point. So that is a huge

105
00:06:14.920 --> 00:06:17.720
<v Speaker 3>ton of huge, massive code, and where a bunch of

106
00:06:17.759 --> 00:06:20.199
<v Speaker 3>that size comes from. I know a couple of years ago,

107
00:06:20.360 --> 00:06:23.319
<v Speaker 3>is something like twenty twenty five kb just for the

108
00:06:23.360 --> 00:06:27.160
<v Speaker 3>event system. They also do a bunch of event delegation

109
00:06:27.279 --> 00:06:31.800
<v Speaker 3>by default, which again is just more code, as well

110
00:06:31.839 --> 00:06:34.920
<v Speaker 3>as a lot of their newer concurrent features, so you

111
00:06:34.959 --> 00:06:40.000
<v Speaker 3>can have like two different trees rendered or in memory

112
00:06:40.040 --> 00:06:44.040
<v Speaker 3>at one point. We don't do that. We are generally

113
00:06:44.040 --> 00:06:46.439
<v Speaker 3>more focused on web standards and keeping the kind of

114
00:06:46.439 --> 00:06:51.639
<v Speaker 3>core library small, so the core is kind of focused,

115
00:06:51.639 --> 00:06:55.639
<v Speaker 3>but we do have compatibility with React, and that just

116
00:06:55.759 --> 00:06:59.879
<v Speaker 3>adds that links into existing reacts libraries that you might

117
00:06:59.879 --> 00:07:04.000
<v Speaker 3>have your package Jason or whatever, and kind of converts

118
00:07:04.439 --> 00:07:07.319
<v Speaker 3>the React vedam shape and the React constructions some of

119
00:07:07.319 --> 00:07:11.079
<v Speaker 3>the React ideas into what Preact understands. So if you

120
00:07:11.120 --> 00:07:15.240
<v Speaker 3>have a Preact project, you're only using Preact, we alias

121
00:07:15.319 --> 00:07:20.680
<v Speaker 3>out React for Preact compat if that makes sense.

122
00:07:20.800 --> 00:07:23.519
<v Speaker 1>So then Preact itself is small, but you still got

123
00:07:23.560 --> 00:07:28.000
<v Speaker 1>some other dependencies.

124
00:07:26.560 --> 00:07:30.800
<v Speaker 3>Sorry, sort of it. Those dependencies are in prec. I

125
00:07:30.839 --> 00:07:34.240
<v Speaker 3>mean those dependencies are part of Preact. Our compatibility layer

126
00:07:34.319 --> 00:07:35.120
<v Speaker 3>is part of Preact.

127
00:07:36.800 --> 00:07:40.160
<v Speaker 2>Yeah, you can clear because you kind of in you

128
00:07:40.240 --> 00:07:43.279
<v Speaker 2>alluded to it. And it's important to make this point.

129
00:07:43.439 --> 00:07:47.439
<v Speaker 2>Preact is not dependent on React in any way, shape

130
00:07:47.519 --> 00:07:50.920
<v Speaker 2>or form. When you use the project with Preact, it's

131
00:07:51.000 --> 00:07:55.279
<v Speaker 2>just Preact. It's compatible with React, it's not built on React.

132
00:07:55.439 --> 00:07:57.000
<v Speaker 3>Yeah, completely separ things.

133
00:07:57.319 --> 00:08:01.079
<v Speaker 1>So you're basically just taking the most important stuff and

134
00:08:01.120 --> 00:08:05.959
<v Speaker 1>put it in a separate that has the similar you know, functionality.

135
00:08:06.839 --> 00:08:08.160
<v Speaker 1>It's almost like you're mimicking it.

136
00:08:08.560 --> 00:08:12.240
<v Speaker 3>Yeah, yes, form, Yeah exactly. We take the APIs and

137
00:08:12.279 --> 00:08:14.040
<v Speaker 3>we mimic them and try to recreate them in a

138
00:08:14.399 --> 00:08:18.319
<v Speaker 3>smaller form that works for our needs. Okay, yeah, that

139
00:08:18.319 --> 00:08:21.560
<v Speaker 3>React knowledge and still the effective and functional.

140
00:08:22.040 --> 00:08:24.399
<v Speaker 2>So I've not used pre Act in a while to

141
00:08:24.519 --> 00:08:29.519
<v Speaker 2>my detriment. So we were talking before about the usage

142
00:08:29.600 --> 00:08:33.360
<v Speaker 2>were The fact is that Preact is the number one

143
00:08:34.519 --> 00:08:40.600
<v Speaker 2>framework slash view library out there. It's it's used as

144
00:08:40.679 --> 00:08:44.279
<v Speaker 2>much as all the other frameworks combined. Just so we

145
00:08:44.399 --> 00:08:49.840
<v Speaker 2>have a total size, View is about somewhere between forty

146
00:08:49.919 --> 00:08:52.679
<v Speaker 2>percent and a half. I'm basically the numbers I'm using

147
00:08:53.360 --> 00:08:57.399
<v Speaker 2>are from the Google Crux, which basically looks at the

148
00:08:57.480 --> 00:09:01.639
<v Speaker 2>numbers of origins. You can have other measurements like the

149
00:09:01.759 --> 00:09:06.320
<v Speaker 2>number of NPM downloads and stuff like that. I guess

150
00:09:06.360 --> 00:09:12.279
<v Speaker 2>they're kind of aligned, but probably a bit different. View

151
00:09:12.519 --> 00:09:15.440
<v Speaker 2>is like about somewhere between half and forty percent of

152
00:09:15.519 --> 00:09:19.080
<v Speaker 2>React and pre Act is about thirty percent of React,

153
00:09:19.279 --> 00:09:26.519
<v Speaker 2>which doesn't leave a whole lot for all the other frameworks. Yeah,

154
00:09:26.559 --> 00:09:30.639
<v Speaker 2>when you think about it, but it does mean that

155
00:09:30.879 --> 00:09:34.639
<v Speaker 2>Preact is a third of React, which is the leading

156
00:09:34.840 --> 00:09:37.720
<v Speaker 2>front and framework, which is a lot. You're used by

157
00:09:37.919 --> 00:09:41.879
<v Speaker 2>thousands of sites and web application hundreds, well, actually hundreds

158
00:09:41.919 --> 00:09:42.759
<v Speaker 2>of thousands, I will.

159
00:09:42.759 --> 00:09:45.200
<v Speaker 3>Yeah, And there's something a little bit more interesting there

160
00:09:45.240 --> 00:09:48.639
<v Speaker 3>is because preact has this focus on small size, it

161
00:09:48.720 --> 00:09:51.360
<v Speaker 3>is especially well suited for widgets.

162
00:09:52.159 --> 00:09:52.440
<v Speaker 2>I know.

163
00:09:52.480 --> 00:09:55.320
<v Speaker 3>I think a number of major websites use Preact on

164
00:09:55.399 --> 00:09:59.120
<v Speaker 3>it to the point where Jason quotes a figure Jason Miller,

165
00:09:59.279 --> 00:10:02.759
<v Speaker 3>who created quotes figure that Preactive be found on about

166
00:10:02.840 --> 00:10:06.039
<v Speaker 3>six percent of sites these days, or major sites used.

167
00:10:07.159 --> 00:10:11.080
<v Speaker 3>So this isn't necessarily as the main view library or

168
00:10:11.240 --> 00:10:14.679
<v Speaker 3>the main driver of all interactivity, but that it can

169
00:10:14.720 --> 00:10:18.679
<v Speaker 3>be found on a huge portion of the web just

170
00:10:18.720 --> 00:10:20.879
<v Speaker 3>because it could be used for those kind of small,

171
00:10:21.360 --> 00:10:22.600
<v Speaker 3>self contained widgets.

172
00:10:23.200 --> 00:10:25.840
<v Speaker 2>So that kind of brings out a point that I

173
00:10:25.879 --> 00:10:29.279
<v Speaker 2>was thinking about, because these days, when you consider this

174
00:10:29.440 --> 00:10:33.840
<v Speaker 2>typical size of a web site or web certainly of

175
00:10:33.879 --> 00:10:38.799
<v Speaker 2>a web application, they're pretty huge. And they're huge mostly

176
00:10:38.879 --> 00:10:44.039
<v Speaker 2>because of either user code or because of the whole

177
00:10:44.080 --> 00:10:47.799
<v Speaker 2>bunch of NPM stuff that people just bundle into their

178
00:10:47.799 --> 00:10:51.759
<v Speaker 2>web applications, to the extent that the twenty to thirty

179
00:10:51.840 --> 00:10:56.480
<v Speaker 2>K difference between Preact and React is not necessarily a

180
00:10:56.480 --> 00:10:59.240
<v Speaker 2>whole lot at the end of the day, or do

181
00:10:59.279 --> 00:11:00.480
<v Speaker 2>you disagree.

182
00:11:00.720 --> 00:11:04.120
<v Speaker 3>Well, it's closer to fifty k these days, and sure

183
00:11:04.879 --> 00:11:08.960
<v Speaker 3>when you start building massive websites, that is indeed going

184
00:11:08.960 --> 00:11:12.240
<v Speaker 3>to be swallowed up by you know, node modules or

185
00:11:12.639 --> 00:11:16.039
<v Speaker 3>user code. I was looking at the open ai site

186
00:11:16.039 --> 00:11:18.080
<v Speaker 3>the other day and I think it downloads something like

187
00:11:18.120 --> 00:11:21.679
<v Speaker 3>three megs of JavaScript. Fifty kb is not going to

188
00:11:21.720 --> 00:11:22.720
<v Speaker 3>make a difference there.

189
00:11:23.879 --> 00:11:27.639
<v Speaker 2>Gesip three megs or yeah.

190
00:11:27.960 --> 00:11:31.159
<v Speaker 3>Yeah, it has no code splitting whatsoever, so it loads

191
00:11:31.480 --> 00:11:33.919
<v Speaker 3>absolutely everything. Did you guys not see that? There was

192
00:11:34.000 --> 00:11:37.759
<v Speaker 3>the article between Sam Altman and Jonie I've that came

193
00:11:37.799 --> 00:11:41.120
<v Speaker 3>out a couple of weeks ago. It's a static page,

194
00:11:41.279 --> 00:11:43.960
<v Speaker 3>just has a single you know, BIV text, single video,

195
00:11:44.279 --> 00:11:47.080
<v Speaker 3>and it loads three megs of jobscript because it's a

196
00:11:47.240 --> 00:11:50.240
<v Speaker 3>next yess app with no codes playing whatsoever. So it

197
00:11:50.279 --> 00:11:53.279
<v Speaker 3>loads all of the you know, chat g ept and

198
00:11:53.279 --> 00:11:56.919
<v Speaker 3>stuff into it. It's bad. Wow, yeah, but.

199
00:11:57.600 --> 00:12:00.360
<v Speaker 2>So fifty K. It's not about perform months.

200
00:12:01.720 --> 00:12:06.080
<v Speaker 3>Yeah. So yeah, in that case, it's not gonna make

201
00:12:06.080 --> 00:12:09.120
<v Speaker 3>a difference. And we don't proclaim that it would. It's

202
00:12:09.559 --> 00:12:12.919
<v Speaker 3>we don't proclaim that preact, you know, adding swapping out

203
00:12:12.960 --> 00:12:17.720
<v Speaker 3>react and switch preacts can change anything on its own. However,

204
00:12:17.799 --> 00:12:23.120
<v Speaker 3>it does vastly reduce the floor I know, Alex Russell

205
00:12:23.320 --> 00:12:26.000
<v Speaker 3>of previous Chrome pain and now he works on Blink,

206
00:12:27.039 --> 00:12:27.519
<v Speaker 3>comes out.

207
00:12:27.440 --> 00:12:29.720
<v Speaker 2>With a guest on this podcast several times.

208
00:12:30.039 --> 00:12:32.440
<v Speaker 3>Yeah, he comes out every couple of years with a

209
00:12:32.519 --> 00:12:36.200
<v Speaker 3>job script budget to kind of talk about what should

210
00:12:36.200 --> 00:12:39.080
<v Speaker 3>be our height of job script for the current low

211
00:12:39.159 --> 00:12:43.440
<v Speaker 3>end devices and you know users and fifty KB in

212
00:12:43.519 --> 00:12:45.600
<v Speaker 3>terms of those budgets, which I think are about said

213
00:12:45.600 --> 00:12:48.919
<v Speaker 3>about three hundred K these days, three hundred KB. Fifty

214
00:12:49.039 --> 00:12:51.639
<v Speaker 3>k is quite a bit, as you know, one six

215
00:12:51.720 --> 00:12:54.840
<v Speaker 3>year total budget that could be reduced if you did

216
00:12:54.840 --> 00:12:58.320
<v Speaker 3>switch to Preact, and that could be you know, fifty

217
00:12:58.399 --> 00:13:03.279
<v Speaker 3>k on every page. Combined with some other opportunities. It

218
00:13:04.080 --> 00:13:06.879
<v Speaker 3>adds some extra room to add UX features or d

219
00:13:07.080 --> 00:13:07.919
<v Speaker 3>X stuff.

220
00:13:08.399 --> 00:13:12.120
<v Speaker 2>Oh for sure. And like you also said, it's in

221
00:13:12.279 --> 00:13:15.840
<v Speaker 2>very interesting use cases the widget scenario where you want

222
00:13:15.879 --> 00:13:20.159
<v Speaker 2>to add something to a page that already potentially has

223
00:13:20.200 --> 00:13:23.240
<v Speaker 2>some framework on it and you don't want to overload

224
00:13:23.279 --> 00:13:25.399
<v Speaker 2>that page even more exactly.

225
00:13:25.480 --> 00:13:28.879
<v Speaker 3>Yeah, that's quite usedful.

226
00:13:29.159 --> 00:13:35.440
<v Speaker 2>Now you did mention that in terms of the way

227
00:13:35.519 --> 00:13:40.000
<v Speaker 2>that the core Preact works, you're still focused on class

228
00:13:40.039 --> 00:13:44.759
<v Speaker 2>components rather than hooks. Are most people using Preact with

229
00:13:45.399 --> 00:13:48.279
<v Speaker 2>as far as you know, with classes or with hooks,

230
00:13:48.360 --> 00:13:53.200
<v Speaker 2>because with React itself it's hooks all the way these days.

231
00:13:54.080 --> 00:13:56.799
<v Speaker 3>Yeah, so I think hooks are definitely more popular, and

232
00:13:56.879 --> 00:13:59.679
<v Speaker 3>I should mention signals. It's another kind of state primitive

233
00:13:59.720 --> 00:14:01.879
<v Speaker 3>re add on top a couple of years ago. You

234
00:14:01.919 --> 00:14:04.720
<v Speaker 3>can use those with function components or class components. They're

235
00:14:04.799 --> 00:14:09.399
<v Speaker 3>kind of their own separate thing. But while hooks are popular,

236
00:14:09.559 --> 00:14:13.759
<v Speaker 3>they are just an optional add on and Preact so

237
00:14:13.879 --> 00:14:16.039
<v Speaker 3>you can use hooks if you want them, if you

238
00:14:16.039 --> 00:14:18.240
<v Speaker 3>don't want them, they're going to cost nothing to your bundle.

239
00:14:18.279 --> 00:14:21.960
<v Speaker 3>They are in a subpath, so you can say, hey,

240
00:14:22.000 --> 00:14:26.080
<v Speaker 3>I just want the lightest toolkit that can use, so

241
00:14:26.120 --> 00:14:28.879
<v Speaker 3>you just use the core Preact library and just use

242
00:14:28.879 --> 00:14:32.519
<v Speaker 3>class components go which you need done. And that's kind

243
00:14:32.519 --> 00:14:34.600
<v Speaker 3>of the interesting way that Preact to structured. We have

244
00:14:34.679 --> 00:14:38.960
<v Speaker 3>a plugable renderer with a public API, so people can

245
00:14:39.039 --> 00:14:43.200
<v Speaker 3>come and add existing like add ons and state primitives

246
00:14:44.000 --> 00:14:47.080
<v Speaker 3>tying into the render cycle if they want, and they

247
00:14:47.120 --> 00:14:48.960
<v Speaker 3>can use the exact same tools that we use to

248
00:14:49.120 --> 00:14:53.799
<v Speaker 3>build out our add ons, like compat, hooks, signals. More recently,

249
00:14:54.440 --> 00:14:57.600
<v Speaker 3>all that stuff, it's all public API.

250
00:14:58.240 --> 00:15:02.639
<v Speaker 2>Now. Looking at the directions in which React is moving,

251
00:15:02.720 --> 00:15:05.240
<v Speaker 2>and I'm kind of interested in contrasting some of them

252
00:15:05.240 --> 00:15:09.679
<v Speaker 2>with Preact, especially since, for our conversation before you're about

253
00:15:09.720 --> 00:15:13.480
<v Speaker 2>to release a new version of PREACTI pretty soon. One

254
00:15:13.519 --> 00:15:17.399
<v Speaker 2>of the core things about React for several years now,

255
00:15:17.960 --> 00:15:20.200
<v Speaker 2>and I think you mentioned it, is the whole fiber

256
00:15:20.320 --> 00:15:26.159
<v Speaker 2>thing and the concurrent stuff and the suspense and stuff

257
00:15:26.159 --> 00:15:30.440
<v Speaker 2>like that. Do you have anything like suspense built into Preact.

258
00:15:31.120 --> 00:15:35.519
<v Speaker 3>Yeah, Suspense has been part Preact for years now. It

259
00:15:35.600 --> 00:15:37.960
<v Speaker 3>is essentially in the same state. That is and React

260
00:15:39.320 --> 00:15:41.840
<v Speaker 3>more or less. You can use it for all sorts

261
00:15:41.840 --> 00:15:46.200
<v Speaker 3>of things like lazy loading, data hatching, asynchronous actions, whatnot.

262
00:15:46.720 --> 00:15:51.799
<v Speaker 3>That's all there. We, however, are less interested in following

263
00:15:51.879 --> 00:15:57.960
<v Speaker 3>React into things like concurrent mode and current features. Their

264
00:15:58.000 --> 00:15:59.960
<v Speaker 3>implementation is server components.

265
00:16:01.120 --> 00:16:03.679
<v Speaker 2>Yeah, we'll get to that. Let's let's put that to

266
00:16:03.720 --> 00:16:06.320
<v Speaker 2>the side, because I will want to go there. But

267
00:16:06.720 --> 00:16:09.799
<v Speaker 2>just to clarify to our to our listeners who may

268
00:16:09.879 --> 00:16:14.960
<v Speaker 2>or may not know, suspense is basically about making the

269
00:16:15.000 --> 00:16:19.360
<v Speaker 2>rendering of certain certain things, certain components a synchronous to

270
00:16:19.399 --> 00:16:22.240
<v Speaker 2>the rest of the page, and they can have a

271
00:16:22.279 --> 00:16:27.279
<v Speaker 2>loading state while they're getting retrieving the data and they

272
00:16:27.320 --> 00:16:29.679
<v Speaker 2>are not They don't block the rest of the page,

273
00:16:29.720 --> 00:16:32.840
<v Speaker 2>and when they get the data, they can then update

274
00:16:32.879 --> 00:16:35.840
<v Speaker 2>themselves with the data. I like to say that the

275
00:16:35.879 --> 00:16:39.559
<v Speaker 2>way that you can identify modern web applications is that

276
00:16:39.679 --> 00:16:42.919
<v Speaker 2>instead of one big spinner, we now have lots of

277
00:16:43.000 --> 00:16:44.039
<v Speaker 2>little spinners.

278
00:16:44.840 --> 00:16:46.720
<v Speaker 3>Yeah.

279
00:16:46.960 --> 00:16:49.879
<v Speaker 1>Yeah, that was actually what I've talked about this before

280
00:16:49.919 --> 00:16:51.919
<v Speaker 1>on Views on View and might have been here. But

281
00:16:52.039 --> 00:16:56.480
<v Speaker 1>View three added that feature, so it's native. It's just

282
00:16:56.519 --> 00:17:00.240
<v Speaker 1>super easy now to say, okay, while it's loading, shows this,

283
00:17:00.320 --> 00:17:03.000
<v Speaker 1>and then once it's loaded, then show the data. Where

284
00:17:03.039 --> 00:17:06.079
<v Speaker 1>before it was like said a loading variable. Okay, so

285
00:17:06.160 --> 00:17:08.240
<v Speaker 1>it's loading, so show this gift. And now it's loaded,

286
00:17:08.279 --> 00:17:10.359
<v Speaker 1>so you can unset that variable and show the data.

287
00:17:10.359 --> 00:17:13.359
<v Speaker 1>And so it was a very very nice convenience feature

288
00:17:13.359 --> 00:17:14.319
<v Speaker 1>added of View three.

289
00:17:14.839 --> 00:17:19.359
<v Speaker 3>Yeah, and reacts and preact. There are certainly more performance

290
00:17:19.359 --> 00:17:23.160
<v Speaker 3>considerations with it, especially just the way it works as

291
00:17:23.240 --> 00:17:28.640
<v Speaker 3>promises are essentially thrown up through the component tree. We

292
00:17:28.680 --> 00:17:33.119
<v Speaker 3>don't necessarily love it as a primitive. It certainly has

293
00:17:33.119 --> 00:17:37.079
<v Speaker 3>some bad performance footguns, but it is something that's been

294
00:17:37.119 --> 00:17:39.440
<v Speaker 3>the framework for years and you can make use of

295
00:17:39.480 --> 00:17:41.839
<v Speaker 3>it intelligently.

296
00:17:42.759 --> 00:17:45.599
<v Speaker 2>So what do you kind of recommend it potentially instead.

297
00:17:46.359 --> 00:17:49.640
<v Speaker 3>Generally extracting all sorts of day of hatching out of

298
00:17:49.680 --> 00:17:53.079
<v Speaker 3>the render tree entirely. This is something that Jason has

299
00:17:53.119 --> 00:17:56.920
<v Speaker 3>talked about a bit on I think like the his

300
00:17:57.440 --> 00:18:01.119
<v Speaker 3>VT talk of last year, so twenty twenty four. It's

301
00:18:01.119 --> 00:18:02.920
<v Speaker 3>something that the remix guys have been talking about for

302
00:18:03.000 --> 00:18:06.960
<v Speaker 3>a while in that if you put your data fetching

303
00:18:07.279 --> 00:18:10.559
<v Speaker 3>at the component level, you're only going to trigger those

304
00:18:10.559 --> 00:18:15.839
<v Speaker 3>requests as or once the page loads, and that creates

305
00:18:15.880 --> 00:18:19.640
<v Speaker 3>waterfalls and all sorts of delays that could otherwise be

306
00:18:19.680 --> 00:18:23.759
<v Speaker 3>avoided by hoisting. So you take all those data fetches,

307
00:18:24.200 --> 00:18:26.440
<v Speaker 3>you create either you know, like a page level loader

308
00:18:27.079 --> 00:18:30.799
<v Speaker 3>or just manual hoisting with things like you know fetch

309
00:18:30.880 --> 00:18:33.640
<v Speaker 3>or graph qul is great for this, and you track

310
00:18:33.720 --> 00:18:37.039
<v Speaker 3>that completely outside the render tree and have it live

311
00:18:37.079 --> 00:18:41.680
<v Speaker 3>outside entirely. So you load the main bundle, you fire

312
00:18:41.720 --> 00:18:44.000
<v Speaker 3>off all those patches, and once you get that data,

313
00:18:44.079 --> 00:18:45.200
<v Speaker 3>then you start rendering.

314
00:18:47.640 --> 00:18:51.559
<v Speaker 2>And then how do you propagate the data into the components?

315
00:18:51.559 --> 00:18:56.319
<v Speaker 2>So put it in an alternative way, what state management solutions

316
00:18:56.359 --> 00:19:00.680
<v Speaker 2>do people usually use on the client side with preact

317
00:19:00.759 --> 00:19:04.240
<v Speaker 2>in order to propagate this data into the components.

318
00:19:03.839 --> 00:19:06.799
<v Speaker 3>The contact API is great contact API has been there

319
00:19:06.799 --> 00:19:09.960
<v Speaker 3>forever and you can you know, initialize your app just

320
00:19:09.960 --> 00:19:15.480
<v Speaker 3>pass data into the root you know. App component signals

321
00:19:15.480 --> 00:19:17.359
<v Speaker 3>in more recent years have been great for that too.

322
00:19:18.359 --> 00:19:22.359
<v Speaker 3>So signals are a reactivity primitive that we added in

323
00:19:22.599 --> 00:19:26.319
<v Speaker 3>September of twenty twenty two, So you can very very

324
00:19:26.359 --> 00:19:31.680
<v Speaker 3>easily have state that exists outside of your tree. It's reactive,

325
00:19:31.759 --> 00:19:35.200
<v Speaker 3>you can change it however you want. And there's also

326
00:19:35.279 --> 00:19:38.720
<v Speaker 3>tie into the component life cycle, so when that data changes,

327
00:19:39.680 --> 00:19:44.440
<v Speaker 3>you know, components will update themselves or update text content, whatever,

328
00:19:44.960 --> 00:19:47.079
<v Speaker 3>so they can tie into that global store idea.

329
00:19:47.839 --> 00:19:50.759
<v Speaker 2>So we had Joe Savona and Sati on the show

330
00:19:50.799 --> 00:19:53.039
<v Speaker 2>a while back and one of the things that came

331
00:19:53.119 --> 00:19:57.279
<v Speaker 2>up in the conversation worse signals, and Joe was pretty

332
00:19:59.160 --> 00:20:02.519
<v Speaker 2>frank on the point that React is not going to

333
00:20:02.519 --> 00:20:06.319
<v Speaker 2>support signals. It's not part of their vision. Or actually

334
00:20:06.400 --> 00:20:09.839
<v Speaker 2>put it more accurately said, if signals becomes a core

335
00:20:09.960 --> 00:20:13.880
<v Speaker 2>feature of JavaScript itself, then they will support the JavaScript signals,

336
00:20:14.200 --> 00:20:17.440
<v Speaker 2>but otherwise they don't plan to integrate signals into React.

337
00:20:17.920 --> 00:20:20.640
<v Speaker 2>I know that, like you mentioned, Preact has had signals

338
00:20:20.640 --> 00:20:24.720
<v Speaker 2>for a while. Now do basically do signal our signals

339
00:20:24.759 --> 00:20:29.519
<v Speaker 2>in Preact used to trigger the re render of a component.

340
00:20:31.039 --> 00:20:34.839
<v Speaker 3>So yes and no. So signals have a very deep

341
00:20:35.240 --> 00:20:38.920
<v Speaker 3>integration with React. We do actually with Preact, excuse me,

342
00:20:39.240 --> 00:20:43.279
<v Speaker 3>we do also have a React integration. So if users wanted,

343
00:20:43.400 --> 00:20:45.880
<v Speaker 3>we do have a signals integration that they can use.

344
00:20:46.839 --> 00:20:52.000
<v Speaker 3>But for Preact there's kindy modes where you can use

345
00:20:52.039 --> 00:20:55.960
<v Speaker 3>a signal within your JSX as a direct text binding

346
00:20:56.160 --> 00:21:00.200
<v Speaker 3>or a atropute binding, and that if that signal updates,

347
00:21:00.440 --> 00:21:03.240
<v Speaker 3>it will change only say like a text value within

348
00:21:03.279 --> 00:21:06.279
<v Speaker 3>the JSX. It will not re render the entire component.

349
00:21:06.720 --> 00:21:09.960
<v Speaker 3>It does it at the granular, very specific level.

350
00:21:10.480 --> 00:21:12.680
<v Speaker 2>So what is known as fine grain reactivity.

351
00:21:13.000 --> 00:21:18.559
<v Speaker 3>Yes, exactly, you can if you want to reference the signal,

352
00:21:18.960 --> 00:21:23.240
<v Speaker 3>unwrap it within the actual component function and that will

353
00:21:24.079 --> 00:21:27.839
<v Speaker 3>subscribe the component essentially to the signal and will rerender it.

354
00:21:29.240 --> 00:21:31.519
<v Speaker 3>You don't need to do that, You don't necessarily need

355
00:21:31.559 --> 00:21:36.279
<v Speaker 3>to use the fine grain reactivity. Our signals implementation isn't

356
00:21:36.319 --> 00:21:39.559
<v Speaker 3>necessarily focused on fine grain reactivity, as other tools like

357
00:21:39.640 --> 00:21:43.519
<v Speaker 3>solid kind of folks on I think speltz runes are similar.

358
00:21:44.400 --> 00:21:47.759
<v Speaker 3>Our signals are meant to complement VDOM and provide a

359
00:21:48.119 --> 00:21:51.920
<v Speaker 3>more performance solution to those cases where you do want

360
00:21:52.039 --> 00:21:55.920
<v Speaker 3>fine grained reactivity when that could be valuable, But you're

361
00:21:55.960 --> 00:21:58.799
<v Speaker 3>not throwing out the baby with the bathwater. You still

362
00:21:58.880 --> 00:22:01.839
<v Speaker 3>do have the component model, you still have free renders.

363
00:22:02.680 --> 00:22:06.000
<v Speaker 3>That's still a kind of primitive and solid building boket

364
00:22:06.000 --> 00:22:06.400
<v Speaker 3>build on.

365
00:22:07.240 --> 00:22:10.039
<v Speaker 2>So basically you're saying that in terms of context, when

366
00:22:10.079 --> 00:22:13.759
<v Speaker 2>I need to propagate updates throughout the componentry, I would

367
00:22:14.119 --> 00:22:20.799
<v Speaker 2>either use something like context or signals as the means

368
00:22:20.799 --> 00:22:25.160
<v Speaker 2>of getting the data from whatever state management solution I

369
00:22:25.319 --> 00:22:30.039
<v Speaker 2>choose to use to the components themselves. Yeah.

370
00:22:30.119 --> 00:22:33.039
<v Speaker 3>Yeah, those are the kind of favorite ways these days.

371
00:22:33.440 --> 00:22:36.160
<v Speaker 3>And signals along those signs are interesting because you could

372
00:22:36.200 --> 00:22:39.960
<v Speaker 3>just directly import the signal. You don't need, you know,

373
00:22:40.039 --> 00:22:43.440
<v Speaker 3>like a use contextfook or anything. You can just have

374
00:22:43.480 --> 00:22:46.960
<v Speaker 3>a bear signal in a module important in that signal

375
00:22:48.119 --> 00:22:50.920
<v Speaker 3>and use it in your component and it's reactivity.

376
00:22:51.960 --> 00:22:55.640
<v Speaker 2>Very good. By the way, do you have anything similar

377
00:22:55.720 --> 00:22:58.480
<v Speaker 2>to ten stack query what used to be React Query?

378
00:23:00.319 --> 00:23:02.079
<v Speaker 3>No, we don't have anything built in. I think it

379
00:23:02.160 --> 00:23:06.240
<v Speaker 3>works fine with our compatibility layer. So, as we kind

380
00:23:06.240 --> 00:23:10.400
<v Speaker 3>of mentioned earlier, users can add tansac query to their app.

381
00:23:10.799 --> 00:23:13.680
<v Speaker 3>They set up the Preact aliases, so that just swaps

382
00:23:13.720 --> 00:23:18.519
<v Speaker 3>out references of React with Preact compat in their bill

383
00:23:18.599 --> 00:23:20.880
<v Speaker 3>tool of choice and it should just work.

384
00:23:23.359 --> 00:23:29.039
<v Speaker 2>Now. In recent years, a React has been really focused,

385
00:23:29.480 --> 00:23:34.880
<v Speaker 2>it seems, on transitioning from being a view library into

386
00:23:34.920 --> 00:23:41.839
<v Speaker 2>becoming a full stack framework. Some might say that nextjs

387
00:23:41.920 --> 00:23:45.519
<v Speaker 2>is kind of the future of of React in a

388
00:23:45.519 --> 00:23:48.000
<v Speaker 2>lot of ways, and a lot of and some of

389
00:23:48.000 --> 00:23:51.440
<v Speaker 2>the React core team members have indeed moved to Versailles,

390
00:23:52.240 --> 00:23:59.039
<v Speaker 2>and the vision includes stuff like React server components like

391
00:23:59.519 --> 00:24:03.400
<v Speaker 2>servers in a lot of ways, Next jays is back

392
00:24:03.440 --> 00:24:06.599
<v Speaker 2>and first everything first runs on the back end. Then

393
00:24:06.640 --> 00:24:10.519
<v Speaker 2>you actually need to explicitly specify that from beyond this

394
00:24:10.680 --> 00:24:15.079
<v Speaker 2>point things will start executing on the client side. I

395
00:24:15.200 --> 00:24:19.759
<v Speaker 2>gather that that's not the direction that you're going down

396
00:24:19.880 --> 00:24:21.960
<v Speaker 2>with pre Act now.

397
00:24:23.400 --> 00:24:25.359
<v Speaker 3>A lot of the React a lot of the ideas

398
00:24:25.359 --> 00:24:27.839
<v Speaker 3>that the React team as present over the years are interesting.

399
00:24:28.960 --> 00:24:34.480
<v Speaker 3>Server components as an idea are interesting, but we're definitely

400
00:24:34.480 --> 00:24:38.359
<v Speaker 3>not looking to follow them down that path in any way.

401
00:24:40.720 --> 00:24:43.119
<v Speaker 3>I guess a big thing for us is a lot

402
00:24:43.160 --> 00:24:45.880
<v Speaker 3>of our users don't use Preact in a way where

403
00:24:45.920 --> 00:24:48.720
<v Speaker 3>they want a framework. They want to be able to

404
00:24:48.720 --> 00:24:52.119
<v Speaker 3>just grab it added into their existing stack, their existing solutions.

405
00:24:53.079 --> 00:24:56.319
<v Speaker 3>So that sort of framework and prescribed, you know, a

406
00:24:56.359 --> 00:24:59.799
<v Speaker 3>way to build apps just wouldn't fly even if we

407
00:24:59.839 --> 00:25:04.000
<v Speaker 3>did offer it, and no one's asking for it, so

408
00:25:04.000 --> 00:25:06.480
<v Speaker 3>we're not going to follow that kind of path.

409
00:25:07.079 --> 00:25:11.799
<v Speaker 2>Yeah. So about my own experience, about a year ago,

410
00:25:13.039 --> 00:25:16.319
<v Speaker 2>I switched jobs, and because of the type of roles

411
00:25:16.359 --> 00:25:20.240
<v Speaker 2>that I did, I do it was not only me

412
00:25:20.440 --> 00:25:23.920
<v Speaker 2>being interviewed by various companies, but also me kind of

413
00:25:24.000 --> 00:25:28.039
<v Speaker 2>interviewing those various companies, and one of the things that

414
00:25:28.079 --> 00:25:31.839
<v Speaker 2>I was looking at was their technological stack, and the

415
00:25:31.920 --> 00:25:37.240
<v Speaker 2>majority of them were using React, but essentially none of

416
00:25:37.279 --> 00:25:41.839
<v Speaker 2>them the companies that I talked to were using server

417
00:25:41.960 --> 00:25:46.680
<v Speaker 2>components or stuff like that. So it creates it's it's

418
00:25:46.720 --> 00:25:48.880
<v Speaker 2>interesting to me that there seems to be a kind

419
00:25:48.880 --> 00:25:54.480
<v Speaker 2>of a growing gap between how the market is using

420
00:25:54.880 --> 00:26:00.720
<v Speaker 2>React and how and the direction in which the React

421
00:26:00.839 --> 00:26:05.000
<v Speaker 2>core team and versell are actually taking React. And it

422
00:26:05.079 --> 00:26:09.279
<v Speaker 2>seems to me that preact remains much closer to the

423
00:26:09.319 --> 00:26:15.440
<v Speaker 2>way in which most companies are using React than React itself.

424
00:26:16.480 --> 00:26:19.640
<v Speaker 3>Yeah, and along those lines, that's actually kind of one

425
00:26:19.640 --> 00:26:22.799
<v Speaker 3>of the things we're looking at for our upcoming version eleven.

426
00:26:23.359 --> 00:26:26.079
<v Speaker 3>So we're kind of thinking about our tagline. And I

427
00:26:26.119 --> 00:26:30.039
<v Speaker 3>know when the suggestions was bring your React seventeen eighteen

428
00:26:30.039 --> 00:26:34.359
<v Speaker 3>knowledge and have a good time, because.

429
00:26:34.119 --> 00:26:41.160
<v Speaker 2>Where's the rip shots? Too late? Too late?

430
00:26:41.880 --> 00:26:46.200
<v Speaker 1>Sorry, sorry my DJ responsibilities there.

431
00:26:46.759 --> 00:26:53.359
<v Speaker 3>Yeah, so yeah, we are kind of focusing more on

432
00:26:53.400 --> 00:26:58.079
<v Speaker 3>that experience that classic React has just because that's that's

433
00:26:58.079 --> 00:27:00.880
<v Speaker 3>where we find most the users are. And as you said,

434
00:27:00.960 --> 00:27:05.200
<v Speaker 3>most people that we talk to anyways aren't using React

435
00:27:05.240 --> 00:27:08.920
<v Speaker 3>in that context anyway, So Preact on having it isn't

436
00:27:08.920 --> 00:27:12.559
<v Speaker 3>a problem for them. If anything, they kind of like

437
00:27:12.640 --> 00:27:16.559
<v Speaker 3>that our engineering talent isn't spent on, you know, features

438
00:27:16.559 --> 00:27:19.119
<v Speaker 3>that they can't use or don't want to use. That's

439
00:27:19.119 --> 00:27:20.160
<v Speaker 3>spent on other stuff.

440
00:27:20.400 --> 00:27:23.400
<v Speaker 2>So before we move over to the new version of

441
00:27:23.480 --> 00:27:27.400
<v Speaker 2>pre Act, one more question that I wanted to ask, though,

442
00:27:27.839 --> 00:27:33.079
<v Speaker 2>there are people who do want or like using view

443
00:27:33.279 --> 00:27:37.759
<v Speaker 2>library in the context of a full stack framework, and

444
00:27:38.119 --> 00:27:43.279
<v Speaker 2>if those people look at pre Act, what do you

445
00:27:43.319 --> 00:27:48.200
<v Speaker 2>guys kind of recommend as the full stack framework of

446
00:27:48.319 --> 00:27:49.400
<v Speaker 2>choice in this scenario.

447
00:27:50.160 --> 00:27:55.039
<v Speaker 3>Sure, so, Astro has been great and very much aligns

448
00:27:55.039 --> 00:27:57.480
<v Speaker 3>with our vision of trying to minimize jobscript on the

449
00:27:57.480 --> 00:28:02.759
<v Speaker 3>web and really utilizing them primitives. Astro is great and

450
00:28:02.799 --> 00:28:06.680
<v Speaker 3>definitely something can recommend. Dino's Fresh is also something along

451
00:28:06.720 --> 00:28:10.279
<v Speaker 3>the same lines similar to Astro, and that's focused on

452
00:28:10.359 --> 00:28:13.759
<v Speaker 3>islands of interactivity and kind of the minimal.

453
00:28:13.480 --> 00:28:16.680
<v Speaker 2>Job of them are I think, yeah, yeah.

454
00:28:16.240 --> 00:28:16.799
<v Speaker 3>They both are.

455
00:28:18.400 --> 00:28:19.400
<v Speaker 2>Dino is er.

456
00:28:19.440 --> 00:28:22.039
<v Speaker 3>Dina's Fresh as recently coming or is coming up with

457
00:28:22.079 --> 00:28:25.039
<v Speaker 3>a version two in the near future, and that is

458
00:28:25.079 --> 00:28:29.799
<v Speaker 3>also aimed at providing more extensible kind of back end

459
00:28:29.839 --> 00:28:33.440
<v Speaker 3>features alongside the existing front end stuff, So that would

460
00:28:33.440 --> 00:28:34.240
<v Speaker 3>be a great option.

461
00:28:34.119 --> 00:28:38.359
<v Speaker 2>Too, And soon we may have remixed version three yep,

462
00:28:39.200 --> 00:28:43.039
<v Speaker 2>something which if people have not heard, they've stated that

463
00:28:43.359 --> 00:28:46.880
<v Speaker 2>they're building it on a fork of pre Act. I

464
00:28:46.920 --> 00:28:49.000
<v Speaker 2>don't know why they feel the need to fork it.

465
00:28:50.440 --> 00:28:53.160
<v Speaker 3>As they mentioned, they said something along the lines of

466
00:28:53.400 --> 00:28:56.240
<v Speaker 3>they want to own the entire experience, they want to

467
00:28:56.240 --> 00:29:00.279
<v Speaker 3>build component libraries, Preact all the stuff, they want to

468
00:29:00.279 --> 00:29:04.599
<v Speaker 3>own it completely. So along those lines, I guess fork

469
00:29:04.640 --> 00:29:08.440
<v Speaker 3>makes sense. We'll have to see what they actually remove

470
00:29:08.559 --> 00:29:11.599
<v Speaker 3>or change, or we don't know yet. I'm not sure

471
00:29:11.640 --> 00:29:12.160
<v Speaker 3>they know yet.

472
00:29:13.079 --> 00:29:17.359
<v Speaker 2>Yeah. Probably. It seems to me that, like you indicated,

473
00:29:17.400 --> 00:29:22.240
<v Speaker 2>that it's more about ownership and control than necessarily making

474
00:29:22.319 --> 00:29:25.079
<v Speaker 2>any specific change, at least at this point in time.

475
00:29:25.200 --> 00:29:28.319
<v Speaker 3>Yeah, that's what I've mentioned publicly. At least we'll have

476
00:29:28.400 --> 00:29:29.839
<v Speaker 3>to sway and see.

477
00:29:30.799 --> 00:29:33.960
<v Speaker 2>Okay. Then then talking about the upcoming version of Preact,

478
00:29:34.359 --> 00:29:37.720
<v Speaker 2>when is it coming out and what are we going

479
00:29:37.759 --> 00:29:38.599
<v Speaker 2>to get with it?

480
00:29:39.319 --> 00:29:43.119
<v Speaker 3>Sure, so I guess we'll backstory first. We are currently

481
00:29:43.119 --> 00:29:47.400
<v Speaker 3>on Preact version ten, and version ten released actually back

482
00:29:47.400 --> 00:29:51.440
<v Speaker 3>in October of twenty nineteen. It is a very very

483
00:29:51.480 --> 00:29:55.480
<v Speaker 3>long lasting major for view libraries in the space.

484
00:29:57.400 --> 00:30:01.759
<v Speaker 2>And to be fair, React, I think the previous version

485
00:30:01.799 --> 00:30:05.720
<v Speaker 2>came out in twenty eighteen, and the recent version came

486
00:30:05.880 --> 00:30:06.599
<v Speaker 2>out recently.

487
00:30:07.640 --> 00:30:11.400
<v Speaker 3>React nineteen came out December eighteen, a couple of years

488
00:30:11.440 --> 00:30:16.240
<v Speaker 3>before that. It's definitely not that far back or near

489
00:30:16.279 --> 00:30:20.240
<v Speaker 3>that far back. I think React sixteen came out in

490
00:30:20.359 --> 00:30:21.279
<v Speaker 3>twenty seventeen.

491
00:30:22.000 --> 00:30:26.119
<v Speaker 2>No, what I'm saying is that around twenty eighteen React

492
00:30:26.240 --> 00:30:28.839
<v Speaker 2>kind of got stuck as well. That's what I'm saying

493
00:30:28.880 --> 00:30:32.119
<v Speaker 2>that They also had a I think, as I recall,

494
00:30:32.119 --> 00:30:34.279
<v Speaker 2>a lengthy period of time between releases.

495
00:30:34.799 --> 00:30:38.880
<v Speaker 3>Yeah, I know, between some of their major releases, they

496
00:30:38.880 --> 00:30:42.359
<v Speaker 3>didn't have many breaking changes. So how you count majors

497
00:30:42.400 --> 00:30:45.759
<v Speaker 3>is a little bit up the air. But yeah, so

498
00:30:45.839 --> 00:30:49.039
<v Speaker 3>Preact ten came out in twenty nineteen and we've been

499
00:30:49.119 --> 00:30:52.960
<v Speaker 3>pretty happy with it since. We had some initial talks

500
00:30:53.279 --> 00:30:55.960
<v Speaker 3>about V eleven I think started in twenty twenty one

501
00:30:57.079 --> 00:31:00.359
<v Speaker 3>for some breaking changes that we wanted, so we end

502
00:31:00.440 --> 00:31:03.839
<v Speaker 3>up ending up like being able to land most of

503
00:31:03.880 --> 00:31:09.000
<v Speaker 3>our changes into Preact to absolute wizard degree by people

504
00:31:09.000 --> 00:31:15.920
<v Speaker 3>other than myself, Yov Marvin Andre Yoakim bet So we've

505
00:31:15.920 --> 00:31:19.359
<v Speaker 3>been able to kind of keep Preact stable for so

506
00:31:19.480 --> 00:31:23.200
<v Speaker 3>long without any sorts of breaking changes, which we've been very,

507
00:31:23.240 --> 00:31:26.559
<v Speaker 3>very happy with. However, over the years, a number of

508
00:31:26.559 --> 00:31:28.960
<v Speaker 3>breaking changes do kind of come up that you you know,

509
00:31:29.000 --> 00:31:32.359
<v Speaker 3>put off and you have in your head forever, and

510
00:31:32.799 --> 00:31:35.559
<v Speaker 3>that is going to culminate in V eleven, hopefully with

511
00:31:35.640 --> 00:31:38.680
<v Speaker 3>the next couple of months. We plan to have an

512
00:31:38.680 --> 00:31:41.000
<v Speaker 3>alpha out I think about the end of the month,

513
00:31:42.039 --> 00:31:45.519
<v Speaker 3>so we'll see where it ends up. But this is

514
00:31:45.559 --> 00:31:48.559
<v Speaker 3>going to be not huge set breaking changes. We're going

515
00:31:48.599 --> 00:31:51.799
<v Speaker 3>to keep it pretty minimal so that everything can be

516
00:31:51.960 --> 00:31:56.599
<v Speaker 3>migrated over pretty easily. The biggest thing, at least for me,

517
00:31:57.119 --> 00:32:02.240
<v Speaker 3>is we're finally dropping I E eleven compatibility. So yep,

518
00:32:02.400 --> 00:32:05.480
<v Speaker 3>back in twenty nineteen, that was unfortunately still a.

519
00:32:09.799 --> 00:32:12.559
<v Speaker 2>Back Actually, I kind of shocked that we were even

520
00:32:12.640 --> 00:32:14.240
<v Speaker 2>mentioning Internet Explore.

521
00:32:14.960 --> 00:32:18.839
<v Speaker 3>Yeah, yeah, same here in twenty nineteen. Unfortunately, that was

522
00:32:18.839 --> 00:32:20.920
<v Speaker 3>a bit more of a sticking point. Some people still

523
00:32:20.960 --> 00:32:23.799
<v Speaker 3>needed it for e commerce and stuff, as much as

524
00:32:23.799 --> 00:32:26.960
<v Speaker 3>I hate that, And every now and then we'd get

525
00:32:27.000 --> 00:32:30.000
<v Speaker 3>people coming into the library to say, hey, this doesn't

526
00:32:30.039 --> 00:32:32.119
<v Speaker 3>work with I eleven, or hey you need to use

527
00:32:32.119 --> 00:32:35.160
<v Speaker 3>this older method, and every single time we're like, uh,

528
00:32:35.200 --> 00:32:36.240
<v Speaker 3>do I really want to look.

529
00:32:36.119 --> 00:32:36.680
<v Speaker 1>At that pr?

530
00:32:36.880 --> 00:32:40.559
<v Speaker 3>Do I really want to look at that issue? Yeah,

531
00:32:40.960 --> 00:32:43.440
<v Speaker 3>it's been something that unfortunately has been there forever, and

532
00:32:45.000 --> 00:32:47.640
<v Speaker 3>yeah it is open source stewards. We don't want to

533
00:32:47.680 --> 00:32:51.039
<v Speaker 3>break people's library, so we have to keep that compatibility

534
00:32:51.640 --> 00:32:54.119
<v Speaker 3>even if we're not necessarily in love with it. So

535
00:32:54.119 --> 00:32:56.799
<v Speaker 3>we're finally killing that off, bumping up to more modern

536
00:32:57.240 --> 00:33:01.839
<v Speaker 3>browsers and browser features, so that's great. We're also just

537
00:33:01.880 --> 00:33:03.960
<v Speaker 3>kind of slimming out a lot of the core library,

538
00:33:04.000 --> 00:33:06.799
<v Speaker 3>so the core libraries can drop down size at least

539
00:33:06.839 --> 00:33:10.000
<v Speaker 3>a few on bytes, so I think it drops down

540
00:33:10.000 --> 00:33:14.839
<v Speaker 3>to about four point four kb these days. Our react

541
00:33:14.839 --> 00:33:17.319
<v Speaker 3>combat ability is going to get better. There's a couple

542
00:33:17.319 --> 00:33:19.240
<v Speaker 3>of breaking changes that were in that that we couldn't

543
00:33:19.319 --> 00:33:23.480
<v Speaker 3>quite land in version X unfortunately, so will be improven

544
00:33:23.519 --> 00:33:27.720
<v Speaker 3>compat bit and generally just kind of cleaning up internally

545
00:33:28.720 --> 00:33:33.039
<v Speaker 3>dropping out some weight. So for normal users there shouldn't

546
00:33:33.039 --> 00:33:35.880
<v Speaker 3>be too much differences in the way that she used library.

547
00:33:35.880 --> 00:33:39.200
<v Speaker 3>There shouldn't be too many breaking changes. A couple like

548
00:33:39.279 --> 00:33:42.599
<v Speaker 3>type switched here and there, and we're dropping a couple

549
00:33:42.720 --> 00:33:46.720
<v Speaker 3>kind of very very fringe features, but in general there

550
00:33:46.759 --> 00:33:49.599
<v Speaker 3>should be no problems For most users. There's could be

551
00:33:50.279 --> 00:33:52.559
<v Speaker 3>no migration times upgrade the.

552
00:33:52.519 --> 00:33:57.519
<v Speaker 2>Versions, so no big philosophical changes like we get in

553
00:33:57.640 --> 00:33:59.000
<v Speaker 2>recent React.

554
00:33:58.680 --> 00:34:05.279
<v Speaker 3>Versions now, and most we might change up the kind

555
00:34:05.279 --> 00:34:07.880
<v Speaker 3>of version or the messaging that we have around our

556
00:34:07.920 --> 00:34:12.639
<v Speaker 3>tagline and kind of how we relate to React, but

557
00:34:12.679 --> 00:34:15.000
<v Speaker 3>in general it's going to work the exact same way,

558
00:34:15.880 --> 00:34:18.679
<v Speaker 3>the exact same patterns.

559
00:34:18.159 --> 00:34:23.679
<v Speaker 2>And how about and it's still going to be class

560
00:34:23.679 --> 00:34:28.800
<v Speaker 2>components as the core implementation and hooks as an add on.

561
00:34:29.440 --> 00:34:34.559
<v Speaker 3>Yep, well that's not something ever in general that's a

562
00:34:34.679 --> 00:34:37.639
<v Speaker 3>zero cost abstraction. It doesn't cause us much to have

563
00:34:37.840 --> 00:34:40.400
<v Speaker 3>hooks on and separate on, so for us, it doesn't

564
00:34:40.400 --> 00:34:43.000
<v Speaker 3>really make sense to inline hooks into the main library,

565
00:34:43.159 --> 00:34:46.119
<v Speaker 3>especially if some people don't use them, so.

566
00:34:46.079 --> 00:34:49.960
<v Speaker 2>We can keep doing that. Yeah, to be fair, I

567
00:34:50.320 --> 00:34:55.000
<v Speaker 2>do wonder if because hooks first of all, hooks were

568
00:34:55.760 --> 00:34:58.239
<v Speaker 2>you know, for better or worse, Hooks were one of

569
00:34:58.239 --> 00:35:01.880
<v Speaker 2>the more popular changes that came or about with the React.

570
00:35:02.320 --> 00:35:07.599
<v Speaker 2>They really popularized that kind of style of front and programming.

571
00:35:08.639 --> 00:35:15.559
<v Speaker 2>Other frameworks adopted similar patterns as well, and consequently, all

572
00:35:15.719 --> 00:35:19.880
<v Speaker 2>the documentation, all the people who learned React in recent

573
00:35:20.000 --> 00:35:24.760
<v Speaker 2>years went through some boot camp all you know, that's

574
00:35:24.800 --> 00:35:28.320
<v Speaker 2>the method of operation that they learned, or the AI

575
00:35:28.519 --> 00:35:33.199
<v Speaker 2>generated code will likely use it. So I am thinking

576
00:35:33.400 --> 00:35:36.440
<v Speaker 2>that the world is moving in that direction, like it

577
00:35:36.559 --> 00:35:36.800
<v Speaker 2>or not.

578
00:35:37.719 --> 00:35:40.199
<v Speaker 3>Yeah, I mean that is something we offer. All it

579
00:35:40.280 --> 00:35:43.360
<v Speaker 3>is is a separate import, so you port use states

580
00:35:43.440 --> 00:35:47.480
<v Speaker 3>or use reducer from preact slash hooks. It works the

581
00:35:47.480 --> 00:35:50.519
<v Speaker 3>same way. It's still bundled with the same package. It's

582
00:35:50.599 --> 00:35:56.159
<v Speaker 3>just a subpath export. However, with the Adventus signals that

583
00:35:56.400 --> 00:35:58.679
<v Speaker 3>hooks aren't something you necessarily need to use. We do

584
00:35:58.800 --> 00:36:02.599
<v Speaker 3>offer kind of alternatives in that space that we would

585
00:36:02.679 --> 00:36:07.039
<v Speaker 3>probably start suggesting more heavily in the next coming or

586
00:36:07.320 --> 00:36:11.440
<v Speaker 3>upcoming years, as they generally lead to better experiences. Than

587
00:36:11.440 --> 00:36:18.400
<v Speaker 3>our findings. Hooks look great, but as we've kind of

588
00:36:18.440 --> 00:36:21.760
<v Speaker 3>everyone in the React ecoss experienced the last few years,

589
00:36:22.880 --> 00:36:26.719
<v Speaker 3>they have a lot of problems around d X and

590
00:36:27.000 --> 00:36:30.960
<v Speaker 3>certainly user experience. You know, you have to use a

591
00:36:31.039 --> 00:36:33.559
<v Speaker 3>linter with it. That's the only way the React team

592
00:36:33.599 --> 00:36:36.519
<v Speaker 3>really allows it to be used, as we saw with

593
00:36:36.599 --> 00:36:39.639
<v Speaker 3>kind of the some of the Beat recommendation stuff earlier

594
00:36:39.639 --> 00:36:43.480
<v Speaker 3>this year, in which they wouldn't suggest Beat unless Beat

595
00:36:43.960 --> 00:36:48.239
<v Speaker 3>had slint added to all their templates, because you know,

596
00:36:48.320 --> 00:36:51.000
<v Speaker 3>you have to use linters to help you with React.

597
00:36:52.000 --> 00:36:53.840
<v Speaker 3>You have to use and.

598
00:36:53.840 --> 00:36:58.840
<v Speaker 2>Stuff like that, and in more racent in circular updates and.

599
00:36:58.719 --> 00:37:02.719
<v Speaker 3>Yeah, and in or recent times the compiler which also

600
00:37:02.800 --> 00:37:05.960
<v Speaker 3>tries to paper over a lot of the hook's issues,

601
00:37:06.719 --> 00:37:09.760
<v Speaker 3>adding memmoralization and all those extra things on top.

602
00:37:10.239 --> 00:37:14.039
<v Speaker 2>Which so if I would I would be that blunt.

603
00:37:14.639 --> 00:37:17.480
<v Speaker 2>I can appreciate your your point of view on this,

604
00:37:18.480 --> 00:37:21.880
<v Speaker 2>I'm I'm a bit more lenient towards them. I think

605
00:37:22.440 --> 00:37:27.079
<v Speaker 2>that it's it's interesting that basically we have like two

606
00:37:27.159 --> 00:37:31.320
<v Speaker 2>camps of front end development in view libraries these days.

607
00:37:31.360 --> 00:37:38.960
<v Speaker 2>We have like React with the component based updates and

608
00:37:39.119 --> 00:37:41.840
<v Speaker 2>the vdomin which in the way that they use it

609
00:37:42.760 --> 00:37:47.199
<v Speaker 2>and on one side and basically everybody else with signals

610
00:37:47.239 --> 00:37:50.559
<v Speaker 2>and find grain reactivity more or less on the other side.

611
00:37:51.920 --> 00:37:54.199
<v Speaker 2>And that's kind of and and I think that view

612
00:37:54.320 --> 00:37:58.239
<v Speaker 2>is also kind of signal oriented, correct, Steve.

613
00:37:59.400 --> 00:38:02.360
<v Speaker 1>Yeah, When I was a buddy of mine, Eric Hanshid

614
00:38:02.400 --> 00:38:07.400
<v Speaker 1>had done some videos on signals, and I remember, as

615
00:38:07.400 --> 00:38:10.199
<v Speaker 1>I'm watching them explaining, I'm like, that sounds a lot

616
00:38:10.320 --> 00:38:14.880
<v Speaker 1>like how ux already works. Really, it was like, I

617
00:38:14.880 --> 00:38:17.760
<v Speaker 1>don't know if they borrowed from View for signals or

618
00:38:17.800 --> 00:38:20.320
<v Speaker 1>I don't know, you know, how everything originated, but but

619
00:38:21.119 --> 00:38:23.960
<v Speaker 1>just in listening to descriptions of signals and how they work,

620
00:38:23.960 --> 00:38:25.519
<v Speaker 1>I'm like, well, that's how I coded the view x

621
00:38:25.599 --> 00:38:26.400
<v Speaker 1>a lot anyway.

622
00:38:27.280 --> 00:38:31.679
<v Speaker 3>You know, for our signals implementation, v reps were absolutely

623
00:38:31.719 --> 00:38:35.840
<v Speaker 3>a major source of inspiration. We absolutely took some of

624
00:38:35.880 --> 00:38:38.360
<v Speaker 3>the ideas that they used. So it works very similarly.

625
00:38:38.880 --> 00:38:42.559
<v Speaker 2>And now Angular is dropping our xgs in favor of

626
00:38:42.639 --> 00:38:43.559
<v Speaker 2>signals as well.

627
00:38:43.880 --> 00:38:51.079
<v Speaker 3>I won't say dropping it signals. Our XCHS does different

628
00:38:51.119 --> 00:38:55.679
<v Speaker 3>focuses than signals. They are they work differently in kind

629
00:38:55.679 --> 00:38:59.239
<v Speaker 3>of target different areas. I think anyone familiar will say.

630
00:38:59.039 --> 00:39:03.239
<v Speaker 2>That, Yeah, but from what I understood from Angular core

631
00:39:04.039 --> 00:39:07.559
<v Speaker 2>team members that I've been speaking with the direction of

632
00:39:07.639 --> 00:39:10.800
<v Speaker 2>the project in general, they're not, well, you can still

633
00:39:10.880 --> 00:39:14.679
<v Speaker 2>use our xjs, but the direction that they're moving in

634
00:39:14.920 --> 00:39:17.639
<v Speaker 2>is away from our xgs and towards it. Yeah.

635
00:39:17.719 --> 00:39:21.280
<v Speaker 3>Yeah, defaulting in our xgs is I think where they're

636
00:39:21.280 --> 00:39:30.199
<v Speaker 3>moving away from to my understanding anyways.

637
00:39:26.360 --> 00:39:34.079
<v Speaker 2>So basically this version is less about, let's say, what

638
00:39:34.119 --> 00:39:38.000
<v Speaker 2>we've been used to with React of here's the big

639
00:39:38.039 --> 00:39:43.119
<v Speaker 2>message from on high, and more about cleaning house and

640
00:39:43.559 --> 00:39:48.920
<v Speaker 2>putting in all the API breaking changes that accumulated over

641
00:39:48.960 --> 00:39:52.480
<v Speaker 2>the past six years and doing it like in one

642
00:39:52.559 --> 00:39:56.360
<v Speaker 2>fell swoop, so in order to minimize the pain of migration.

643
00:39:56.559 --> 00:40:01.000
<v Speaker 3>Pretty much. Yeah, that's exactly it. It's an opportunity for

644
00:40:01.079 --> 00:40:03.039
<v Speaker 3>us get a lot of those changes that users have

645
00:40:03.119 --> 00:40:06.480
<v Speaker 3>been asking for, but unfortunately we've been unable to provide

646
00:40:06.480 --> 00:40:11.519
<v Speaker 3>for that time. And then the kind of example you said,

647
00:40:11.519 --> 00:40:14.920
<v Speaker 3>we're still in that middle of the continuum from React

648
00:40:15.000 --> 00:40:18.239
<v Speaker 3>with the full component model to signals. We are still

649
00:40:18.280 --> 00:40:21.039
<v Speaker 3>quite happy sitting in the middle, being able to provide

650
00:40:21.079 --> 00:40:24.559
<v Speaker 3>both if we want, and allowing users to use both

651
00:40:24.599 --> 00:40:27.679
<v Speaker 3>at the same time if they want. That's still our

652
00:40:27.760 --> 00:40:29.960
<v Speaker 3>kind of comfort area and what we like to pride

653
00:40:30.039 --> 00:40:33.840
<v Speaker 3>users the opportunity and option to use wherever they feel

654
00:40:33.840 --> 00:40:36.360
<v Speaker 3>fits or needs best at that moment.

655
00:40:37.440 --> 00:40:42.960
<v Speaker 2>And in recent years, the web platform itself has gotten

656
00:40:43.119 --> 00:40:49.239
<v Speaker 2>some significant enhancements, especially on the CSS side. If we're

657
00:40:49.280 --> 00:40:53.199
<v Speaker 2>looking at things like view transitions and stuff like that,

658
00:40:54.199 --> 00:40:56.599
<v Speaker 2>is that something that you integrate with.

659
00:40:57.679 --> 00:41:00.199
<v Speaker 3>It's something we've looked at a little bit, unfortunately, not

660
00:41:00.519 --> 00:41:02.840
<v Speaker 3>too much yet. I'd love to look into it, but

661
00:41:02.880 --> 00:41:05.639
<v Speaker 3>I just don't have too much time. So I know

662
00:41:05.760 --> 00:41:10.519
<v Speaker 3>React has recently produced a view transition like component built

663
00:41:10.519 --> 00:41:14.039
<v Speaker 3>into the library that helps facultate that. We don't yet

664
00:41:14.039 --> 00:41:18.239
<v Speaker 3>have anything along those lines. Depending on what you're doing,

665
00:41:18.360 --> 00:41:22.360
<v Speaker 3>I think we can work with vanilla view transitions, but

666
00:41:22.400 --> 00:41:25.639
<v Speaker 3>there are a couple of situations where we would like

667
00:41:25.679 --> 00:41:29.320
<v Speaker 3>to improve support and to provide some better support for

668
00:41:29.360 --> 00:41:31.840
<v Speaker 3>those situations, but don't currently add unfortunately.

669
00:41:33.159 --> 00:41:36.280
<v Speaker 2>Just to give our audience context, and we actually had

670
00:41:36.360 --> 00:41:39.079
<v Speaker 2>episodes in the past about few transitions. I don't remember

671
00:41:39.119 --> 00:41:40.800
<v Speaker 2>off the top of my head which number. I think

672
00:41:40.840 --> 00:41:45.159
<v Speaker 2>we even had. Normalsenthal who created the spec or actually

673
00:41:45.159 --> 00:41:47.960
<v Speaker 2>took over the spec from Jake Archibald on the show

674
00:41:48.039 --> 00:41:52.440
<v Speaker 2>to talk about it. It's basically a way of transitioning

675
00:41:53.320 --> 00:41:57.920
<v Speaker 2>between pages with using animations that are very similar to

676
00:41:57.920 --> 00:42:01.440
<v Speaker 2>what you might experience with native appations. Like if you

677
00:42:01.480 --> 00:42:05.039
<v Speaker 2>think about I don't know, let's say a Netflix type

678
00:42:05.119 --> 00:42:09.079
<v Speaker 2>experience where you click on some movie and it expands

679
00:42:09.119 --> 00:42:12.199
<v Speaker 2>to cover the entire screen, So instead of just switching

680
00:42:12.199 --> 00:42:14.519
<v Speaker 2>from one view to the next, it kind of animates

681
00:42:14.559 --> 00:42:18.039
<v Speaker 2>from one to the next. And with view transitions, I

682
00:42:18.079 --> 00:42:22.239
<v Speaker 2>think you can now get it for both single page

683
00:42:22.280 --> 00:42:29.519
<v Speaker 2>applications and multipage applications, so it'll be it's getting support

684
00:42:29.559 --> 00:42:32.920
<v Speaker 2>from the framework itself does or the view library itself

685
00:42:32.960 --> 00:42:35.719
<v Speaker 2>does mean a lot in this context. It certainly makes

686
00:42:35.760 --> 00:42:37.679
<v Speaker 2>the experience much more seamless.

687
00:42:38.119 --> 00:42:42.440
<v Speaker 3>Yeah, and prex casey on that that means switching, having

688
00:42:43.679 --> 00:42:48.480
<v Speaker 3>the user signify that a component switch of conditional rendering

689
00:42:48.559 --> 00:42:51.760
<v Speaker 3>or just swapping on router has to be like synchronous

690
00:42:51.800 --> 00:42:54.920
<v Speaker 3>by design to start start a transition the end transition

691
00:42:55.880 --> 00:42:58.119
<v Speaker 3>that unfortunately just isn't something we support at the moment.

692
00:42:58.519 --> 00:43:01.719
<v Speaker 3>It's something we love to look at. It's definitely an

693
00:43:01.760 --> 00:43:02.599
<v Speaker 3>area that's lacking.

694
00:43:03.639 --> 00:43:05.960
<v Speaker 2>Another thing, by the way that I think the platform

695
00:43:06.159 --> 00:43:09.360
<v Speaker 2>is supporting or about support is the ability to move

696
00:43:10.199 --> 00:43:13.119
<v Speaker 2>live components from one place in the dormitree to another,

697
00:43:13.159 --> 00:43:16.079
<v Speaker 2>which would be also to view libraries.

698
00:43:16.400 --> 00:43:20.480
<v Speaker 3>Yeah, that is super exciting. We have a number of

699
00:43:20.480 --> 00:43:22.679
<v Speaker 3>issues open on the preact tracker and have been open

700
00:43:22.760 --> 00:43:27.719
<v Speaker 3>for seven eight years where I frames or videos that

701
00:43:27.880 --> 00:43:30.159
<v Speaker 3>when they're shifted they lose all state.

702
00:43:31.480 --> 00:43:33.199
<v Speaker 2>Basically while the video starts over.

703
00:43:33.880 --> 00:43:37.519
<v Speaker 3>Yeah, exactly, because unfortunately, there's just no way to move

704
00:43:37.519 --> 00:43:42.880
<v Speaker 3>stateful elements at this time reliably, especially for a view

705
00:43:42.920 --> 00:43:46.239
<v Speaker 3>library that relies on diffing to figure out where componentcy

706
00:43:46.320 --> 00:43:49.719
<v Speaker 3>and move. There's no algorithm you could possibly use to

707
00:43:50.039 --> 00:43:52.440
<v Speaker 3>be correct one hundred percent of the time. We've tried

708
00:43:53.880 --> 00:43:56.960
<v Speaker 3>all sorts of different solutions that it's unfortunately impossible. So

709
00:43:57.480 --> 00:44:02.239
<v Speaker 3>being able to actually move elements is amazing. It's so exciting.

710
00:44:02.679 --> 00:44:05.440
<v Speaker 1>So are you bugs? Are you familiar with the teleport

711
00:44:05.519 --> 00:44:06.880
<v Speaker 1>functionality in view three?

712
00:44:07.880 --> 00:44:08.239
<v Speaker 3>I am not.

713
00:44:08.480 --> 00:44:10.519
<v Speaker 1>No, you should look it up. That's the whole point

714
00:44:10.760 --> 00:44:14.480
<v Speaker 1>is to be able to, you know, dynamically move content

715
00:44:14.519 --> 00:44:17.119
<v Speaker 1>from one part of the dom to the other.

716
00:44:18.719 --> 00:44:21.880
<v Speaker 3>That might be similar to like portals or something and

717
00:44:21.960 --> 00:44:23.280
<v Speaker 3>react Land not sure.

718
00:44:24.480 --> 00:44:26.719
<v Speaker 2>The bottom line though, is that at the end of

719
00:44:26.760 --> 00:44:30.000
<v Speaker 2>the day, we're getting it from the web platform itself,

720
00:44:30.039 --> 00:44:32.920
<v Speaker 2>and ideally solutions should be built on top of that

721
00:44:33.079 --> 00:44:35.159
<v Speaker 2>rather than hack around it. I know that we also

722
00:44:35.239 --> 00:44:43.119
<v Speaker 2>spoke with Carson Gross from HDMX. He was using trying

723
00:44:43.159 --> 00:44:46.800
<v Speaker 2>to use some library that kind of hacked this functionality

724
00:44:46.880 --> 00:44:48.679
<v Speaker 2>and at the end of the day, you just want

725
00:44:48.679 --> 00:44:49.920
<v Speaker 2>platform support for it.

726
00:44:50.519 --> 00:44:53.960
<v Speaker 3>Yeah, and that example for us, all it is is

727
00:44:54.000 --> 00:44:56.079
<v Speaker 3>I think all we need is a trycatch that we're

728
00:44:56.119 --> 00:44:58.679
<v Speaker 3>going to do the I think it's moved before is

729
00:44:58.719 --> 00:45:02.840
<v Speaker 3>the tomb method, and if that fails, we go back

730
00:45:02.840 --> 00:45:05.960
<v Speaker 3>to you know, inserting before. That is pretty much all

731
00:45:05.960 --> 00:45:09.119
<v Speaker 3>the change that we need and preact which will absolutely

732
00:45:09.159 --> 00:45:12.679
<v Speaker 3>land something like that when we can actually.

733
00:45:12.440 --> 00:45:15.719
<v Speaker 2>By the way, in order to achieve that amazingly small size,

734
00:45:16.400 --> 00:45:19.360
<v Speaker 2>do you minimize by hand or are you using tooling?

735
00:45:20.039 --> 00:45:23.159
<v Speaker 3>Yeah, so we do use a lot of tooling to

736
00:45:23.159 --> 00:45:27.159
<v Speaker 3>help do that, you know, tools like Turcerta and one

737
00:45:27.159 --> 00:45:33.000
<v Speaker 3>on a great. We mangle properties to keep a consistent API,

738
00:45:33.440 --> 00:45:37.719
<v Speaker 3>so that means things like render becomes underscore underscore are

739
00:45:39.000 --> 00:45:41.800
<v Speaker 3>diff underscore underscore B. We do a lot of that

740
00:45:41.880 --> 00:45:44.599
<v Speaker 3>kind of work by hand, and we track sizes every

741
00:45:44.599 --> 00:45:47.519
<v Speaker 3>single PR and we have tons of prs on the

742
00:45:47.599 --> 00:45:50.920
<v Speaker 3>preact library that are just reducing the size by four

743
00:45:50.960 --> 00:45:52.559
<v Speaker 3>bytes here, six bytes there.

744
00:45:53.480 --> 00:45:58.199
<v Speaker 2>Yeah, people don't realize. People don't realize the userland that

745
00:45:58.280 --> 00:46:01.360
<v Speaker 2>even when you minify a lot, a lot of the

746
00:46:01.440 --> 00:46:09.159
<v Speaker 2>text that exists in your JavaScript source code or typescript

747
00:46:09.159 --> 00:46:11.719
<v Speaker 2>source code actually has to state the way that it

748
00:46:11.840 --> 00:46:17.800
<v Speaker 2>is because it's property names, and since properties are looked

749
00:46:17.880 --> 00:46:22.239
<v Speaker 2>up by name, they can't be changed. So you're what

750
00:46:22.280 --> 00:46:24.960
<v Speaker 2>you're saying is that you're kind of creating aliases to

751
00:46:25.079 --> 00:46:28.920
<v Speaker 2>properties in order to reduce the size of common commonly

752
00:46:29.039 --> 00:46:30.719
<v Speaker 2>used properties throughout the code.

753
00:46:31.119 --> 00:46:31.480
<v Speaker 3>Exactly.

754
00:46:31.599 --> 00:46:32.079
<v Speaker 2>Yes, we have.

755
00:46:32.880 --> 00:46:35.480
<v Speaker 3>In the practic code, there's at the basic the repo

756
00:46:35.559 --> 00:46:38.840
<v Speaker 3>there's a mangle dot chase on file which has a

757
00:46:39.000 --> 00:46:42.239
<v Speaker 3>mapping for all those properties. So you map properties like

758
00:46:42.280 --> 00:46:46.760
<v Speaker 3>render or component def that go down to short names.

759
00:46:47.159 --> 00:46:49.360
<v Speaker 3>On top of that, very very.

760
00:46:49.320 --> 00:46:52.840
<v Speaker 2>Pea request animation frame here's a short one.

761
00:46:52.880 --> 00:46:56.480
<v Speaker 3>Yeah, not quite that. But in addition to that, very

762
00:46:56.480 --> 00:47:00.239
<v Speaker 3>smart people have looked through and seen, okay, of these

763
00:47:00.239 --> 00:47:03.400
<v Speaker 3>mangled properties, which ones will never exist alongside each other.

764
00:47:03.920 --> 00:47:08.440
<v Speaker 3>So you have four or five different properties essentially all

765
00:47:08.559 --> 00:47:11.400
<v Speaker 3>using the same alias, but they're used in different contexts.

766
00:47:11.480 --> 00:47:15.719
<v Speaker 3>There's never over any colliding that further reduces the bundle

767
00:47:15.800 --> 00:47:19.039
<v Speaker 3>size because you have you know, underscore underscore b that

768
00:47:19.079 --> 00:47:22.320
<v Speaker 3>could be used in three different contexts, which is you know,

769
00:47:23.320 --> 00:47:27.119
<v Speaker 3>fewer bytes with modern jesup and compression. Yeah, there's been

770
00:47:27.159 --> 00:47:28.760
<v Speaker 3>a lot of work that's done into that, and we

771
00:47:28.840 --> 00:47:32.400
<v Speaker 3>have tons of prs of you know, reducing by a

772
00:47:32.480 --> 00:47:37.639
<v Speaker 3>handful of bytes or exploring handful of bytes. Yeah, tons

773
00:47:37.639 --> 00:47:38.239
<v Speaker 3>of time.

774
00:47:38.480 --> 00:47:41.719
<v Speaker 2>That's kind of I have to say, it's it's technically amazing,

775
00:47:41.760 --> 00:47:43.920
<v Speaker 2>but it seems almost vanity.

776
00:47:45.199 --> 00:47:52.199
<v Speaker 3>To an extent. Yeah, it is an exercise sometimes, you

777
00:47:52.239 --> 00:47:54.679
<v Speaker 3>know devs do that where you optimize something by two

778
00:47:54.719 --> 00:47:57.559
<v Speaker 3>percent and that feels like a great day. You reduce

779
00:47:57.599 --> 00:48:00.519
<v Speaker 3>bytes by five percent, you know, five bytest.

780
00:48:01.239 --> 00:48:04.599
<v Speaker 2>It reminds me of that competition of writing games that

781
00:48:04.639 --> 00:48:08.840
<v Speaker 2>fit in one k and see programs that fit in

782
00:48:08.880 --> 00:48:11.719
<v Speaker 2>one line and all sorts of weird things that people

783
00:48:11.800 --> 00:48:12.159
<v Speaker 2>used to do.

784
00:48:13.039 --> 00:48:15.480
<v Speaker 3>It does add up over time, though, you know all

785
00:48:15.519 --> 00:48:18.360
<v Speaker 3>those efforts you know, ten bytes here, ten bites there,

786
00:48:18.519 --> 00:48:22.800
<v Speaker 3>over a couple of years. You know, that does you know,

787
00:48:22.840 --> 00:48:26.880
<v Speaker 3>increase what we can offer and features that we would

788
00:48:26.920 --> 00:48:29.960
<v Speaker 3>feel uncomfortable with otherwise we can fit in because of

789
00:48:30.000 --> 00:48:32.039
<v Speaker 3>all that work done in other parts of library to

790
00:48:32.079 --> 00:48:36.119
<v Speaker 3>reduce the size, so there's definitely a reward for it.

791
00:48:38.599 --> 00:48:42.159
<v Speaker 2>Cool. What are you looking at for the future? I mean,

792
00:48:42.199 --> 00:48:44.960
<v Speaker 2>if you're thinking about where you would like this library

793
00:48:45.000 --> 00:48:47.000
<v Speaker 2>to go, what are you thinking about?

794
00:48:47.960 --> 00:48:51.280
<v Speaker 3>Yeah, so a couple other people have been interested in

795
00:48:51.320 --> 00:48:54.159
<v Speaker 3>frameworks and offering something more along the lines of a

796
00:48:54.199 --> 00:48:57.400
<v Speaker 3>full track framework. We don't really have anything planned there

797
00:48:57.639 --> 00:49:01.159
<v Speaker 3>just yet. It is in the investigation phase, and some

798
00:49:01.199 --> 00:49:03.880
<v Speaker 3>people are quite interested in offering something along those lines.

799
00:49:05.519 --> 00:49:09.679
<v Speaker 3>We are trying to figure out, I guess, in a

800
00:49:09.760 --> 00:49:13.679
<v Speaker 3>large way, the future of the React compatibility. You know,

801
00:49:13.719 --> 00:49:16.480
<v Speaker 3>for the past six seven years we have been defined

802
00:49:16.559 --> 00:49:20.960
<v Speaker 3>by our React compatibility. That's been the major selling point,

803
00:49:21.880 --> 00:49:24.639
<v Speaker 3>that we could just be dropped into existing React apps.

804
00:49:25.159 --> 00:49:28.719
<v Speaker 3>But as React aims more for concurrent features and full

805
00:49:28.760 --> 00:49:33.079
<v Speaker 3>stack framework survey components whatnot, we are starting to kind

806
00:49:33.079 --> 00:49:36.400
<v Speaker 3>of look at, Okay, how do we differentiate ourselves. What

807
00:49:36.440 --> 00:49:40.280
<v Speaker 3>can we offer instead that fulfills the same use cases

808
00:49:40.360 --> 00:49:43.280
<v Speaker 3>or same problems that people are having, but in that

809
00:49:43.320 --> 00:49:47.920
<v Speaker 3>we feel as a subjectively better experience or better fits

810
00:49:47.920 --> 00:49:50.440
<v Speaker 3>our use cases. Anyhow, So we're starting to look at

811
00:49:50.960 --> 00:49:54.480
<v Speaker 3>various options along those lines too. We'll always look at

812
00:49:54.480 --> 00:49:57.920
<v Speaker 3>being smaller and faster, you know, as it comes. But

813
00:49:59.079 --> 00:50:01.119
<v Speaker 3>we're kind of open just seeing where it goes. Right now,

814
00:50:01.639 --> 00:50:04.519
<v Speaker 3>our growth has ballooned like crazy over the past couple

815
00:50:04.559 --> 00:50:08.079
<v Speaker 3>of years, so we're assuming that most users are pretty

816
00:50:08.079 --> 00:50:11.000
<v Speaker 3>happy with the current direction. So we're kind of just

817
00:50:11.119 --> 00:50:14.559
<v Speaker 3>keeping at it, seeing, uh, keeping our own options open,

818
00:50:15.360 --> 00:50:16.400
<v Speaker 3>seeing what users want.

819
00:50:18.000 --> 00:50:22.960
<v Speaker 2>So I I kind of scaled when we were talking

820
00:50:23.000 --> 00:50:27.159
<v Speaker 2>about integration with frameworks, I kind of neglected this question.

821
00:50:28.559 --> 00:50:34.840
<v Speaker 2>When I use it with either astro or or or

822
00:50:35.000 --> 00:50:38.079
<v Speaker 2>Fresh was the other one. I think. Do I get

823
00:50:38.840 --> 00:50:40.320
<v Speaker 2>SSR service side rendering?

824
00:50:40.760 --> 00:50:43.199
<v Speaker 3>Yep, yep. That's how they all work.

825
00:50:44.719 --> 00:50:47.280
<v Speaker 2>They do, And you have the ability to do hydration

826
00:50:47.719 --> 00:50:53.320
<v Speaker 2>on preact code, so hydration capabilities are built into the

827
00:50:53.360 --> 00:50:55.320
<v Speaker 2>preact library.

828
00:50:55.159 --> 00:50:58.440
<v Speaker 3>Yep, yep, just as it would with reactor view or

829
00:50:58.440 --> 00:51:01.920
<v Speaker 3>anything else. You can have those islands of interactivity where

830
00:51:01.920 --> 00:51:05.880
<v Speaker 3>you have static content with little bits of preact here

831
00:51:05.880 --> 00:51:08.599
<v Speaker 3>in there. You can do full page hydration service side

832
00:51:08.639 --> 00:51:11.760
<v Speaker 3>rendering streaming. That's all built in and available.

833
00:51:12.440 --> 00:51:18.719
<v Speaker 2>Cool and one of the I'll mention it in my picks,

834
00:51:18.760 --> 00:51:21.840
<v Speaker 2>but I'm actually going to be giving a talk soon

835
00:51:21.880 --> 00:51:24.519
<v Speaker 2>at a conference I gave one and I'm going to

836
00:51:24.559 --> 00:51:27.480
<v Speaker 2>be giving this a variation on the same talk and

837
00:51:27.559 --> 00:51:33.719
<v Speaker 2>another conference about how more and more frameworks are adopting

838
00:51:34.679 --> 00:51:39.480
<v Speaker 2>RPC type approaches for communication in the full stack scenario,

839
00:51:39.599 --> 00:51:41.800
<v Speaker 2>for communication between the front end and the back end.

840
00:51:43.119 --> 00:51:47.559
<v Speaker 2>In the case of preact, do you have anything built

841
00:51:47.599 --> 00:51:50.760
<v Speaker 2>in or would I be using something like TRPC? What

842
00:51:50.880 --> 00:51:54.559
<v Speaker 2>would be the rec or you don't recommend this type

843
00:51:54.599 --> 00:51:55.440
<v Speaker 2>of approach at all?

844
00:51:55.480 --> 00:52:00.159
<v Speaker 3>Maybe now, we don't have any opinions on that at

845
00:52:00.159 --> 00:52:02.360
<v Speaker 3>the moment. How you do it is kind of outside

846
00:52:02.440 --> 00:52:07.920
<v Speaker 3>the what we consider to be concerns. I think Astro

847
00:52:08.000 --> 00:52:10.679
<v Speaker 3>has something along those lines. I'm not one nine percent sure,

848
00:52:11.800 --> 00:52:15.239
<v Speaker 3>but in general we don't have any opinion on that.

849
00:52:15.360 --> 00:52:18.320
<v Speaker 3>And you can use tools like RPC or any other

850
00:52:18.360 --> 00:52:19.559
<v Speaker 3>implementation that you'd like.

851
00:52:20.519 --> 00:52:25.480
<v Speaker 2>Cool Steve, anything else you would like to add.

852
00:52:26.400 --> 00:52:29.159
<v Speaker 1>Or ask, No, I think I'm good for now. Like

853
00:52:29.199 --> 00:52:32.840
<v Speaker 1>I said, not big React users, so not real big

854
00:52:32.880 --> 00:52:36.519
<v Speaker 1>into the world, just where it it interacts with view

855
00:52:36.639 --> 00:52:37.400
<v Speaker 1>or intersects with you.

856
00:52:38.639 --> 00:52:42.159
<v Speaker 2>Yeah, I would say that if you ever want to

857
00:52:42.239 --> 00:52:46.159
<v Speaker 2>try out something other than View, then I think that

858
00:52:47.000 --> 00:52:51.039
<v Speaker 2>preact might be more aligned with your point of view.

859
00:52:53.039 --> 00:52:56.400
<v Speaker 2>Then react and we do.

860
00:52:56.840 --> 00:52:59.719
<v Speaker 3>I think I can tease something. We do have something

861
00:52:59.760 --> 00:53:01.719
<v Speaker 3>coming along lines which might be a little bit more

862
00:53:01.719 --> 00:53:04.000
<v Speaker 3>interesting to the folks who are interested in view and

863
00:53:04.039 --> 00:53:04.880
<v Speaker 3>spelt and whatnot.

864
00:53:05.639 --> 00:53:09.400
<v Speaker 2>Can you elaborate not too much, but.

865
00:53:09.400 --> 00:53:12.639
<v Speaker 3>We are It's been teased a couple of times by

866
00:53:12.679 --> 00:53:16.760
<v Speaker 3>Jason last month or so. But we have something coming

867
00:53:16.800 --> 00:53:20.119
<v Speaker 3>along lines which might tickle that fancy a little bit better.

868
00:53:20.960 --> 00:53:24.679
<v Speaker 2>And then we'll need to bring you on again or

869
00:53:24.719 --> 00:53:26.920
<v Speaker 2>somebody else on your team to talk about it if

870
00:53:26.960 --> 00:53:29.440
<v Speaker 2>and when it actually materializes.

871
00:53:29.800 --> 00:53:32.000
<v Speaker 3>Yeah, it's been something that Jason has been working on

872
00:53:32.199 --> 00:53:34.760
<v Speaker 3>for years and there's a number of public implementations of

873
00:53:34.800 --> 00:53:38.679
<v Speaker 3>it for tweaks. But it'll be interesting.

874
00:53:39.639 --> 00:53:42.000
<v Speaker 2>Is there anything that you would like to add about

875
00:53:42.000 --> 00:53:42.519
<v Speaker 2>pre arc.

876
00:53:42.480 --> 00:53:45.920
<v Speaker 3>Ryan, I think we've covered most of the main stuff.

877
00:53:48.039 --> 00:53:51.360
<v Speaker 2>Okay, I'm also done from my perspective.

878
00:53:51.400 --> 00:53:55.039
<v Speaker 1>Alrighty, So with that, we'll move on to picks, picture

879
00:53:55.320 --> 00:53:57.719
<v Speaker 1>part of the show where we can talk about anything

880
00:53:57.760 --> 00:53:59.559
<v Speaker 1>we want at least that won't get us censored by

881
00:53:59.559 --> 00:53:59.920
<v Speaker 1>the FC.

882
00:54:00.079 --> 00:54:00.440
<v Speaker 2>See.

883
00:54:01.000 --> 00:54:04.000
<v Speaker 1>So, Dan, you want to go first?

884
00:54:05.159 --> 00:54:10.320
<v Speaker 2>Okay? So I have a couple of picks first and

885
00:54:10.800 --> 00:54:15.719
<v Speaker 2>foremost I'll be speaking at two upcoming conferences. I don't

886
00:54:15.760 --> 00:54:22.280
<v Speaker 2>know if they'll happen before or after this episode actually airs,

887
00:54:22.920 --> 00:54:26.360
<v Speaker 2>but for people listening to the live stream, they will

888
00:54:26.400 --> 00:54:31.079
<v Speaker 2>certainly happen after because they're in the future. The first

889
00:54:31.119 --> 00:54:33.760
<v Speaker 2>one is they are both in Tel Aviv. They're actually

890
00:54:33.840 --> 00:54:37.079
<v Speaker 2>back to back day after day, so and I'll be

891
00:54:37.119 --> 00:54:40.639
<v Speaker 2>speaking at both of them. The first one is called

892
00:54:40.920 --> 00:54:45.599
<v Speaker 2>React Next. It started as a REACT conference but has

893
00:54:45.800 --> 00:54:49.880
<v Speaker 2>kind of evolved or matured into a general front end

894
00:54:49.920 --> 00:54:54.239
<v Speaker 2>development conference, and it's now Israel's largest front end development conference.

895
00:54:54.679 --> 00:54:58.840
<v Speaker 2>They're about over one thousand attendees and this year I'll

896
00:54:58.840 --> 00:55:04.360
<v Speaker 2>be keynoting it. So yeah, so I'm really excited Tory

897
00:55:04.440 --> 00:55:09.000
<v Speaker 2>about that, and that will happen on June twenty fifth.

898
00:55:09.599 --> 00:55:13.719
<v Speaker 2>I think they're actually sold out of tickets, so unfortunately,

899
00:55:13.800 --> 00:55:17.320
<v Speaker 2>even if people listening are interested in going, they can

900
00:55:17.400 --> 00:55:20.519
<v Speaker 2>join the waiting list, but I don't think they can

901
00:55:20.559 --> 00:55:24.599
<v Speaker 2>actually buy tickets at this point in time. And the

902
00:55:24.679 --> 00:55:28.320
<v Speaker 2>day after, in the exact same venue in Tel Aviv

903
00:55:28.480 --> 00:55:32.400
<v Speaker 2>is the no TLV conference, which is as its name implies,

904
00:55:32.480 --> 00:55:36.880
<v Speaker 2>a conference about everything having to do with the node

905
00:55:36.960 --> 00:55:41.719
<v Speaker 2>and the back end usage of JavaScript. And I'll be

906
00:55:41.840 --> 00:55:46.760
<v Speaker 2>speaking at that conference as well, not keynoting it this time.

907
00:55:48.239 --> 00:55:53.199
<v Speaker 2>Our friend Josh Goldberg will be keynoting it, talking about

908
00:55:54.000 --> 00:55:57.760
<v Speaker 2>modern tooling and stuff like that, which will should be

909
00:55:57.800 --> 00:56:02.000
<v Speaker 2>really interesting. And I'll be speaking about out in that conference.

910
00:56:02.039 --> 00:56:06.559
<v Speaker 2>I'll be speaking about using heap dumps in order to

911
00:56:06.719 --> 00:56:10.599
<v Speaker 2>analyze performance issues and memory leaks and stuff like that,

912
00:56:11.119 --> 00:56:13.320
<v Speaker 2>which should be fun as well. So it will be

913
00:56:13.639 --> 00:56:16.760
<v Speaker 2>interesting to talk back, you know, back to back in

914
00:56:16.800 --> 00:56:21.599
<v Speaker 2>two conferences. That one might actually still have tickets. Let

915
00:56:21.679 --> 00:56:27.079
<v Speaker 2>me check. Yeah, you can buy the last minute tickets

916
00:56:27.639 --> 00:56:30.360
<v Speaker 2>a bit more expensive, but you know, wait for the

917
00:56:30.440 --> 00:56:33.000
<v Speaker 2>last minute, then that's what you get. But if somebody

918
00:56:33.039 --> 00:56:38.440
<v Speaker 2>wants to join, apparently they still can, So that would

919
00:56:38.480 --> 00:56:42.119
<v Speaker 2>be my first pick. My other pick was the fact

920
00:56:42.159 --> 00:56:44.880
<v Speaker 2>that I actually recently spoke at a conference. I spoke

921
00:56:44.920 --> 00:56:49.000
<v Speaker 2>at the JS Heroes conference in Clues, Romania. It's an

922
00:56:49.199 --> 00:56:52.159
<v Speaker 2>It was a great conference. If you get an opportunity

923
00:56:52.599 --> 00:56:55.559
<v Speaker 2>in the future to attend or speak at that conference,

924
00:56:55.639 --> 00:57:00.639
<v Speaker 2>I highly recommend it. It's a community driven conference and

925
00:57:00.679 --> 00:57:05.199
<v Speaker 2>they do blind selections, so there's no benefit in being

926
00:57:05.360 --> 00:57:08.719
<v Speaker 2>well known or less known as a speaker. You just

927
00:57:08.800 --> 00:57:12.480
<v Speaker 2>need to come up with an interesting topic. The lineup

928
00:57:12.800 --> 00:57:16.239
<v Speaker 2>was amazing, the talks were great, well amazing and also

929
00:57:16.360 --> 00:57:21.199
<v Speaker 2>me ah and the talks were great, and the organization

930
00:57:21.719 --> 00:57:24.719
<v Speaker 2>was a top notch and I can only say great

931
00:57:24.719 --> 00:57:29.159
<v Speaker 2>things about it. They took us to dinners, they hosted

932
00:57:29.320 --> 00:57:32.039
<v Speaker 2>us the speakers in this picnic in the woods, which

933
00:57:32.159 --> 00:57:36.559
<v Speaker 2>was great. It was just a lot of fun. And

934
00:57:36.960 --> 00:57:40.400
<v Speaker 2>the last, my last pick is it As I mentioned

935
00:57:40.840 --> 00:57:44.559
<v Speaker 2>that conference took place in Cluse, Romania, so my last

936
00:57:44.599 --> 00:57:48.360
<v Speaker 2>pick would be Rominia itself because we took the opportunity,

937
00:57:48.519 --> 00:57:51.239
<v Speaker 2>my wife and I to tour Romania a bit both

938
00:57:51.440 --> 00:57:56.199
<v Speaker 2>before and after the conference. So we drove through places

939
00:57:56.320 --> 00:58:00.639
<v Speaker 2>like obviously Bucharest, which is the capital of Romini, but

940
00:58:00.760 --> 00:58:06.320
<v Speaker 2>also Brashov and Sigishwara and Cibiu and Cluge which I mentioned.

941
00:58:06.840 --> 00:58:13.079
<v Speaker 2>And Romania is a lovely country, has a great outdoors

942
00:58:13.119 --> 00:58:16.159
<v Speaker 2>in terms of the Carpathian Mountains, and there are a

943
00:58:16.159 --> 00:58:21.880
<v Speaker 2>lot of castles there, including Dracula's castle known as brand Castle,

944
00:58:22.039 --> 00:58:24.960
<v Speaker 2>and there are other lovely castles there, and you know,

945
00:58:25.119 --> 00:58:29.320
<v Speaker 2>a lot of historical towns and cities and places to visit,

946
00:58:29.840 --> 00:58:33.360
<v Speaker 2>and it's just a lovely place and I recommend visiting

947
00:58:33.360 --> 00:58:35.880
<v Speaker 2>there if you have the opportunity to do so, and

948
00:58:36.039 --> 00:58:37.920
<v Speaker 2>those would be my picks for today.

949
00:58:39.239 --> 00:58:42.800
<v Speaker 1>All righty, I will go next, and before I get

950
00:58:42.840 --> 00:58:45.639
<v Speaker 1>to the highlight of every episode, at least the ones

951
00:58:45.639 --> 00:58:52.000
<v Speaker 1>that I'm on, there's interesting announcement from Avenue of View

952
00:58:52.440 --> 00:58:57.760
<v Speaker 1>and beat Fame if you don't know. Recently he started

953
00:58:57.760 --> 00:59:02.119
<v Speaker 1>a company called VOYD zero with the goal to sort

954
00:59:02.159 --> 00:59:07.880
<v Speaker 1>of build a unified tool set for build processes and

955
00:59:07.920 --> 00:59:10.639
<v Speaker 1>so on. And one of the things they're doing is

956
00:59:10.639 --> 00:59:14.239
<v Speaker 1>in the original VAT they use roll up. They just

957
00:59:14.239 --> 00:59:17.039
<v Speaker 1>incorporated roll up to do the build process, and they

958
00:59:17.079 --> 00:59:20.000
<v Speaker 1>said that they were going to start building their own

959
00:59:20.079 --> 00:59:24.559
<v Speaker 1>version of that called roll down obviously sort of a

960
00:59:24.599 --> 00:59:28.280
<v Speaker 1>play on that, And as of about a week ago

961
00:59:28.320 --> 00:59:31.960
<v Speaker 1>May twenty ninth, as of this recording, they have a

962
00:59:32.000 --> 00:59:37.079
<v Speaker 1>product called roll Down VAT, which is VAT with the

963
00:59:37.119 --> 00:59:42.639
<v Speaker 1>initial build of their Rust powered rolldown tool. So if

964
00:59:42.679 --> 00:59:43.760
<v Speaker 1>you want to test it out.

965
00:59:45.199 --> 00:59:50.679
<v Speaker 2>It seems that all modern JavaScript tooling is heading the

966
00:59:50.719 --> 00:59:54.840
<v Speaker 2>way of either Go or Rust. Yes, so yeah, interesting

967
00:59:56.079 --> 00:59:59.280
<v Speaker 2>I have to say about this. As an aside that

968
00:59:59.480 --> 01:00:03.079
<v Speaker 2>I mentioned before that the front end framework world is

969
01:00:03.199 --> 01:00:09.360
<v Speaker 2>kind of divided between React using component level updates and

970
01:00:09.440 --> 01:00:15.039
<v Speaker 2>everybody else going with signals. It seems that the in

971
01:00:15.159 --> 01:00:19.199
<v Speaker 2>terms of bundling, you've got next Gs going with their

972
01:00:19.280 --> 01:00:24.480
<v Speaker 2>thing and everybody else going with wheat. So it's it's

973
01:00:24.480 --> 01:00:29.880
<v Speaker 2>surely interesting again this kind of split that we're seeing

974
01:00:29.880 --> 01:00:30.400
<v Speaker 2>in the market.

975
01:00:30.639 --> 01:00:33.119
<v Speaker 1>All right, what is next tool that they're using? I've forgotten.

976
01:00:33.119 --> 01:00:34.840
<v Speaker 2>I know they're using a turbo pack.

977
01:00:34.920 --> 01:00:38.519
<v Speaker 1>I think turno pack, right, okay, right, so yeah, yeah,

978
01:00:38.559 --> 01:00:41.000
<v Speaker 1>Beat has certainly taken the world by storm, since it's

979
01:00:41.000 --> 01:00:42.920
<v Speaker 1>at least the frun end development world.

980
01:00:43.480 --> 01:00:45.199
<v Speaker 2>Yeah, everybody else's using it.

981
01:00:45.199 --> 01:00:48.239
<v Speaker 1>It's fast. I love it anyway, So that tools out

982
01:00:48.280 --> 01:00:51.920
<v Speaker 1>if you want to take a look at that and

983
01:00:51.920 --> 01:00:52.519
<v Speaker 1>play with that.

984
01:00:52.440 --> 01:00:55.920
<v Speaker 2>By the way, and everybody else includes most react projects.

985
01:00:59.039 --> 01:01:04.159
<v Speaker 1>Uh okay, so dad jokes of the week. So recently

986
01:01:04.480 --> 01:01:06.079
<v Speaker 1>a friend of mine texted me. He said, what do

987
01:01:06.159 --> 01:01:11.840
<v Speaker 1>you doing now? And I said, probably failing my driving test, right,

988
01:01:12.159 --> 01:01:15.800
<v Speaker 1>I was texting back. I went to my doctor the

989
01:01:15.800 --> 01:01:17.880
<v Speaker 1>other day. I told him the doctor I ever ringing

990
01:01:17.880 --> 01:01:19.800
<v Speaker 1>in my ear and he says, whatever you do, don't

991
01:01:19.800 --> 01:01:20.320
<v Speaker 1>answer it.

992
01:01:22.559 --> 01:01:26.320
<v Speaker 2>That reminds me of this guy that goes to the

993
01:01:26.360 --> 01:01:29.079
<v Speaker 2>doctor and says, doctor, when I put my finger on

994
01:01:29.119 --> 01:01:31.559
<v Speaker 2>my shoulder, it hurts, and on my legg it hurts,

995
01:01:31.599 --> 01:01:33.679
<v Speaker 2>and on my stomach it it says, of course, your

996
01:01:33.719 --> 01:01:34.760
<v Speaker 2>finger is broken.

997
01:01:34.599 --> 01:01:39.119
<v Speaker 1>Right exactly. The alternative answer to that is, well, don't

998
01:01:39.199 --> 01:01:45.079
<v Speaker 1>touch him there. And then finally, so some I'm not

999
01:01:45.079 --> 01:01:47.400
<v Speaker 1>a coffee drinker, but my daughter is, so I've observed this,

1000
01:01:47.559 --> 01:01:49.320
<v Speaker 1>and they say some people stir their coffee with the

1001
01:01:49.400 --> 01:01:51.360
<v Speaker 1>right hand, others use their left hand, but most are

1002
01:01:51.360 --> 01:01:57.679
<v Speaker 1>normally just use a teaspoon. So's the dad jokes of

1003
01:01:57.760 --> 01:01:59.960
<v Speaker 1>the week, Ryan, what do you got for us?

1004
01:02:00.840 --> 01:02:01.159
<v Speaker 2>Sure?

1005
01:02:02.119 --> 01:02:05.760
<v Speaker 3>So, unfortually, I've been in the nightmare realm that is

1006
01:02:05.800 --> 01:02:09.840
<v Speaker 3>source maps for the past couple of weeks. So yeah,

1007
01:02:09.920 --> 01:02:13.280
<v Speaker 3>so yeah, So I guess one of my picks is.

1008
01:02:13.400 --> 01:02:17.360
<v Speaker 3>Evan Wallace, the creator of yes Belt, has this source

1009
01:02:17.360 --> 01:02:20.199
<v Speaker 3>map visualization tool on the web where you can upload

1010
01:02:20.239 --> 01:02:22.480
<v Speaker 3>a bundle and a source map and it kind of

1011
01:02:22.480 --> 01:02:26.159
<v Speaker 3>maps out really nicely color coded, so you can you know,

1012
01:02:26.159 --> 01:02:28.480
<v Speaker 3>figure out, you know which function goes switch source map

1013
01:02:28.840 --> 01:02:31.800
<v Speaker 3>bit whatnot. That has been an absolute life saver over

1014
01:02:31.800 --> 01:02:34.360
<v Speaker 3>the past couple of weeks as I debug some plug

1015
01:02:34.400 --> 01:02:37.360
<v Speaker 3>ins that haven't quite set up their source maps correctly,

1016
01:02:37.400 --> 01:02:41.440
<v Speaker 3>so everything gets mangled and broken and awful. So Evan

1017
01:02:41.440 --> 01:02:42.440
<v Speaker 3>Wallace's tool is.

1018
01:02:42.400 --> 01:02:45.599
<v Speaker 2>Brilliant that it's my understanding that we are kind of

1019
01:02:45.679 --> 01:02:49.960
<v Speaker 2>slowly moving in the direct Well, i'll backtrack. People don't

1020
01:02:49.960 --> 01:02:53.679
<v Speaker 2>necessarily realize that there's no standard for source maps, and

1021
01:02:53.760 --> 01:02:57.800
<v Speaker 2>they kind of happened and put my understanding. We're kind

1022
01:02:57.800 --> 01:03:00.480
<v Speaker 2>of moving in the direction of finally get think some

1023
01:03:00.519 --> 01:03:04.360
<v Speaker 2>sort of standard for official standard for source maps. Yeah.

1024
01:03:04.639 --> 01:03:06.519
<v Speaker 3>I mean there has been a spec for years. I'm

1025
01:03:06.519 --> 01:03:09.039
<v Speaker 3>not sure how official it was. I know it's becoming,

1026
01:03:09.079 --> 01:03:12.440
<v Speaker 3>I guess more official recently. I know there's been I

1027
01:03:12.480 --> 01:03:16.559
<v Speaker 3>think some TC thirty nine work on it recently, but

1028
01:03:17.360 --> 01:03:20.280
<v Speaker 3>I don't know about this stork kind of background there.

1029
01:03:21.719 --> 01:03:24.920
<v Speaker 2>I have to mention this. First of all, we probably

1030
01:03:24.960 --> 01:03:28.000
<v Speaker 2>should have an entire show just on source maps at

1031
01:03:28.000 --> 01:03:33.440
<v Speaker 2>one point or another. And I recently found something really amusing.

1032
01:03:33.559 --> 01:03:37.199
<v Speaker 2>So as I mentioned, both a talk that I gave

1033
01:03:37.280 --> 01:03:38.920
<v Speaker 2>and the one that I'm about to give as a

1034
01:03:39.000 --> 01:03:44.480
<v Speaker 2>keynote are about RPC and modern frameworks, and I've been

1035
01:03:44.559 --> 01:03:48.760
<v Speaker 2>speaking with Rich Harris. I've been effectively speaking about RPC

1036
01:03:48.920 --> 01:03:52.039
<v Speaker 2>with all the framework creators more or less, and I've

1037
01:03:52.039 --> 01:03:55.000
<v Speaker 2>been speaking with Rich Harris about it, and he raised

1038
01:03:55.039 --> 01:03:59.360
<v Speaker 2>some security concerns that he has around RPC, and one

1039
01:03:59.400 --> 01:04:02.880
<v Speaker 2>of them is that with co located code, when you've

1040
01:04:02.920 --> 01:04:06.119
<v Speaker 2>got both front end code and back end code located

1041
01:04:06.199 --> 01:04:09.679
<v Speaker 2>in the same file, and you're counting on the bundler

1042
01:04:10.079 --> 01:04:13.519
<v Speaker 2>to make that separation, so only the client side code

1043
01:04:13.599 --> 01:04:17.840
<v Speaker 2>actually gets downloaded down. And he said that that potentially

1044
01:04:17.880 --> 01:04:20.559
<v Speaker 2>creates a full sense of security because you might keep

1045
01:04:20.599 --> 01:04:23.679
<v Speaker 2>some secrets in the back end code, assuming that it's

1046
01:04:23.719 --> 01:04:27.840
<v Speaker 2>fine because it just stays on the back end. But

1047
01:04:28.000 --> 01:04:31.360
<v Speaker 2>then you get something like source maps with all the

1048
01:04:31.400 --> 01:04:35.599
<v Speaker 2>code in its source form download it to the clients.

1049
01:04:35.679 --> 01:04:38.719
<v Speaker 2>So if you've done the bad thing of embedding let's

1050
01:04:38.719 --> 01:04:42.599
<v Speaker 2>say your AWSK or whatever in your back end code

1051
01:04:42.679 --> 01:04:45.840
<v Speaker 2>because it's just on the back end, well guess what

1052
01:04:45.960 --> 01:04:47.079
<v Speaker 2>it's now in your source map?

1053
01:04:47.639 --> 01:04:49.400
<v Speaker 1>Well wouldn't it. I mean, it isn't the standard to

1054
01:04:49.480 --> 01:04:51.440
<v Speaker 1>keep that like an environment variable or something.

1055
01:04:51.480 --> 01:04:54.199
<v Speaker 2>Well, you're supposed to keep it somewhere. Yeah, you're not

1056
01:04:54.239 --> 01:04:56.360
<v Speaker 2>supposed to keep it in the source code in any event,

1057
01:04:56.480 --> 01:05:00.000
<v Speaker 2>But there's still the potential assumption that you know, maybe

1058
01:05:00.119 --> 01:05:02.960
<v Speaker 2>it's a propriety algorithm that you don't want to expose

1059
01:05:03.119 --> 01:05:04.960
<v Speaker 2>or something like that. And you're keeping it on the

1060
01:05:04.960 --> 01:05:08.480
<v Speaker 2>back end. Well, with co located code, it can easily

1061
01:05:08.519 --> 01:05:11.119
<v Speaker 2>find its way to the front end. And source maps

1062
01:05:11.119 --> 01:05:13.239
<v Speaker 2>are one reason why that might happen.

1063
01:05:14.320 --> 01:05:17.000
<v Speaker 3>Yeah, I know that came up a lot when next

1064
01:05:17.039 --> 01:05:19.360
<v Speaker 3>Years started doing the server components thing, but I haven't

1065
01:05:19.360 --> 01:05:21.440
<v Speaker 3>even thought about that or heard anything about it since.

1066
01:05:22.519 --> 01:05:26.000
<v Speaker 2>Ideally, what you would want to do in a scenario

1067
01:05:26.039 --> 01:05:30.119
<v Speaker 2>like that is when generating the source maps file. I

1068
01:05:30.159 --> 01:05:32.800
<v Speaker 2>think he would want to do something like the type

1069
01:05:32.800 --> 01:05:37.119
<v Speaker 2>stripping that you now have its alright, with spaces that

1070
01:05:37.320 --> 01:05:40.960
<v Speaker 2>entire backend code something like that. But you know, I

1071
01:05:41.000 --> 01:05:43.719
<v Speaker 2>don't think anybody's doing that at this point in time.

1072
01:05:45.559 --> 01:05:49.719
<v Speaker 1>Alrighty, So with that we will end this episode of

1073
01:05:49.960 --> 01:05:50.880
<v Speaker 1>Joba script Jabber.

1074
01:05:50.960 --> 01:05:53.840
<v Speaker 2>When a minute, Oh oh, don't forget you need to

1075
01:05:53.880 --> 01:05:56.239
<v Speaker 2>ask Ryan about how people can contact him.

1076
01:05:56.320 --> 01:05:59.800
<v Speaker 1>Oh yes, and give him money? That's right, So please

1077
01:06:00.599 --> 01:06:02.639
<v Speaker 1>how can people do those things?

1078
01:06:03.199 --> 01:06:03.679
<v Speaker 2>Yeah?

1079
01:06:04.000 --> 01:06:08.800
<v Speaker 3>So on Twitter x I am at underscore r S

1080
01:06:08.920 --> 01:06:12.360
<v Speaker 3>Christian and then at blue Sky I think I'm rs

1081
01:06:12.440 --> 01:06:15.960
<v Speaker 3>Christian dot dev and on GitHub i am r S Christian.

1082
01:06:16.480 --> 01:06:24.280
<v Speaker 3>So pre consistent chat me scored for pre act we

1083
01:06:24.360 --> 01:06:26.599
<v Speaker 3>have a slack. I think that's it's linked on our

1084
01:06:26.599 --> 01:06:29.960
<v Speaker 3>website and I think most of our read mes. I

1085
01:06:29.960 --> 01:06:32.599
<v Speaker 3>think it's just like chat dot slack dot app or

1086
01:06:32.760 --> 01:06:36.559
<v Speaker 3>preacts slack app. It's something we have it advertised everywhere.

1087
01:06:36.559 --> 01:06:40.320
<v Speaker 3>It should be easy to find if anyone's interested. Yeah,

1088
01:06:40.360 --> 01:06:42.400
<v Speaker 3>we have a community there, talked about all sorts of

1089
01:06:42.440 --> 01:06:46.599
<v Speaker 3>things help people with various preact and non preact issues

1090
01:06:46.639 --> 01:06:49.360
<v Speaker 3>that they have on their tooling whatnot. So if you

1091
01:06:49.360 --> 01:06:52.280
<v Speaker 3>have any interests, yeah, join us.

1092
01:06:52.159 --> 01:06:56.440
<v Speaker 1>There and preact is preactjs dot com.

1093
01:06:56.920 --> 01:06:57.599
<v Speaker 3>Yep, yep.

1094
01:06:58.400 --> 01:06:59.920
<v Speaker 1>So okay, did I get everything Dan?

1095
01:07:01.159 --> 01:07:03.519
<v Speaker 2>Thank you finally did Okay, thanks.

1096
01:07:03.280 --> 01:07:06.599
<v Speaker 1>For the help. Alrighty, so that we'll end this episode.

1097
01:07:06.760 --> 01:07:09.800
<v Speaker 1>Thank you for listening, and thank you Ran for coming on,

1098
01:07:10.039 --> 01:07:11.440
<v Speaker 1>and we will talk to you next time.

1099
01:07:12.280 --> 01:07:13.079
<v Speaker 3>Thanks for having me
