Another new JS bundler? This one’s interesting I promise

  Рет қаралды 43,700

Theo - t3․gg

Theo - t3․gg

Ай бұрын

Kuto is a very interesting approach to Javascript bundlers. Specifically, it does bundling backwards, in reverse, however you want to call it. Very different from Bun, Vite, Esbuild, Turbopack, RSPack, etc
SOURCES:
samthor.au/2024/kuto/
/ 1771551695664775364
Check out my Twitch, Twitter, Discord more at t3.gg
S/O Ph4se0n3 for the awesome edit 🙏

Пікірлер: 107
@t3dotgg
@t3dotgg Ай бұрын
This is definitely another counter reset
@kippeneneieren2039
@kippeneneieren2039 Ай бұрын
"If your thing is small, it's already performing" I needed that.
@daleryanaldover6545
@daleryanaldover6545 Ай бұрын
😂😂😂
@martinlesko1521
@martinlesko1521 Ай бұрын
Babe wake up, another JavaScript "bundler" has just shipped.
@SebastianMares
@SebastianMares Ай бұрын
But _this_ one is exciting and is doing things fundamentally different, definitely not like the other bundlers that are exciting and doing things fundamentally different
@Trizzi2931
@Trizzi2931 Ай бұрын
@@SebastianMaresisn’t this what they all say….
@dexterman6361
@dexterman6361 Ай бұрын
You mean a blunder :D ?? (joke joke pls don't end me)
@pedromenezes4013
@pedromenezes4013 Ай бұрын
Babe never got any sleep
@Hexalyse
@Hexalyse Ай бұрын
It's funny to see that Theo didn't know the "disable cache" and throttling options were only active while the dev tools were open. I thought it was obvious, but it's always interesting seeing ppl with obviously more experience than me ignore things I thought was obvious. Which shows how much things we take for granted/obvious can be a big source of mystery for others. Even among devs.
@Frexuz
@Frexuz Ай бұрын
Ye, mind blown. Especially when he is so negative when people don't do things his way "Eh omg, people still use X library?! ew". And then he doesn't know these basic shit :D
@pe....
@pe.... Ай бұрын
Honestly, Theo is more an influencer than a good programmer, so that's common and alright.
@ChadElliott_THEtheChad
@ChadElliott_THEtheChad Ай бұрын
I don't know that this was always the case. Some of us have been working in the field for so long that we've seen several iterations of tooling changes and just "accept" things as being true without being aware that they were patched.
@LunarLambda
@LunarLambda Ай бұрын
wait. This is how JDSL works.
@elirane85
@elirane85 Ай бұрын
Tom is a genius
@oscarcisneros1368
@oscarcisneros1368 Ай бұрын
It supports comments now!!?? 😱
@samthorau
@samthorau Ай бұрын
If anyone from Twitch wants help with the 3pm slouch, HMU, I'm available for consulting 🤣 (And yes, the \_1 vs 1\_ thing was a typo.) Thanks for the video and your comments!
@SeanCassiere
@SeanCassiere Ай бұрын
Across the TanStack projects we've pretty much moved all the packages within them to have the bundling portion of it handled by Vite (rollup). It's actually pretty neat, with a shared TanStack/config package that has the shared configuration. Router has been using the shared package since pretty much v1.
@franklou8086
@franklou8086 Ай бұрын
In our local dialect, Kuto means "Lice" LOL
@MrChubib0
@MrChubib0 Ай бұрын
pinoy mentioned?
@ProtectedClassTest
@ProtectedClassTest Ай бұрын
Peenoise
@sarjannarwan6896
@sarjannarwan6896 Ай бұрын
I guess the cross site tracking could be improved by having the browser cache the most common libs? Super interesting side channel attack though.
@InterFelix
@InterFelix Ай бұрын
"Side channel attack on your privacy" is a great way of describing a lot of what the advertisement industry has been doing for the last couple of years
@_fudgepop01
@_fudgepop01 Ай бұрын
Sounds like the goal is having the client itself act as a sort of git repository - actually sounds like a really cool idea! I have a feeling that at some point, such as with major releases, it would make sense to start anew and ship an entirely new “baseline” for which to build of of
@MiguelMartinez-ui8nl
@MiguelMartinez-ui8nl Ай бұрын
Loved the "am I getting corrected live?" Hahhaha😂
@avtargill
@avtargill Ай бұрын
Interesting. Very interesting. Interesting.
@krellin
@krellin Ай бұрын
I remember i did a hobby project where i would pretty much store most code and assets in local storage and very minimal js would figure out how to extract and reuse or refresh anything that is missing. Ages ago when local storage was an innovation... and i'm not even a frontend dev i was just learning shit. It worked pretty well, everything felt like its static html shipped from some file server.
@typescript_evangelist
@typescript_evangelist Ай бұрын
That would have been really fun to build.
@krellin
@krellin Ай бұрын
@@typescript_evangelist i had this fancy algo that chunked source code and effectively worked like git, if client loaded from cache and detected that server is few versions aheat it would only get the diff... but back then everything was super fast, pages were like 2mb at best. Local storage ws limited to 10mb which was another limitation if you had images... i had to encode them with base64 which made them expand etc... it was indeed very fun.
@typescript_evangelist
@typescript_evangelist Ай бұрын
@@krellin a true programmer. Is the source code available. I would like to read it. I live reading other people's source code to gain knowledge
@krellin
@krellin Ай бұрын
@@typescript_evangelist unfortunately no, i was foolish enough to use it in a close source project...
@typescript_evangelist
@typescript_evangelist Ай бұрын
@@krellin oh, there's no problem about that. It's all good
@geooot
@geooot Ай бұрын
bro didn't say anything other than "very interesting" 😂
@DaniDipp
@DaniDipp Ай бұрын
Very interesting
@latch909
@latch909 Ай бұрын
yay I was at the talk in Sydney was a fun night!
@victorbjorklund
@victorbjorklund Ай бұрын
Damn. Cant believe we havent thought about doing this before.
@mr7clay
@mr7clay Ай бұрын
I feel like we're zig-zagging towards (1) a service worker that manages chunks as strings and can load/discard/execute them, plus (2) an API that can deliver on-demand groups of chunks to the service worker. (Surely dozens of apps have implemented flavors of this over the years) We don't really want browsers to have to keep re-compiling functions that were only used 3 deployments ago, nor do we want these old bundles still in use causing more vital resources to be bumped out of the cache (seems a lessor concern).
@DrClocktopus1
@DrClocktopus1 Ай бұрын
I work on a giant complicated codebase with way too much repetition that is impossible to advocate for time to simply and improve core performance. This feels like it may actually be helpful to me! I wonder if it can cache across apps on the same site?
@jwickerszh
@jwickerszh Ай бұрын
Weird. But I get the point. Used to have this issue before where the bundle would be big enough to kill first load by quite a bit, but an alternative is Qwik which we moved to and basically does the Kuto thing by default.
@mr7clay
@mr7clay Ай бұрын
Your bytes-to-download are going down, but your memory & JS execution impact on the browser is going up (presumably it has to still recompile the unused functions on every page load). This could be a bad trade-off depending on whether local RAM/compute or network is the bigger bottleneck.
@osoverlord
@osoverlord Ай бұрын
Very interesting x1000 :)
@ABuffSeagull
@ABuffSeagull Ай бұрын
This kind of reminds me of Snowpack. HTTP2 (and now 3) allows for better performance for many files, so just make every dependency its own bundle. They rarely change, so the only cache eviction is your application code. Although this is more granular I guess
@pqnet84
@pqnet84 Ай бұрын
I'm confused. Why are we still bundling code? Shouldn't stuff such as http2 solve the issue of having to download a whole bunch of tiny files?
@keithjohnson6510
@keithjohnson6510 Ай бұрын
Because bundling can still help with performance, eg. compression & tree shaking. Not sure why HTTP2 does not use compression, from what I can gather there was a proposal, but it was dropped, body compression is still determined by the header, and small files don't compress very well. :( HTTP2 certainly helps with speed, and avoids the max 6 connections per Domain, but bundling just gives you that bit more.
@JacobGextrem
@JacobGextrem Ай бұрын
HTTP/2+ does not solve it. Small files still have an overhead, both IPC (so Blink/V8) and compression-wise (because compression efficiency is much lower). Also, HTTP/2 has concurrent stream limits (100-250 usually).
@Fanaro
@Fanaro Ай бұрын
13:40 Caching pretty much makes everything better.
@keithjohnson6510
@keithjohnson6510 Ай бұрын
At first when it said you have to ship everything again, that didn't make sense until right at the end when it pointed out it's when using a single bundle. I use multiple bundles split on route's & dynamic imports, and doing an update is usually very small, unless say I updated a big lib like React etc. So for large projects with lot's of routes & lots of dynamic imports this is maybe not for you. But were this might be useful is for Web Games, where pretty much everything needs loading at startup.
@ben_sch
@ben_sch Ай бұрын
15:45 could have used this clip as teaser at the beginning of the video. Succintly summarizes what Kuto does
@JacobDrebin
@JacobDrebin Ай бұрын
The reference to Schrodinger's cat is brilliant! (Schrodinger's function)
@marlonjanssenarao5525
@marlonjanssenarao5525 Ай бұрын
FYI, Filipino: kuto [kú. tu.] : lice (n.); louse (n.);
@formyeve
@formyeve Ай бұрын
I'm a chess player, and so initially I read "blunder" instead of bundler haha. It pretty much means a big mistake, so i was really intrigued how a mistake makes your site faster
@g4mingjon4s
@g4mingjon4s Ай бұрын
Thanks for reminding me to turn caching back on haha
@AndrewTaylorPhD
@AndrewTaylorPhD Ай бұрын
This sounds interesting for my work but I notice that if I drop it in as a replacement for our current process, we'll have a markedly different set of artefacts in dev than production - because production doesn't build as often as dev, it'll have different cache corpuses. That shouldn't matter in theory, but it could be super hard to debug if anything did go wrong
@jozsefsebestyen8228
@jozsefsebestyen8228 Ай бұрын
Dynamic import and bundler's checksum-based naming fixes most of these issues, arent they?
@JordanHall_dev
@JordanHall_dev Ай бұрын
Kuto reminds me of a different way of module federation builds
@spikero
@spikero Ай бұрын
prepare yourself for cache invalidation horror stories
@AGI-Bingo
@AGI-Bingo Ай бұрын
God webdev still seem so archaic.. i see devs from the future laughing at us.
@CottidaeSEA
@CottidaeSEA Ай бұрын
Seems interesting, not sure I have a project large enough for this to make sense though. At least not a personal project.
@CoDEmanX47
@CoDEmanX47 Ай бұрын
Had the same idea of only shipping a delta to clients years ago for an icon library. It's a small project with a few volunteers but getting several thousand vector paths to the client adds up to a few megabytes uncompressed. Persisting the data in indexed DB and generating bundles per release with only the changes makes sense if you want to transfer less data for frequent visitors.
@theropoy9371
@theropoy9371 Ай бұрын
Life is good after switching to GoTH stack😌
@dexterman6361
@dexterman6361 Ай бұрын
Oofff, I read that as "A * blunder * that makes your site faster" And I went "huh not often that a mistake gives a performance boost, ... everything JS is a blund .... OOH a BUNDLER" .. Haha. My bad folks.
@Z4KIUS
@Z4KIUS Ай бұрын
first load time is really important for web*sites* but you wouldn't use a complex bundler, framework and such for them, *right*? when it comes to web*apps* that you visit frequently and run extended sessions on the first load may take some time, just make it run fast (and preferably don't duplicate too much code between tabs *please*)
@tinnick
@tinnick Ай бұрын
I think for this to be viable when using with sentry io, it MUST have a source map for the final output.
@kabukitheater9046
@kabukitheater9046 Ай бұрын
kuto means lice in filipino lol
@mind.journey
@mind.journey Ай бұрын
In Indonesian it's "kutu" :O
@Deltax64
@Deltax64 Ай бұрын
As a non-JS developer, this seems cool, but fundamentally backwards. Imagine if JS files were shipped as separate http endpoints, then it'd be trivial for the browser to cache these properly between updates. Of course extra http requests are bad so there'd have to be a strategy to mitigate that, but that sounds much more sane than what's done here, no?
@qm3ster
@qm3ster Ай бұрын
The problem is latency. You only ask the server for the next file once enough of the dependent file is downloaded and parsed to see the dependency. While the dependency is statically known at build time.
@Deltax64
@Deltax64 Ай бұрын
@@qm3ster You could reduce the latency to 1 round trip if the server sent the client some keyed map of what dependencies are required, then the browser could use that to decide what to fetch.
@MrManafon
@MrManafon Ай бұрын
@t3dotgg when will you make a Hookdeck video?
@Andyyyk47
@Andyyyk47 Ай бұрын
Take a shot every time he says "interesting"
@regexPattern
@regexPattern Ай бұрын
another one?
@Tignite91
@Tignite91 Ай бұрын
Wouldn't it be nice if browsers would handle caching with diffs like Git?
@yapet
@yapet Ай бұрын
I think I have a better solution for incremental updates utilizing import maps 🤫
@Simon-ir6mq
@Simon-ir6mq Ай бұрын
whats so bad about downloading a few MB? Doesn't seem worth the tech debt but maybe I'm missing something.
@guanghengxian9139
@guanghengxian9139 Ай бұрын
wow
@Nodsaibot
@Nodsaibot Ай бұрын
F CACHING, yes ive said it
@don_heidi
@don_heidi Ай бұрын
My first impression is, that it may improve user experience on apps that have grown and have a mostly inelastic user base but building a new app will not benefit from this.
@gagongtarantado
@gagongtarantado Ай бұрын
kuto is lice in my language xd
@dracula5752
@dracula5752 Ай бұрын
cod in shambles after that call out
@spageen
@spageen Ай бұрын
not again!
@unzoid
@unzoid Ай бұрын
reset the timer
@modernkennnern
@modernkennnern Ай бұрын
Unless your code is humongous - like, way bigger than a mb - I don't see the selling point.
@Lucas-gt8en
@Lucas-gt8en Ай бұрын
Cool concept but way too much added complexity for little benefit within the context I work in
@kahnfatman
@kahnfatman Ай бұрын
"Forever" in a browser is a JOKE
@fcnealvillangca7943
@fcnealvillangca7943 Ай бұрын
not again
@bokunochannel84207
@bokunochannel84207 Ай бұрын
You e plained how great it is and how it could be useful. But you forgot to criticize it and talk about its possible downside. You also forgot to talk about any existing solution in the wild.
@dj_chateau
@dj_chateau Ай бұрын
Cache shouldn't be a crutch for your site. This is a big reason there's so much bloat. Developers think a website should be downloading a billion different libraries with no regard for their users. Blaming the user for not wanting to fill their drives with your garbage code is just mental. Cache is useful, but blaming performance of first load on users is ridiculous.
@HUEHUEUHEPony
@HUEHUEUHEPony Ай бұрын
welcome to the new era of bloating the user hard driver where every website demands 10gb of space
@privateanon7623
@privateanon7623 Ай бұрын
That jab on privacy is uncalled for, and not true at all. I get that you're comfortable handwaving it because you're a public figure of sorts, but not all of us are Nevertheless, thanks for the video
@seannewell397
@seannewell397 Ай бұрын
just realized ive been running without caching....
@seannewell397
@seannewell397 Ай бұрын
o thank god it is only when open hyuehue
@fallenpentagon1579
@fallenpentagon1579 Ай бұрын
first
@sahilaggarwal2004
@sahilaggarwal2004 Ай бұрын
I like your every day videos and consistency. But here's a suggestion, please try to keep your videos not longer than 15 minutes. I don't know if its the case with everyone or just me, but my brain intercepts videos greater than 15 minutes as "long videos" and I tend to add them to watch later sometimes instead of watching them right away
@GuedelhaGaming
@GuedelhaGaming Ай бұрын
And then remove them a week later cause I never watched them anyways
@omega_sine
@omega_sine Ай бұрын
I’m the opposite, I prefer longer videos and will be less likely to watch if the video is too short lol.
@sahilaggarwal2004
@sahilaggarwal2004 Ай бұрын
@@GuedelhaGaming no, it just remains there for months until I get in the mood to finish my watch later😂
@yndihalda
@yndihalda Ай бұрын
​​@@omega_sine Me too.
@gagongtarantado
@gagongtarantado Ай бұрын
do you watch shorts a lot?
@Simon-xi8tb
@Simon-xi8tb Ай бұрын
please stop..just stop..
@stevenstark-com
@stevenstark-com Ай бұрын
you can solve this at the code organization level. The dev should be in control of code splitting, not magic solutions.
I Can’t Believe They Threw This Away
18:52
Linus Tech Tips
Рет қаралды 1,4 МЛН
Speed Up Your React Apps With Code Splitting
16:50
Web Dev Simplified
Рет қаралды 365 М.
1🥺🎉 #thankyou
00:29
はじめしゃちょー(hajime)
Рет қаралды 18 МЛН
маленький брат прыгает в бассейн
00:15
GL Show Russian
Рет қаралды 4,6 МЛН
Маленькая и средняя фанта
00:56
Multi DO Smile Russian
Рет қаралды 4,7 МЛН
когда достали одноклассники!
00:49
БРУНО
Рет қаралды 879 М.
Meet The New AI Robot Billionaire
8:35
Forbes
Рет қаралды 210 М.
Import vs Require: The Biggest JavaScript Divide
4:03
Matt Pocock
Рет қаралды 48 М.
svelte now has magic
7:38
Nev the Dev
Рет қаралды 2,4 М.
Build this React To-Do List app in 20 minutes! ☝
22:35
Bro Code
Рет қаралды 26 М.
Interview with Senior JS Developer 2024 [NEW]
6:45
Programmers are also human
Рет қаралды 394 М.
React Query - Complete Tutorial
18:57
Cosden Solutions
Рет қаралды 93 М.
This Release Makes Me Want To Leave React...
36:59
Theo - t3․gg
Рет қаралды 129 М.
Why doesn't Facebook use git?
20:07
Theo - t3․gg
Рет қаралды 176 М.
Cody: the AI assistant that actually knows your codebase
10:07
Aaron Francis
Рет қаралды 17 М.
Обманет ли МЕНЯ компьютерный мастер?
20:48
Харчевников
Рет қаралды 185 М.
Kalem ile Apple Pen Nasıl Yapılır?😱
0:20
Safak Novruz
Рет қаралды 605 М.