Тёмный

The Story of Concurrent React 

uidotdev
Подписаться 92 тыс.
Просмотров 159 тыс.
50% 1

2,161 days. That's how long the React team has been working on this release. This video tells that story.

Опубликовано:

 

1 май 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 244   
@tonytino139
@tonytino139 2 года назад
Excellent work as always. Especially appreciated the love for Harambe. He's eternalized in the test suite of a code base I worked on for several years and will always hold a special place in my heart. 🖤 🦍
@uidotdev
@uidotdev 2 года назад
RIP 🖤 (Thanks for watching!)
@rohitteja
@rohitteja 2 года назад
This is by far the simplest and best video I've seen on React 18. I'm now a fan!
@uidotdev
@uidotdev 2 года назад
Thank you! Glad you enjoyed it!
@thecastiel69
@thecastiel69 2 года назад
Harambe was like father to me
@uidotdev
@uidotdev 2 года назад
🖤🖤
@RasmusSchultz
@RasmusSchultz 2 года назад
Five years invested in workarounds (mind you, not solutions) to problems inherent to the React model. The concurrency applies not to updating the DOM (which you can't do concurrently) but to all the extra work React has to do *before* updating the DOM. All this scheduling work accomplishes (if used correctly) is optimize *perceived* performance - but the framework is actually net slower than it was before doing this extra work. Meanwhile, other frameworks such as Solid, Svelte, Imba and others have moved on to a model that updates the DOM directly, instead of doing all this unnecessary work on an in-memory duplicate of the entire DOM, which has to be reconciled with the real DOM before doing actual DOM updates. React keeps adding layers of complexity to get around a fundamental design issue - and developers seem to have the perception that all this extra complexity is inherently necessary, and even ironically take pride in knowing how to apply all the new performance features to achieve acceptable performance. Meanwhile, other frameworks are moving on to much simpler models, where these performance features aren't even necessary in the first place. Regardless of how pointless this effort is, there's a market for it, there is job security, and so on - apparently that's the only thing governing the success of any framework in this industry today. 😕
@uidotdev
@uidotdev 2 года назад
Thanks for watching!
@oussamabenmansour5375
@oussamabenmansour5375 2 года назад
what other frameworks would you suggest ? im still new to react and i would rather not invest too much into it if another framework is objectively better
@TheNewton
@TheNewton 2 года назад
Perception of performance is often more important than factual performance when it comes to UI, but doubly so in the boardroom.
@dave4148
@dave4148 2 года назад
"optimize perceived performance - but the framework is actually net slower than it was before doing this extra work" -- you've just described horizontal scalability
@johnjackson6262
@johnjackson6262 2 года назад
Are you saying it's possible to have component based architecture, rerender on state and update the DOM directly in a single page application without reload and without a reconciler? If you could recreate react without the diffing on DOM component and no major drawback then people should start writing the library.
@sle6423
@sle6423 2 года назад
Continuously stunned at the level of research and quality put into these videos. Just absolutely incredible
@uidotdev
@uidotdev 2 года назад
This comment and your other one means a lot. Thank you!
@Kalazt
@Kalazt 2 года назад
Another video, another banger. Thank you for producing such high quality videos for us devs. Always pleasure to learn through these
@uidotdev
@uidotdev 2 года назад
Thanks for commenting! ❤️
@ritabest17
@ritabest17 2 года назад
As always, excellent presentation! Thanks, Tylor, for taking the time - you always take these high-level concepts and break them into manageable, bite-sized, engaging content. I always learn something new and interesting.
@uidotdev
@uidotdev 2 года назад
That means so much. Thank you!
@LaxMariappan
@LaxMariappan 2 года назад
Becoming a fan of your work Tyler. Glad to see your effort delivers quality output and also well received by devs!🔥
@uidotdev
@uidotdev 2 года назад
Thank you Lax!
@shachi5982
@shachi5982 Год назад
This made so many things clear! Thank You for your work. ✨
@alexbrown7624
@alexbrown7624 2 года назад
It was smart that they went with the approach of concurrent "features", instead of an all or nothing concurrent "mode"
@Mixesha001
@Mixesha001 2 года назад
Loving your content, keep it up!!
@uidotdev
@uidotdev 2 года назад
Thank you!
@walidn2295
@walidn2295 2 года назад
really great context about async rendering in React ! Really cool to have alternative apis for delaying user input (debouncing/throttling) user input like useDeferredValue
@uidotdev
@uidotdev 2 года назад
Glad you enjoyed it!
@derockx
@derockx Год назад
First time seeing this channel, and I gotta say, the animation and quality is amazing! Keep up the good work!
@saurabh75prakash
@saurabh75prakash Год назад
Glad that I discovered your channel. Thanks 🙏
@muhammadahmedjaved7691
@muhammadahmedjaved7691 Год назад
your videos are very very very informative, thank you very much for explaining all these things brilliantly
@rtorcato
@rtorcato 2 года назад
The react team left us in Suspense!
@uidotdev
@uidotdev 2 года назад
🥁
@WajuAbolarin
@WajuAbolarin 2 года назад
Your content literally made me pause to check if I had subscribed, this is some top shelf content.
@uidotdev
@uidotdev 2 года назад
❤️❤️❤️
@kohelet910
@kohelet910 2 года назад
Coming from today's newsletter 😎 thank for this clear and really interesting video !
@uidotdev
@uidotdev 2 года назад
Thanks for watching!
@AbdelhameedG
@AbdelhameedG 2 года назад
Thank you, Tyler, quality content as usual.
@uidotdev
@uidotdev 2 года назад
Thank you!
@espressothoughts
@espressothoughts 2 года назад
Just found the channel. Had to subscribe. Great work!
@uidotdev
@uidotdev 2 года назад
Welcome!
@pope7
@pope7 Год назад
Great videos, learning a lot.
@rand0mtv660
@rand0mtv660 2 года назад
What I found fascinating about this is how much preparation work and things in advance they had to do in order to get to here. It's not something that was decided and done in 6-12months. It took years, it's crazy.
@uidotdev
@uidotdev 2 года назад
Totally. Lots of thought and patience.
@renatosardinhalopes6073
@renatosardinhalopes6073 2 года назад
I think it's more like "We can't do this thing right now, but we can do this other thing that would set us in the path for the thing we wanted, and it makes sense to do it because it benefits us" Less of preparation and more of making the right things that could lead to the other big thing
@rand0mtv660
@rand0mtv660 2 года назад
@@renatosardinhalopes6073 yeah probably. Doesn't make it less impressive in my opinion.
@SpaceGravy
@SpaceGravy Год назад
First time discovering this creator, liked, subscribed and commented. Nice job.
@webunderconstruction
@webunderconstruction 2 года назад
Great video and fantastic explanation, thanks heaps!
@uidotdev
@uidotdev 2 года назад
You're welcome. Thank you for watching!
@chrisnguyen5800
@chrisnguyen5800 Год назад
Have to subscribe immediately after watching your video. Appreciated
@manuelalfonzoml
@manuelalfonzoml 2 года назад
Its scary how small this channel is. Keep the awsome work man ❤️🔥
@uidotdev
@uidotdev 2 года назад
We'll get there. Thanks for watching!
@zakhariihusar6975
@zakhariihusar6975 Год назад
This video made me subscribe. Wonder how i haven't stumbled on the channel before
@tomross4599
@tomross4599 2 года назад
This was so helpful, thank you! I still have one niggle: Your Suspense example conflated empty state and loading state.
@bahaarizk2834
@bahaarizk2834 2 года назад
Wow man! Time to binge watch your content
@uidotdev
@uidotdev 2 года назад
Welcome!
@fadeldrissitoubbali944
@fadeldrissitoubbali944 2 года назад
one of the best channels. keep going.
@uidotdev
@uidotdev 2 года назад
That means a lot. Thank you!
@arpitdubey5938
@arpitdubey5938 2 года назад
Loved the video Tyler, keep it up.
@uidotdev
@uidotdev 2 года назад
Thank you!
@johannespein4248
@johannespein4248 2 года назад
Thanks for the awesome content
@jitx2797
@jitx2797 2 года назад
Actually I am new to React. I didn't get much of the things but liked your presentation style and teaching style.
@uidotdev
@uidotdev 2 года назад
Thank you!
@riddixdan5572
@riddixdan5572 2 года назад
awesome high quality content. I'm surprised why you don't have millions of subscribers yet :D
@uidotdev
@uidotdev 2 года назад
Thank you!
@spicybaguette7706
@spicybaguette7706 2 года назад
RIP Harambe
@uidotdev
@uidotdev 2 года назад
🍻
@juliansoto2651
@juliansoto2651 2 года назад
2 thousand freaking days! For something that we probably don't need, for a library that will probably be replaced in the next 3 years.
@uidotdev
@uidotdev 2 года назад
Thanks for watching though!
@DanKaschel
@DanKaschel 2 года назад
Oh definitely. Most popular framework will totally be replaced in 3 years. Sure.
@juliansoto2651
@juliansoto2651 2 года назад
@@DanKaschel it doesn't matter if it's the most popular, many libraries have been replaced before, React is no different and WILL certainly be replaced. I wouldn't have said this 1 or 2 years ago, but now most people are aware of React's flaws that we try really hard to avoid React, whether it's using a patch meta-framework or another library. I personally hope it's solidjs, maybe it's svelte idk (both of these have greater levels of satisfaction than react btw)
@mohtashimali581
@mohtashimali581 2 года назад
lovinng the content
@uidotdev
@uidotdev 2 года назад
Thank you!
@rasmusmerzin
@rasmusmerzin 2 года назад
Terms low level and high level are so confusing in inherently high level ecosystems.
@00ch00
@00ch00 2 года назад
I wish Harambe was still around to see React 18 😭
@uidotdev
@uidotdev 2 года назад
I like to think that he's using React 18 in heaven right now.
@ikbo
@ikbo Год назад
Beautiful tribute to Harambe. RIP
@vitinhuffc
@vitinhuffc 2 года назад
Great presentation
@uidotdev
@uidotdev 2 года назад
Thank you!
@AndersonSilvaMMA
@AndersonSilvaMMA 2 года назад
Really great content!
@uidotdev
@uidotdev 2 года назад
Appreciate it!
@patrickeriksson1887
@patrickeriksson1887 2 года назад
Great content; subscribed
@uidotdev
@uidotdev 2 года назад
Welcome!
@akashpal9691
@akashpal9691 2 года назад
Over the years, it's easy to loose track of context. This video sums up.
@uidotdev
@uidotdev 2 года назад
So glad it was helpful!
@KennethBoneth
@KennethBoneth 2 года назад
The quality of these videos is unbelievable
@uidotdev
@uidotdev 2 года назад
Thank you!
@vincenguyendev
@vincenguyendev 2 года назад
It's a great explanation I've ever seen , I've been struggling to understand Suspense and useTransition hook ;)
@uidotdev
@uidotdev 2 года назад
Glad it was helpful!
@ozgursulum4116
@ozgursulum4116 2 года назад
Great content ty.
@uidotdev
@uidotdev 2 года назад
Thank you!
@Ahmed2lBadry
@Ahmed2lBadry 2 года назад
Great work 👏
@uidotdev
@uidotdev 2 года назад
Thank you!
@gg-gn3re
@gg-gn3re 2 года назад
I've done this on our corporate's multi user client management/invoicing/payroll system for like 10 years now. I guess it's about time, maybe one day these things will be usable instead of me having to make everything myself. RIP harambe
@uidotdev
@uidotdev 2 года назад
RIP 🖤 (Thanks for watching!)
@FlorianGamp
@FlorianGamp 2 года назад
Awesome video!
@uidotdev
@uidotdev 2 года назад
Thank you!
@zummotv1013
@zummotv1013 2 года назад
Finally more people are viewing this amazing content .
@uidotdev
@uidotdev 2 года назад
❤️
@gofudgeyourselves9024
@gofudgeyourselves9024 2 года назад
I love these kind of videos . Do it for more technologies
@uidotdev
@uidotdev 2 года назад
Planning on it. Thank you for watching!
@oivinf
@oivinf 2 года назад
Great video. What font is that on your headlines? Very modern and clean, yet interesting font
@XRoydX
@XRoydX 2 года назад
Wow impressive video. You have my sub :)
@uidotdev
@uidotdev 2 года назад
Welcome!
@zemaumm
@zemaumm 2 года назад
Hey! Nice video. What tool do you use to animate these videos ? :)
@jagsexe
@jagsexe 2 года назад
Great explanation :)
@uidotdev
@uidotdev 2 года назад
Thank you!
@soccermatrix
@soccermatrix 2 года назад
One day React is going to be awesome...
@bephrem
@bephrem 2 года назад
Great video
@uidotdev
@uidotdev 2 года назад
Thank you!
@ToreyLittlefield
@ToreyLittlefield 2 года назад
Beautiful video i love it 💕
@uidotdev
@uidotdev 2 года назад
Thank you!
@mukulr5171
@mukulr5171 2 года назад
What a great video 🤍🤍
@adityatripathi1904
@adityatripathi1904 2 года назад
One more reason why they did not go with the service workers is the expensive context switch to perform the task. In case of state calculations it becomes even more evident and obvious to not use workers.
@omedjamal1056
@omedjamal1056 2 года назад
Great video, thanks. what do you think about the future of Svelte (Sveltekit)
@uidotdev
@uidotdev 2 года назад
It's bright! We'll have a video on it soon.
@yogikatba
@yogikatba 2 года назад
These story videos are amazing ✨. Please cover vue/nuxt as well.
@uidotdev
@uidotdev 2 года назад
Planning on it!
@drh237
@drh237 2 года назад
It's still a bit unclear whether upgrading to React 18 is a good idea yet; especially if you are using Next (e.g. Suspense is discouraged for data fetching). Would be great to get your ideas on this Tyler? Thanks
@uidotdev
@uidotdev 2 года назад
If you're using Next, I wouldn't worry about it.
@MobiusCoin
@MobiusCoin 2 года назад
useId seems useful, I've been passing down uuid to generate unique ids for form input for a while now.
@uidotdev
@uidotdev 2 года назад
Yeah. Esp nice since the id is stable across the server and client too.
@modestas2890
@modestas2890 2 года назад
brilliant
@uidotdev
@uidotdev 2 года назад
Thank you!
@ericlee6029
@ericlee6029 2 года назад
Great video! What do you use to edit?
@uidotdev
@uidotdev 2 года назад
Thanks! Screenflow.
@DK-ox7ze
@DK-ox7ze 2 года назад
In the input and list example you gave, how's using the new concurrent mode different from debouncing the rendering of the list on input change, as far as visual rendering performance is concerned?
@uidotdev
@uidotdev 2 года назад
Great question. With a debounced input, you would have to wait for the debounce to timeout before the list work even begins. With useDeferredValue, the input state updates immediately AND the list work begins as soon as the input state changes. With a 500ms debounce timeout, useDeferredValue improves the speed by 500ms minimum.
@DK-ox7ze
@DK-ox7ze 2 года назад
@@uidotdev In that case, how is React able to stop rendering of the current list in between when a new state change happens in input? If all this is happening on the main thread, then it's not possible to stop rendering of the list in middle, as js code runs synchronously in the browser, and the input change can only be processed in the next tick of the event loop.
@uidotdev
@uidotdev 2 года назад
That's what the Fiber reconciler in React 16 provided - a way to pause low-priority work when something with a higher priority comes in. Part of it is also the `requestIdleCallback` feature in modern browsers. This video goes into much greater depth about how Fiber works, and how it paved the way for concurrent rendering. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ZCuYPiUIONs.html
@basil127
@basil127 Год назад
I got more knowledge about react in one video than my first year of using react..
@flyte9844
@flyte9844 2 года назад
great content 👏👏 keep it up !!
@uidotdev
@uidotdev 2 года назад
Thank you! ❤️
@Mitsunee_
@Mitsunee_ 2 года назад
I'm still really confused on Suspense. How do I tell react that a component in Suspense's children is not ready yet?
@ParthaSarathylink
@ParthaSarathylink 2 года назад
When is the server side components coming . ..?
@vmaxxk
@vmaxxk 2 года назад
All this investment in order to settle on a built-in lodash debounce methodology. Seems like hype and buzz wordy solutions to a problem seasoned developers already know how to solve.
@beto5720
@beto5720 2 года назад
Man I wish my boy Harambe was here to witness this updatw
@uidotdev
@uidotdev 2 года назад
🖤
@userrrfriendly1908
@userrrfriendly1908 2 года назад
Great video, didn't understand a thing, but great video nonetheless.
@uidotdev
@uidotdev 2 года назад
Hahaha I appreciate you watching and commenting regardless! ❤️
@SalvatorePellitteri
@SalvatorePellitteri 2 года назад
What's wrong with web developers guys? this is a solved problem for almost 30years now, don't put expensive and unpredictables tasks (like a network call) on the rendering loop, so simple.
@butterfly7562
@butterfly7562 2 года назад
useDeferredValue is debounce an alternative? It's a little confusing as a beginner
@uidotdev
@uidotdev 2 года назад
Yes. Think of it as a smarter denounce that is aware of what react is working on and when it's finished.
@caliwolf7150
@caliwolf7150 2 года назад
We is this so high quality dammit!? we don't deserve this kind of good quality lol
@uidotdev
@uidotdev 2 года назад
You do deserve it! ❤️
@NachoDLF
@NachoDLF 2 года назад
Hi. Can you do npm vs yarn? or something like that.
@netssrmrz
@netssrmrz 2 года назад
Another excellent video on how ill-conceived react is. A never-ending trail of fixes disguised as features.
@uidotdev
@uidotdev 2 года назад
Thanks for watching! 😂
@rallisf1
@rallisf1 2 года назад
3 years ago I decided to do more front-end work and learned react, hooks where the way to go. Went on a couple interviews and they cut me dry because their codebase was still in older react versions and I couldn't use hooks. I learned from an old colleague same shit went on with Vue. Frameworks where chaning too fast for the corporate world to adopt and new releases were considered unstable bacause custom components getting incompatible... I got so frustrated I devoted to Svelte, new kid in the block but simple AF. Long story short my components from 2019 still work on latest svelte and I can inject them in any webpage, no matter what framework it uses. Best choise I've ever made.
@dhkatz_
@dhkatz_ 2 года назад
I mean most older React components will still work too. They might throw some warnings now but there is nothing wrong with progress
@JaekSean
@JaekSean 2 года назад
That's one one giant small step for leap for mankind. man,
@uidotdev
@uidotdev 2 года назад
😅
@davidnguyen9065
@davidnguyen9065 2 года назад
Will you be updating your courseware to React 18?
@uidotdev
@uidotdev 2 года назад
Yes. And more.
@usernameL1
@usernameL1 2 года назад
Sorry, but I don’t get it. I’ve never come across an instance where I would need this (I think). Do you maybe have some real world example of where this would be absolutely necessary?
@uidotdev
@uidotdev 2 года назад
They are rare, tbh. Essentially when you have rendering perf issues.
@ELStalky
@ELStalky 2 года назад
"this is not a performance problem, this is fundamentally a scheduling problem" Keep telling yourself that 😅
@uidotdev
@uidotdev 2 года назад
😅
@willinton06
@willinton06 2 года назад
Let them believe it
@amateurwizard
@amateurwizard 2 года назад
Long live react
@uidotdev
@uidotdev 2 года назад
Thanks for watching!
@bobbyyyjames3065
@bobbyyyjames3065 2 года назад
So for now we kind of "opt in" to these Concurrent Features on case-by-case bases in the same manner we would identify a complex situation that calls for Memoization?
@uidotdev
@uidotdev 2 года назад
Pretty much, yes.
@bobbyyyjames3065
@bobbyyyjames3065 2 года назад
@@uidotdev thank you 🙏
@seannewell397
@seannewell397 2 года назад
It is and always will be too soon 🖤🦍
@uidotdev
@uidotdev 2 года назад
🖤
@renatosardinhalopes6073
@renatosardinhalopes6073 2 года назад
"We're in the endgame now"
@parmeetsingh2911
@parmeetsingh2911 2 года назад
Badia h
@huxnwebdev
@huxnwebdev 2 года назад
The next course will be on react query I guess?? 👀
@uidotdev
@uidotdev 2 года назад
ui.dev/react-query 😘
@yusrgeneral
@yusrgeneral 2 года назад
@@uidotdev thankyou 😘
@hamidbluri3135
@hamidbluri3135 2 года назад
how do you make animations like this?
@uidotdev
@uidotdev 2 года назад
It's a combination of a bunch of stuff.
@duckmasterflex
@duckmasterflex 2 года назад
Harambe was alive haha oh starting it off with a heart breaker
@uidotdev
@uidotdev 2 года назад
🖤
@kennedyfreitas7548
@kennedyfreitas7548 Год назад
He got my undivided attention when he said harambe was alive
@RavMucha
@RavMucha 2 года назад
Ah, Papyrus font in the outro. Trolling UI people, I see...
@uidotdev
@uidotdev 2 года назад
My specialty.
@jason-yb9qk
@jason-yb9qk 2 года назад
as a person who just started learning react i have no idea what this video is about :")
@uidotdev
@uidotdev 2 года назад
You'll get there!
@EinarPaulQvale
@EinarPaulQvale 2 года назад
And you probably don't really need to know. One thing that is under-communicated in React discourse these days is that all these new primitives and performance optimizations are not necessarily needed. A small and relatively simple React app will still most likely perform acceptably. React is still the same at its core as it ever was, with most importantly a very good component model. And its very close to plain js, which is also a good benefit. If you truly need more power, then React now offers primitives to achieve this. But you don't *have* to use any of them.
@riddixdan5572
@riddixdan5572 2 года назад
now that concurent is here. what's next in line?
@uidotdev
@uidotdev 2 года назад
Data fetching with Suspense seems to be the next big thing.
@DAB009
@DAB009 2 года назад
@@uidotdev does Nuxt 3 js has something similar? Sorry I am still learning things.
@arpanghoshal2579
@arpanghoshal2579 2 года назад
Why can't I just use something like debounce or throttle in that example instead of using useDeferredValue ?
@uidotdev
@uidotdev 2 года назад
Those aren't aware of what React is working on. UDV is like an intelligent debounce that is aware of React's current workload.
@arpanghoshal2579
@arpanghoshal2579 2 года назад
@@uidotdev makes sense thanks
@Linkplay9
@Linkplay9 2 года назад
Ooooor you could make rendering the list less expensive by building a faster VDOM or just not using one in the first place ;^)
@uidotdev
@uidotdev 2 года назад
Svelte agrees
@KeganVanSickle
@KeganVanSickle 2 года назад
So React is finally catching up with what Angular has been able to do out of the box for years now? Am I missing something?
@uidotdev
@uidotdev 2 года назад
Yes, you're missing a lot.
@KeganVanSickle
@KeganVanSickle 2 года назад
@@uidotdev I figured. 😆
@cipherxen2
@cipherxen2 2 года назад
@@uidotdev can you please explain?
Далее
The Story of React
10:05
Просмотров 244 тыс.
The Story of Asynchronous JavaScript
10:20
Просмотров 152 тыс.
UFC 302: Пресс-конференция
22:48
Просмотров 1,4 млн
Cool Tools I’ve Been Using Lately
23:11
Просмотров 85 тыс.
React vocab explained: What is Concurrent React?
17:14
The Story of Astro DB
11:27
Просмотров 8 тыс.
Goodbye, useEffect: David Khourshid
26:01
Просмотров 232 тыс.
The Story of Next.js
12:13
Просмотров 532 тыс.
Why React Hooks?
14:04
Просмотров 172 тыс.
Goodbye, useEffect - David Khourshid
29:59
Просмотров 493 тыс.
How React ACTUALLY works (DEEP DIVE 2023)
12:59
Просмотров 47 тыс.