Switch Instagram embeds to iframe-only approach

Summary

Replace InstagramPlugin (which loads external embed.js script) with InstagramEmbedder that generates iframes directly, following the same pattern as YouTube, Vimeo, and 3speak.

Changes

  • Add InstagramEmbedder extending AbstractEmbedder
  • Register in AssetEmbedder
  • Remove InstagramPlugin from blog renderer plugins
  • Add test coverage

Benefits

Aspect Before (Plugin) After (Embedder)
External scripts embed.js loaded None
CSP required script-src + frame-src frame-src only
Eager loading Yes (issue #786 (closed)) No
Consistency Different from YouTube/Vimeo Same pattern

Embed Output

<div class="instagramWrapper">
  <iframe src="https://www.instagram.com/p/POST_ID/embed/" ...></iframe>
</div>

Testing

  • Unit tests added for InstagramEmbedder
  • Manual testing recommended with posts containing Instagram links

Relates to #786 (closed)

Merge request reports

Loading