Lazy Loading & Code Splitting

How should lazy loading be implemented for third-party widgets or social media embeds?
const loadFacebookWidget = () => {
  const script = document.createElement('script');
  script.src = 'https://connect.facebook.net/en_US/sdk.js';
  script.async = true;
  script.defer = true;
  document.body.appendChild(script);
};

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      loadFacebookWidget();
      observer.disconnect();
    }
  });
});
Next Question (15/20)