The Story of Concurrent React

Поділитися
Вставка
  • Опубліковано 13 січ 2025

КОМЕНТАРІ • 242

  • @tonytino139
    @tonytino139 2 роки тому +161

    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 роки тому +5

      RIP 🖤 (Thanks for watching!)

  • @rohitteja
    @rohitteja 2 роки тому +35

    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!

  • @sle6423
    @sle6423 2 роки тому +12

    Continuously stunned at the level of research and quality put into these videos. Just absolutely incredible

    • @uidotdev
      @uidotdev  2 роки тому +1

      This comment and your other one means a lot. Thank you!

  • @Kalazt
    @Kalazt 2 роки тому +54

    Another video, another banger. Thank you for producing such high quality videos for us devs. Always pleasure to learn through these

    • @uidotdev
      @uidotdev  2 роки тому +5

      Thanks for commenting! ❤️

  • @Mixesha001
    @Mixesha001 2 роки тому +38

    Loving your content, keep it up!!

  • @walidn2295
    @walidn2295 2 роки тому +34

    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 роки тому +2

      Glad you enjoyed it!

  • @LaxMariappan
    @LaxMariappan 2 роки тому +14

    Becoming a fan of your work Tyler. Glad to see your effort delivers quality output and also well received by devs!🔥

  • @ritabest17
    @ritabest17 2 роки тому +13

    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!

  • @WajuAbolarin
    @WajuAbolarin 2 роки тому +4

    Your content literally made me pause to check if I had subscribed, this is some top shelf content.

    • @uidotdev
      @uidotdev  2 роки тому

      ❤️❤️❤️

  • @thecastiel69
    @thecastiel69 2 роки тому +62

    Harambe was like father to me

  • @kohelet910
    @kohelet910 2 роки тому +2

    Coming from today's newsletter 😎 thank for this clear and really interesting video !

    • @uidotdev
      @uidotdev  2 роки тому +1

      Thanks for watching!

  • @alexbrown7624
    @alexbrown7624 2 роки тому +13

    It was smart that they went with the approach of concurrent "features", instead of an all or nothing concurrent "mode"

  • @shachi5982
    @shachi5982 2 роки тому +1

    This made so many things clear! Thank You for your work. ✨

  • @manuelalfonzoml
    @manuelalfonzoml 2 роки тому +2

    Its scary how small this channel is. Keep the awsome work man ❤️🔥

    • @uidotdev
      @uidotdev  2 роки тому +1

      We'll get there. Thanks for watching!

  • @AbdelhameedG
    @AbdelhameedG 2 роки тому +6

    Thank you, Tyler, quality content as usual.

  • @derockx
    @derockx 2 роки тому +2

    First time seeing this channel, and I gotta say, the animation and quality is amazing! Keep up the good work!

  • @saurabh75prakash
    @saurabh75prakash 2 роки тому +1

    Glad that I discovered your channel. Thanks 🙏

  • @SpaceGravy
    @SpaceGravy 2 роки тому +1

    First time discovering this creator, liked, subscribed and commented. Nice job.

  • @rtorcato
    @rtorcato 2 роки тому +6

    The react team left us in Suspense!

  • @espressothoughts
    @espressothoughts 2 роки тому +3

    Just found the channel. Had to subscribe.
    Great work!

  • @jitxhere
    @jitxhere 2 роки тому +6

    Actually I am new to React. I didn't get much of the things but liked your presentation style and teaching style.

  • @bahaarizk2834
    @bahaarizk2834 2 роки тому +3

    Wow man! Time to binge watch your content

  • @fadeldrissitoubbali944
    @fadeldrissitoubbali944 2 роки тому +2

    one of the best channels. keep going.

    • @uidotdev
      @uidotdev  2 роки тому

      That means a lot. Thank you!

  • @rand0mtv660
    @rand0mtv660 2 роки тому +23

    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 роки тому +5

      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 роки тому +2

      @@renatosardinhalopes6073 yeah probably. Doesn't make it less impressive in my opinion.

  • @KennethBoneth
    @KennethBoneth 2 роки тому +1

    The quality of these videos is unbelievable

  • @Matt36788
    @Matt36788 2 роки тому +3

    Great video and fantastic explanation, thanks heaps!

    • @uidotdev
      @uidotdev  2 роки тому

      You're welcome. Thank you for watching!

  • @arpitdubey5938
    @arpitdubey5938 2 роки тому +3

    Loved the video Tyler, keep it up.

  • @muhammadahmedjaved7691
    @muhammadahmedjaved7691 2 роки тому

    your videos are very very very informative, thank you very much for explaining all these things brilliantly

  • @riddixdan5572
    @riddixdan5572 2 роки тому +4

    awesome high quality content. I'm surprised why you don't have millions of subscribers yet :D

  • @zummotv1013
    @zummotv1013 2 роки тому +1

    Finally more people are viewing this amazing content .

  • @zakhariihusar6975
    @zakhariihusar6975 2 роки тому

    This video made me subscribe. Wonder how i haven't stumbled on the channel before

  • @akashpal9691
    @akashpal9691 2 роки тому +2

    Over the years, it's easy to loose track of context. This video sums up.

    • @uidotdev
      @uidotdev  2 роки тому

      So glad it was helpful!

  • @tomross4599
    @tomross4599 2 роки тому

    This was so helpful, thank you! I still have one niggle: Your Suspense example conflated empty state and loading state.

  • @vincenguyendev
    @vincenguyendev 2 роки тому +4

    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!

  • @chrisnguyen5800
    @chrisnguyen5800 2 роки тому

    Have to subscribe immediately after watching your video. Appreciated

  • @tathagat9586
    @tathagat9586 9 днів тому

    Nice info guys 🎉. Excellent presentation

  • @soccermatrix
    @soccermatrix 2 роки тому +2

    One day React is going to be awesome...

  • @RasmusSchultz
    @RasmusSchultz 2 роки тому +97

    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 роки тому +11

      Thanks for watching!

    • @oussamabenmansour5375
      @oussamabenmansour5375 2 роки тому +1

      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 роки тому +9

      Perception of performance is often more important than factual performance when it comes to UI, but doubly so in the boardroom.

    • @dave4148
      @dave4148 2 роки тому +4

      "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 роки тому +3

      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.

  • @patrickeriksson1887
    @patrickeriksson1887 2 роки тому +2

    Great content; subscribed

  • @spicybaguette7706
    @spicybaguette7706 2 роки тому +13

    RIP Harambe

  • @gg-gn3re
    @gg-gn3re 2 роки тому +6

    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!)

  • @rasmusmerzin
    @rasmusmerzin 2 роки тому +3

    Terms low level and high level are so confusing in inherently high level ecosystems.

  • @johnlehew8192
    @johnlehew8192 Місяць тому

    EVERYONE NEEDS TO WATCH THIS! History keeps repeating itself! Notice how we keep hearing about 5 times it improved something but didn’t work on a large website. The test of a great pattern or architecture is if it was done everywhere does it still work well and is easy to maintain? Yes and it is good, no finds areas of improvement

  • @pope7
    @pope7 2 роки тому

    Great videos, learning a lot.

  • @juliansoto2651
    @juliansoto2651 2 роки тому +3

    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)

  • @00ch00
    @00ch00 2 роки тому +4

    I wish Harambe was still around to see React 18 😭

    • @uidotdev
      @uidotdev  2 роки тому +1

      I like to think that he's using React 18 in heaven right now.

  • @MobiusCoin
    @MobiusCoin 2 роки тому +1

    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.

  • @mohtashimali581
    @mohtashimali581 2 роки тому +2

    lovinng the content

  • @huxnwebdev
    @huxnwebdev 2 роки тому +1

    The next course will be on react query I guess?? 👀

    • @uidotdev
      @uidotdev  2 роки тому

      ui.dev/react-query 😘

  • @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.

  • @XRoydX
    @XRoydX 2 роки тому +2

    Wow impressive video. You have my sub :)

  • @ikbo
    @ikbo Рік тому +1

    Beautiful tribute to Harambe. RIP

  • @vitinhuffc
    @vitinhuffc 2 роки тому +1

    Great presentation

  • @Ahmed2lBadry
    @Ahmed2lBadry 2 роки тому +2

    Great work 👏

  • @AndersonSilvaMMA
    @AndersonSilvaMMA 2 роки тому +2

    Really great content!

  • @omedjamal1056
    @omedjamal1056 2 роки тому +5

    Great video, thanks. what do you think about the future of Svelte (Sveltekit)

    • @uidotdev
      @uidotdev  2 роки тому +4

      It's bright! We'll have a video on it soon.

  • @jagsexe
    @jagsexe 2 роки тому +2

    Great explanation :)

  • @johannes.evol.
    @johannes.evol. 2 роки тому

    Thanks for the awesome content

  • @ozgursulum4116
    @ozgursulum4116 2 роки тому +2

    Great content ty.

  • @FlorianGamp
    @FlorianGamp 2 роки тому +1

    Awesome video!

  • @DK-ox7ze
    @DK-ox7ze 2 роки тому +3

    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 роки тому +1

      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. ua-cam.com/video/ZCuYPiUIONs/v-deo.html

  • @yogikatba
    @yogikatba 2 роки тому +3

    These story videos are amazing ✨. Please cover vue/nuxt as well.

  • @caliwolf7150
    @caliwolf7150 2 роки тому +2

    We is this so high quality dammit!?
    we don't deserve this kind of good quality lol

    • @uidotdev
      @uidotdev  2 роки тому +1

      You do deserve it! ❤️

  • @basil127
    @basil127 2 роки тому +1

    I got more knowledge about react in one video than my first year of using react..

  • @netssrmrz
    @netssrmrz 2 роки тому +4

    Another excellent video on how ill-conceived react is. A never-ending trail of fixes disguised as features.

    • @uidotdev
      @uidotdev  2 роки тому

      Thanks for watching! 😂

  • @beto5720
    @beto5720 2 роки тому +1

    Man I wish my boy Harambe was here to witness this updatw

  • @ToreyLittlefield
    @ToreyLittlefield 2 роки тому +2

    Beautiful video i love it 💕

  • @userrrfriendly1908
    @userrrfriendly1908 2 роки тому +3

    Great video, didn't understand a thing, but great video nonetheless.

    • @uidotdev
      @uidotdev  2 роки тому +1

      Hahaha I appreciate you watching and commenting regardless! ❤️

  • @drh237
    @drh237 2 роки тому +4

    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 роки тому +1

      If you're using Next, I wouldn't worry about it.

  • @JaekSean
    @JaekSean 2 роки тому

    That's one one giant small step for leap for mankind. man,

  • @butterfly7562
    @butterfly7562 2 роки тому +1

    useDeferredValue is debounce an alternative? It's a little confusing as a beginner

    • @uidotdev
      @uidotdev  2 роки тому +3

      Yes. Think of it as a smarter denounce that is aware of what react is working on and when it's finished.

  • @bephrem
    @bephrem 2 роки тому +1

    Great video

  • @ParthaSarathylink
    @ParthaSarathylink 2 роки тому

    When is the server side components coming . ..?

  • @NachoDLF
    @NachoDLF 2 роки тому +1

    Hi. Can you do npm vs yarn? or something like that.

  • @renatosardinhalopes6073
    @renatosardinhalopes6073 2 роки тому

    "We're in the endgame now"

  • @vmaxxk
    @vmaxxk 2 роки тому +3

    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.

  • @sakesun
    @sakesun 3 місяці тому

    I complained a lot when Hooks was introduced. Now I have some clue why thing is what it is now.

  • @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?

  • @modestas2890
    @modestas2890 2 роки тому +2

    brilliant

  • @RavMucha
    @RavMucha 2 роки тому +2

    Ah, Papyrus font in the outro. Trolling UI people, I see...

  • @zemaumm
    @zemaumm 2 роки тому

    Hey! Nice video. What tool do you use to animate these videos ? :)

  • @jason-yb9qk
    @jason-yb9qk 2 роки тому +1

    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.

  • @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?

  • @usernameL1
    @usernameL1 2 роки тому +1

    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.

  • @kennedyfreitas7548
    @kennedyfreitas7548 2 роки тому

    He got my undivided attention when he said harambe was alive

  • @akiraarchangel2911
    @akiraarchangel2911 2 роки тому +1

    Remix video maybe? Or vue?

  • @mukulr5171
    @mukulr5171 2 роки тому

    What a great video 🤍🤍

  • @rallisf1
    @rallisf1 2 роки тому +12

    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 роки тому +2

      I mean most older React components will still work too. They might throw some warnings now but there is nothing wrong with progress

  • @Linkplay9
    @Linkplay9 2 роки тому +2

    Ooooor you could make rendering the list less expensive by building a faster VDOM or just not using one in the first place ;^)

  • @amateurwizard
    @amateurwizard 2 роки тому +1

    Long live react

    • @uidotdev
      @uidotdev  2 роки тому

      Thanks for watching!

  • @arpanghoshal2579
    @arpanghoshal2579 2 роки тому

    Why can't I just use something like debounce or throttle in that example instead of using useDeferredValue ?

    • @uidotdev
      @uidotdev  2 роки тому +1

      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

  • @seannewell397
    @seannewell397 2 роки тому +2

    It is and always will be too soon 🖤🦍

  • @riddixdan5572
    @riddixdan5572 2 роки тому

    now that concurent is here. what's next in line?

    • @uidotdev
      @uidotdev  2 роки тому +1

      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.

  • @duckmasterflex
    @duckmasterflex 2 роки тому +3

    Harambe was alive haha oh starting it off with a heart breaker

  • @drewhjava
    @drewhjava 2 роки тому +1

    Umm yea. Just through state in Mobx and call it a day.

  • @hamidbluri3135
    @hamidbluri3135 2 роки тому

    how do you make animations like this?

    • @uidotdev
      @uidotdev  2 роки тому +1

      It's a combination of a bunch of stuff.

  • @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 роки тому +2

      Yes, you're missing a lot.

    • @KeganVanSickle
      @KeganVanSickle 2 роки тому

      @@uidotdev I figured. 😆

    • @cipherxen2
      @cipherxen2 2 роки тому

      @@uidotdev can you please explain?

  • @davidnguyen9065
    @davidnguyen9065 2 роки тому

    Will you be updating your courseware to React 18?

  • @flyte9844
    @flyte9844 2 роки тому +1

    great content 👏👏 keep it up !!

  • @ELStalky
    @ELStalky 2 роки тому +6

    "this is not a performance problem, this is fundamentally a scheduling problem"
    Keep telling yourself that 😅