A number of improvements have been made to the lazy loader. The goal is to generally improve efficiency and make dynamically-sized embeds such as tweets as nondisruptive as possible.
The size of dynamically-sized embeds (e.g. tweets) is cached locally in the browser. This will improve the user experience on repeat viewing or when the same embed is shown multiple times on a page.
Visible embeds are loaded as soon as possible. Previously, the lazy loader waited a tiny fraction of time (32 ms) before checking for visible embeds while the page is loading. Combined with the aforementioned caching, it can reduce and even eliminate Cumulative Layout Shift.
The visibility of all embeds in collapsed quotes is now checked to determine whether they should be loaded. Previously this only applied to regular-sized embeds such as YouTube videos, and has now been extended to all embeds. This means that an embedded tweet in a collapsed quote is not loaded unless it is at least partially visible.
Overloaded URL tags in the form [URL media=...] are now processed as and counted as [MEDIA] tags and should be subject to the same restrictions. Thanks to Xon for the helpful report.
Note that support for XenForo 2.0 and 2.1 has become harder for me to guarantee and will be phased out in future releases. If you haven't upgraded to XenForo 2.2 yet, let me know.
Embedded tweets have been slightly restyled to show some sort of placeholder while the actual content is loading. The height of embedded tweets is now cached within the browser, which may improve the user experience on repeat viewings.
TikTok and WSHH have been updated.
Experimental support for Guzzle has been added, disabled by default.
Guzzle is a PHP library used by XenForo to retrieve data from external sources. This add-on uses native cURL calls for the same purpose. If this means anything to you and you want this add-on to use the same Guzzle client as XenForo, you can add the following to your config.php file:
$config['http']['s9e.client'] = 'guzzle';
Future versions of this add-on may default to using Guzzle if it proves beneficial.
The handling of line breaks around media embeds has been changed to match the text layout more closely and be more consistent with XenForo's default media sites:
When two BBCodes are on the same line, the two embeds are on the same line.
When two BBCodes are on consecutive lines, the two embeds are on consecutive lines.
When two BBCodes are separated by a blank line, the two embeds are separated by a blank line.
The default behaviour in XenForo is similar, with the difference that it is not possible to have two embeds on the same line using XenForo's default media sites. The technical implementation is different though: while XenForo uses block elements and removes line breaks around media embeds, this add-on uses inline blocks and does not remove line breaks after its embeds.
You can tweak the layout of this add-on's embeds in CSS via your extra.less template. For example, you can force this add-on's embeds to be displayed as block elements using the following snippet: