Lazy loading on instagram images to improve performance

lazy load can help a website that use this plugin (totally media center) to improve the general performance loading the images on-scroll only

  • Guest
  • Nov 16 2019
  • Future consideration
  • Attach files
  • Chris Freer commented
    16 Nov 09:42am

    Hi, being able to lazyload or reduce the image size would help alot with Google mobile page load times.


  • Admin
    Helga Kirsanova commented
    30 Jun 02:11pm

    Dear folks,

    Thanks a lot for adding this idea and for your comments!

    We do understand how needed this option is for you and I'm truly sorry that we don't support it yet.

    We've tried to talk this option through, however, it did appear to be more complicated than we expected. To release the lazy load function, we'll have to implement a major update for the whole widget which is a very complex task.

    We're not going to give up on this idea of course, and we will definitely keep trying to find maybe other ways to make this option real. But unfortunately, we cannot promise that this will be done in near future.

    I'm so very sorry to bring such news, and I do believe we will be able to have this option released sooner.

    Thank you so much for your understanding! 🙏🏻

  • Jens Martsch commented
    30 Jun 09:58am

    43 at the moment, and still "under consideration". It has been 1.5 years now, since this was posted.

  • Jens Martsch commented
    20 Mar, 2020 02:59pm

    Lazysizes with unveilhooks is a good option for this. However there should be a native solution.

    It can be done like this with plain JavaScript(ES6 format) and a little help of jQuery (you could also rewrite this without using jQuery):

    let instagramFeedScrollDistance;

    let instagramLoaded = false;

    function lazyLoadInstagramFeed() {

    let scrollDistance = $(window).scrollTop();

    let windowHeight = $(window).height();

    if ((scrollDistance >= (instagramFeedScrollDistance - windowHeight)) && !instagramLoaded) {

    let instagramScript = $.getScript('//apps.elfsight.com/p/platform.js');

    instagramLoaded = true;

    }

    }

    $(() => {

    const feed = $('.class-with-your-app-id');

    if (feed.length) {

    instagramFeedScrollDistance = feed.offset().top;

    instagramLoaded = false;

    $(window).on('scroll', lazyLoadInstagramFeed);

    lazyLoadInstagramFeed();

    }

    });

    A native approach with IntersectionObserver would be even better, but isn't suppported in IE.

  • Patrick commented
    2 Mar, 2020 10:38pm

    Hi guys,

    I managed to workaround this using the lazysizes JS library and their unveilhooks extension

    https://github.com/aFarkas/lazysizes

    https://github.com/aFarkas/lazysizes/blob/gh-pages/plugins/unveilhooks/ls.unveilhooks.js

    <div class="lazyload" data-script="link-to-elfsight-widget.js"></div>