How To Load Images Like A Pro

Поділитися
Вставка
  • Опубліковано 22 лис 2024

КОМЕНТАРІ • 368

  • @snc0lt
    @snc0lt Рік тому +527

    one of the things i like about you, is that you rarely use any framework/library for your videos and just focused on the fundamentals...! Keep it up.!

    • @TheThirdWorldCitizen
      @TheThirdWorldCitizen Рік тому +13

      He does talk a lot about react tbf, but decent amount of vanilla videos.

    • @cookieman.19
      @cookieman.19 Рік тому +14

      He is the framework

    • @MrThebigcheese75
      @MrThebigcheese75 Рік тому

      I agree, prefer not to be bogged down with a framework, for what I do they're overkill.

    • @fatimanura6359
      @fatimanura6359 9 місяців тому

      yup, it helps to have more better understand, and get used to the logics

  • @stevensavoie856
    @stevensavoie856 Рік тому +9

    I love that the way you add lazy loading is how non-programmers think writing code is like.
    "If you want lazy loading, type "loading = lazy". If you want a visitor to buy things, just add a button and write "action = complete transaction with credit card or payment service.""

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

      That's the Declarative Paradigm of programming for you. It's all about letting you describe WHAT you want (leaving the HOW to the engine).
      That is, you provide descriptions of what you want, piece by piece.
      On the other hand, what people casually mean by "programming" tends to be the Imperative Paradigm. This is all about letting you describe HOW you want things done.
      That is, you provide instructions, step by step.

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

    Been in web dev for 25 years, been a few since I was doing front end stuff. TIL some new to me properties, thanks!

  • @rusicsemenov
    @rusicsemenov Рік тому +24

    Hi Kail, thanks, good idea with pulse. And you can write in the keyframes 0%, 100% ... and 50%, instead repeat the same code.

  • @sunraiii
    @sunraiii Рік тому +11

    Web development wouldn't be where it's at without UA-cam. Great video!

    • @calimio6
      @calimio6 Рік тому +4

      nah, without content creators

    • @rproctor83
      @rproctor83 Рік тому +3

      @@calimio6 nah, without internet

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

      Did you ever hear about books? Or sites like MSDN?

    • @sunraiii
      @sunraiii Рік тому

      ​@@merlinwarage Congrats on being a dick under a positive comment.
      Also, dev books are 80% fluff, 20% content and MSDN is for boomers.

  • @MostofaFatinZarif
    @MostofaFatinZarif 2 місяці тому

    One of the best video ever. Maintain performance is a major part in development

  • @JonHaa87
    @JonHaa87 Рік тому +69

    1. I'd add an additional blur filter to the low res images, either in the browser or when generating them. Just upscaling them kinda makes them look crappy as you get lots of "square gradients" (for a lack of a better word) interpolating between the pixels instead of a nice smooth blurry version.
    2. As other have said, this effect is mostly already implemented into browsers/images. If you'd save the images as progressive, they'd automatically get sharper and sharper while they load, which requires less code and doesn't even need the download of the small image versions. However you could implement an additional blur effect on top of that while they're loading for a better effect, similar to what you've done in the video.
    3. The solution you've given in the video is bad as someone with scripts disabled won't see the high-res versions at all. I'd add the CSS class that hides them until they're loaded also within JS.

  • @TheNewton
    @TheNewton Рік тому +8

    8:12 in addition to online tools most image asset CDN's have parameters , or a path, to serve specific image sizes.

  • @JoseRuiSantos-ruisoftware
    @JoseRuiSantos-ruisoftware Рік тому +12

    If you already know the image dimensions before loading it, then you should add the width and height attributes to you img. This avoids the annoying effect of seeing the content moving around during image loading

    • @YuriG03042
      @YuriG03042 Рік тому +8

      also known as CLS, which is Cumulative Layout Shift, which will impact the page SEO ranking

    • @thalison-dev
      @thalison-dev Рік тому +1

      @@YuriG03042 What do you mean ? using width and height impact SEO ranking negatively?

    • @JoseRuiSantos-ruisoftware
      @JoseRuiSantos-ruisoftware Рік тому

      @@thalison-dev It is the other way around. Not using width/height affects the SEO ranking negatively and increases the cumulative layout shift score. Google for "cumulative layout shift"

    • @rproctor83
      @rproctor83 Рік тому +2

      ​@@thalison-dev After 20 years fuckig around with Google bullshit I can tell you without a shadow of doubt that most all of these SEO tips are an utter waste of time and effort. If you ever look at some of the top ranking sites in highly saturated market you will see most of them are trash, a million console errors, dozens of tracking cookies, elements jumping around, interstitials and popups, bad semantics, too much advertising blocks, shallow content, meaningless content, duplicated content, I mean the list goes on.

    • @thekwoka4707
      @thekwoka4707 Рік тому +2

      @@rproctor83 no, it's just that being the thing people want is always most important.
      But layout shift is still annoying for users period.

  • @2hari-g2b
    @2hari-g2b Рік тому

    The process of generating and storing the blue placeholder js cumbersome - cloudinary really makes the whole thing a lot more cleaner.

  • @TehPwnerer
    @TehPwnerer Рік тому +5

    In the 90s with JPEG they would load exactly like you describe and they can because the the way jpegs are constructed using frequency data so you can load lower frequency components first making up a blurry pixelated image like you have slowly transitioning into the actual image as finally received and loaded

    • @mohammadmahdimohaveri6580
      @mohammadmahdimohaveri6580 Рік тому +7

      What you're describing is called Progressive JPEG, normal JPEG stores image block by block and cannot be rendered Progressively, but Progressive JPEG stores data from lower frequencies to higher ones, so it can load in an un-bluring manner

    • @alex_smallet
      @alex_smallet Рік тому

      Yes, it's called jpeg 2000. Unlike regular jpeg, where they use Fourier transform, jpeg 2000 uses wavelet transform, which allows for better perceived image quality with smaller file size. Windows does not support it, but on a macOS you can save an image in jpeg 2000 format.

  • @fraudulentme
    @fraudulentme Рік тому

    I was looking for EXACTLY this for my project.

  • @r.osorio02
    @r.osorio02 2 місяці тому

    Thank you bro! I will do this to my image component in react 👍

  • @lukas.webdev
    @lukas.webdev Рік тому +22

    I heard about it, but actually never used it ... But this actually seems pretty helpful. Keep it up. 😉🔥

    • @harris.sensorsoffline6419
      @harris.sensorsoffline6419 Рік тому +2

      Whose gonna do it? so much typing of extra code 😁 so much work. Just basic lazy loading is enough.

    • @Peshyy
      @Peshyy Рік тому +3

      @@harris.sensorsoffline6419 I see you don't care about UX at all

    • @harris.sensorsoffline6419
      @harris.sensorsoffline6419 Рік тому

      @@Peshyy It won't be ideal, to work on a ldiotic Blur Image Lazy Load when native lazy load is faster & better.

    • @Peshyy
      @Peshyy Рік тому +2

      ​@@harris.sensorsoffline6419 native lazy loading is still being used. the difference is that with one, you get images pop out of nowhere on slow networks; with the other - the images are placed where they should be, the user is visually aware there's an image there and how it should look like, and gets nice visual feedback that the image is being loaded.
      calling it "idiotic blur image lazy load" shows a lot about you

    • @harris.sensorsoffline6419
      @harris.sensorsoffline6419 Рік тому

      @@Peshyy If you are working on a Gov Project that requires support for Slower Network & Older Browsers. You can't even support native lazy loading better luck with Tables to align those IMGs 😁.
      Just kiddin, like you can convert all your images to webp with extreme compression & native lazy loading. Enough, to work good on all 4G Connections that most World runs on.

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

    Thanks this is so useful, I have started a e-commerce site and I will use this method for the product images

    • @lamhung4899
      @lamhung4899 Рік тому

      this method is more suite for showcase , img attribute srcset is better enough for your ecom site

  • @arinqwerty
    @arinqwerty Рік тому

    I love how this is detailed!!!

  • @Gio-m
    @Gio-m Рік тому

    Dude you're a blessing, thank you!

  • @Diventurer
    @Diventurer Рік тому

    Did not know about the loading attribute. It was very helpful for a website I develop. Thank you!

  • @MrMikopi
    @MrMikopi Рік тому +5

    I'm not that into front end side,
    But video making of yours is brilliant!
    I've even checked if I increased playback speed, but no, it was you talking at a good amount of speed, talking only about important stuff.
    Visual demonstrations are on point also.
    Thank you, good work.
    Edit: 11:36 that is the fastest bug fixing I've ever seen haha

  • @leandrolepingo1783
    @leandrolepingo1783 Рік тому

    Hi Kail, thanks, good idea with pulse.

  • @dailydoseofchocolate9411
    @dailydoseofchocolate9411 11 місяців тому +1

    Please make a video about next image too? My problem is how to set height on dynamic images in next js without them losing the aspect ratio and keeping the responsiveness

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

    It is important to mention that images that have the attribute loading="lazy" but are not loaded yet are not available on the print layout!
    If the print layout is important, a lazy loading method using IntersectionObserver would be the better option.

  • @OldManBears
    @OldManBears Рік тому

    You're awesome, this was incredibly helpful.

  • @csisyadam
    @csisyadam Рік тому +16

    1. Would ".blur-load:not(.loaded)::before" work?
    2. What do you think about "animation-direction: alternate"?
    3. Setting the bg color to white and play with the opacity in the animation is another way to do it.

  • @JordanICM
    @JordanICM 5 місяців тому

    At my job they really want us to improve the ligthouse scores. Have you done any tests to see what maximizes the lighthouse score (things like first/largest contentful paint)? I know you may even have to do strange stuff like not use external css files if your site has a really big one. I think it would be great if you could do a showcase of all the different ways to lazy load & optimize images and then show what kind of lighthouse scores they get (specifically on mobile, that's the killer). Thank you for this vid!

  • @洪柜峰
    @洪柜峰 Рік тому

    you are such a genius!!

  • @SnappyScience
    @SnappyScience Рік тому

    Great easy to follow vid. The blur background idea is gold.

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

    I would also add a blur filter to smooth out those low res jpeg artifacts.

  • @QwDragon
    @QwDragon Рік тому

    1. You can set background on an img itself. But I think it'll be impossible to add pulse over it.
    2. Seems like progressive jpeg (especially with http2) could've solve the problem too?
    3. 08:48 I like this more than blurry until load.
    4. 10:30 It would be better to specify { once: true } so that it usubscribes after event occures.

  • @ZackPyle
    @ZackPyle Рік тому +7

    You could also throw a filter blur on it to make that pixilated small file look a little nicer

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

      Actually, you are right, but when we use the 'Filter blur' effect on the mobile version, it feels laggy.

    • @ZackPyle
      @ZackPyle Рік тому

      @@gowthammurugan6392 Interesting. Which part feels laggy?

  • @yalewjemberu6821
    @yalewjemberu6821 Рік тому

    Your are the life saver....the (img.complete) one

  • @khalidelgazzar
    @khalidelgazzar Рік тому

    Grest tutorial. Thank you

  • @canarymultimedia
    @canarymultimedia Рік тому +18

    What happened to progressive jpg anyway? That was a really cool feature built into the image...

    • @tom3f
      @tom3f Рік тому +6

      It should still works, and it is much simpler than this.

    • @lapridagaspar
      @lapridagaspar Рік тому

      That would still start the resource download on page load even if the image is 200 viewport a down.

    • @mohammadmahdimohaveri6580
      @mohammadmahdimohaveri6580 Рік тому +8

      You can lazy load progressive jpeg as well, and this way you're not wasting user's bandwidth for blurred images, image actually loads progressively and you won't have to manage two sets of assets

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

      I was looking for this comment

  • @RobertWildling
    @RobertWildling Рік тому

    Excellent video! Incredibly well explained, exceptionally well prepared! Thank you very much!

  • @abdelrahman6319
    @abdelrahman6319 Рік тому

    Use Ctrl + Alt + Down / Up to get multiple cursors as he did in the video

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

    I really don't see how blurry jpegs are nice looking, they are even quite horrible imo, but the idea and technique as a whole is for sure nice and useful.

  • @BHFJohnny
    @BHFJohnny Рік тому

    Does it work? Yes.
    Is it clear and readable? Yes.
    Good.
    Are there other ways of doing it? Of course. Tons.

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

    This is an awesome way to load images. Great video!

    • @khanapeena2191
      @khanapeena2191 5 місяців тому

      It's better to use library for that

  • @Jdinrbfidndifofkdndjoflfndjdk

    Thank you next/image for not making having to write all of this :). Great video btw.

  • @iamasifimam
    @iamasifimam Рік тому

    very helpfull content thankyou for sharing this.

  • @JoseLeMalin
    @JoseLeMalin 7 місяців тому

    Very usefull video ! Thank you !

  • @CarlosHernandez-tg3vj
    @CarlosHernandez-tg3vj Рік тому

    exactly what I needed thank you

  • @MichaelKadzioch
    @MichaelKadzioch Рік тому

    Thanks for this Video!

  • @namikazedevj46
    @namikazedevj46 Рік тому

    what a coincidence got this issue in my job task xD thanks a lot!

  • @martinkarugaba
    @martinkarugaba Рік тому

    Awesome tutorial, thanks Kyle.

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

    Thank you.

  • @Booyamakashi
    @Booyamakashi Рік тому +4

    Thanks, ill just use progressive jpegs.

  • @Buster475
    @Buster475 Рік тому +5

    Considering that jpeg encodes in 8x8 blocks, maybe 16x16 or 24x24 pixels would work better?

  • @Abdallah_Ismail
    @Abdallah_Ismail Рік тому

    Thank god programming is like an open-book exam, you just need to know that it can be done and you will have Kyle here to help you do it

  • @colindante5164
    @colindante5164 Рік тому

    Thankyou much for sharing this awesome technique. ))))

  • @prodbybarn
    @prodbybarn Рік тому

    Just what i was looking for, awesome

  • @minusgod
    @minusgod Рік тому

    Thank you for this very informative video .. pls do make a video for video loading time will be very helpful :)

  • @kennethbeal
    @kennethbeal Рік тому

    Nice, thank you!

  • @Trazynn
    @Trazynn Рік тому +40

    Is it possible to lazy load in a sharp pixelated style. Because pixel-art aesthetic is really hip these days.

  • @andreaskarz
    @andreaskarz Рік тому

    Super cool, thank you

  • @goodluckoriuwa1669
    @goodluckoriuwa1669 Рік тому

    This is good to know.... But one more thing... Can you show how to implement this feature in react front end application???

  • @ibtesumrezaaninda323
    @ibtesumrezaaninda323 Рік тому

    Ow man! You are awesome!

  • @krumbo
    @krumbo Рік тому

    Great stuff thanks for sharing.

  • @derpysean1072
    @derpysean1072 Рік тому

    This is nice. Thank you dude.

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

    The issue with this puts more load on the user and the server. You're loading multiple images at the end of the day. I would love to see if there could be a version where it automatically downscales itself, and builds upon itself. Great video!

  • @user-fed-yum
    @user-fed-yum Рік тому

    So impressed with your skills, every single piece of content you produce. Just a heads up, that addEventListener will leak memory. Simplest fix would be to add an option argument with once:true.

    • @cookieman.19
      @cookieman.19 Рік тому

      Is that the third argument?

    • @user-fed-yum
      @user-fed-yum Рік тому +1

      @@cookieman.19 Yes, add { once: true } for the third argument 👍

  • @mrnabby4178
    @mrnabby4178 Рік тому

    I was waiting for this video.

  • @OrlandoVallejos
    @OrlandoVallejos Рік тому

    Amazing content!

  • @temperkan3727
    @temperkan3727 Рік тому +2

    This guy is awesome!

  • @landau07
    @landau07 Рік тому

    Great content! Thank you!

  • @kenansenagic384
    @kenansenagic384 Рік тому

    Great advice :)

  • @chrisprenn
    @chrisprenn Рік тому

    I have been using 'BlurHash' for multiple apps for some time now. I feel like it gives nicer results and the size for the blurred img is just bytes (!)

    • @chrisprenn
      @chrisprenn Рік тому

      And i forgot to mention: no network requests for the blurred imgs

    • @drinkyourglassofwater
      @drinkyourglassofwater Рік тому

      @@chrisprenn Hi. Thanks for the nice info!

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

    nice video! one thing I'd have done differently is, if you're using javascript anyways, I'd have set the small image style in the script itself too, to have the DOM be less cluttered

    • @SenselessUsername
      @SenselessUsername Рік тому

      Also to make the no-scripts users see the actual picture eventually...

  • @mohmarroun3189
    @mohmarroun3189 7 місяців тому

    Great video!

  • @eliyahutarab4862
    @eliyahutarab4862 Рік тому

    Amazing as always thank you so much man

  • @lapridagaspar
    @lapridagaspar Рік тому +84

    Cool!
    I personally prefer not having extra markup. You can have the background image directly on the img tag. You wouldn't have the exact fade in animation you achieved but if you save your images with "progressive" turned on, they load in waves of less quality to more quality instead of top to bottom.
    Also, I think that hiding images by default isn't very progressively enhanced. You could instead add a class when JS starts running to hide them, or the classic remove the .no-js class on the body.
    Also, wouldn't it be more performant to do the pulse animation with opacity rather than changing the background color value? I think this can be done without extra markup as well (there's no need even for a pseudo element)

    • @lapridagaspar
      @lapridagaspar Рік тому +19

      One more thing. In your example it doesn't really matter, but for regular block images (not on a grid like yours) lazy loading can cause layout shift.
      To prevent this, you should specify each image width and height attributes.
      What's more, if you have those values and you are dealing with responsive images, you could also set a style with --_img-width and --_img-height custom properties. This should be the pixel value without unit.
      Then, in your CSS
      img[loading="lazy"]{
      max-width:100%;
      height:auto;
      aspect-ratio: var(--_img-width) / var(--_img-height);
      }

    • @aniketpandey2524
      @aniketpandey2524 Рік тому

      while trying this out i ran into said issues and after struggling for 20 minutes I arrived at almost the same solution you gave except for the progressive part. Have no idea what that means. Can you please explain?

    • @PhoenixXxXx91
      @PhoenixXxXx91 Рік тому +14

      @@aniketpandey2524 Progressive images, supported since ages from jpg format include the small image Kyle generates inside the image itself. Also, the top-to-bottom loading is different on this kind of images - the same effect we're trying to have in the video, except that it is browser native, rather than using JS. I personally create the progressive images with the "export for web(legacy)" using the "progressive" option in Photoshop, but pretty sure you can find a free tool for that.

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

      @@PhoenixXxXx91 oh! Now I got it. I thought he's talking about some new option in img tag of html.. 😅

    • @lapridagaspar
      @lapridagaspar Рік тому +10

      @@aniketpandey2524 JPGs can be saved as "progressive" from photoshop. I'm sure there are other ways, but that's how I do it.
      If you are going full on optimization you may also consider a tag with the image inside as a WEBP or any other modern web format; with the JPG fallback.
      I don't know if WEBP has this "progressive" option.

  • @eseval
    @eseval Рік тому

    Great video. Thanks.

  • @avivperets7360
    @avivperets7360 7 місяців тому

    Thanks again man! can you made also one video about file types? webp and avif versus jpeg also svg can be nice

  • @debugpro
    @debugpro Рік тому

    thats what i want thanks very much i had same porblem in my real portfolio

  • @blikardo
    @blikardo 7 місяців тому

    Great video as usual. What do you think of the use of 'skeletons' while loading stuff. Is it any better than having to have multiples files of the same image but sized down?

  • @dotjs5025
    @dotjs5025 Рік тому

    Simply amazing explanation

  • @javascript_developer
    @javascript_developer Рік тому

    nice tricks to load images thanks for sharing.

  • @Абдулхафиз-ч8д
    @Абдулхафиз-ч8д Рік тому +2

    Web Dev is the best👍

  • @arman_deve
    @arman_deve Рік тому

    It was great and useful, thank you. How can I load the photos myself? For example, load photo number 3 first and then photo number 8?

  • @GergelyCsermely
    @GergelyCsermely Рік тому

    Thanks!

  • @ItsThePirate
    @ItsThePirate Рік тому

    You have the best tutorials out there. I also notice you shake your head sideways alot when talking.

  • @whonayem01
    @whonayem01 Рік тому

    That's awesome!

  • @ChandasTelugu
    @ChandasTelugu Рік тому

    Nice. But, it's indirectly downloding extra image when network is already slow.

  • @tasahik
    @tasahik Рік тому

    Great, jusst consider jpeg is based on su regiones of 8x8 size. So is better if you use widths and heights of smaller images that are multiples of 8.

  • @errorerror1337
    @errorerror1337 Рік тому

    Love this man, awesome video! Can you please do a vid on requestAnimationFrame()?

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

    How to do it dynamically fetching from backend

  • @Chalisque
    @Chalisque Рік тому

    What is the right way to ensure that the placeholder div is the same size the image will be, once loaded, to avoid jerky reflow issues.

  • @rabihmaroun225
    @rabihmaroun225 Рік тому

    Very useful. King.

  • @MarkPanado
    @MarkPanado Рік тому +31

    Just use a picture tag and webp images with jpg fallback. Also, images on the first fold of the viewport should never be lazy loaded

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

      Could you elaborate what you mean by “first gold of the viewport?“ Thanks!

    • @MarkPanado
      @MarkPanado Рік тому +5

      @@skykingjason basically the area on the screen that is visible to you as soon as the page loads

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

      @@MarkPanado and y though?

    • @hetoverseo3887
      @hetoverseo3887 Рік тому +2

      @@mohithguptakorangi1766 empty content when the page elements first load. It also causes a little bit more of delay before the image gets load, the browser has to check if the image is currently in the viewport, bad for mobile users on 3g.

    • @mohithguptakorangi1766
      @mohithguptakorangi1766 Рік тому

      @@hetoverseo3887 didn't know that, thanks

  • @HuynhLuong227
    @HuynhLuong227 Рік тому

    Thank you

  • @mralextacy
    @mralextacy Рік тому

    awesome. so this means one can replace IntersectionObserver to lazy load images that come into view with this simple loading="lazy" trick?

  • @kantikuijk7239
    @kantikuijk7239 Рік тому +4

    Is there a reason to use ffmpeg over imagemagick? I was under the impression that ffmpeg is tailored for videos, and imagemagick for pictures.

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

      No, he says as much (something like "there are tons of ways, use what ever you want")
      I'm guessing he just had a good workflow set up for ffmpeg that he was familiar with, so he threw the images at it because he could :P

  • @anajafriday
    @anajafriday 11 місяців тому

    what if we want to optimize video for lazy loading ,did you have any video on that

  • @codeHacks254
    @codeHacks254 Рік тому

    Do you know anything about prefetching?

  • @krateskim4169
    @krateskim4169 Рік тому

    That was amazing

  • @tgdb-ace
    @tgdb-ace Рік тому

    The lack of use of js here till the end makes my day

  • @cryptobrarry
    @cryptobrarry Рік тому

    it is simply. But responsive, autoresizable, crossbrobser (jpg WEBP AVIF) and auto x2 for retina - a little BIT harder

  • @vkm27812
    @vkm27812 4 місяці тому

    While working with react should I implement the lazy loading with react js or vanilla js

  • @1gabrielroman
    @1gabrielroman Рік тому +3

    It is a sexy solution. But after I've tried it I found something a bit fancier with less boilerplate. Try to use Verlok's vanilla-lazyload (only 2kb) with on-the-fly generated svgs (you can put the loading animation inside the svg template). It ends up having a bit more bytes around (400b to 2kb depinding on resolution) but the fun thing is it only requests it once for each resolution. So in your example you can use a standard 500x500 svg and you would have 1 request for the loading and the placeholder.

  • @MrJettann
    @MrJettann Рік тому +2

    That's cool, but what to do with dynamically fetched images? It's there a way to do the same trick?

    • @black_platypus
      @black_platypus Рік тому

      Hmm, not if the images you're fetching don't provide progressive loading or also have a small variant.
      You'd have to just get the most important images or versions as fast as possible, and use generic placeholders/colors in the meantime

    • @YuriG03042
      @YuriG03042 Рік тому

      use skeletons instead