Taurus Hyva SVG Sprite
taurus-media/module-hyva-svg-sprite 68
Optimizes SVG icon rendering in Hyva themes by automatically collecting individual inline SVG icons into a single hidden sprite and replacing each occurrence with a lightweight reference tag, reducing DOM size with zero configuration.
Build Tests
Code Quality
Release Discipline
Release history audited up to v1.0.1
Tested on Magento 2.4.9
Recent Test History
Each release is tested against the latest Magento version at that time.
Top Contributors
View LeaderboardShare This Module's Status
README
Loaded from GitHubTaurus HyvaSvgSprite
The Taurus_HyvaSvgSprite module optimizes SVG rendering in Hyva themes by automatically converting individual SVG icons into a single SVG sprite.
Overview
In standard Hyva themes, icons are rendered as individual <svg> elements directly in the HTML. While efficient, this can lead to a larger DOM size if many icons are used or if the same icon is repeated multiple times.
This module intercepts the Hyva\Theme\ViewModel\SvgIcons::renderHtml method. Instead of returning the full SVG content, it:
- Adds the icon to a centralized
SvgSpriteViewModel. - Returns a light
<svg><use href="#icon-id" /></svg>tag. - Renders all collected icons as
<symbol>elements within a hidden<svg>sprite at the bottom of the page (before the</body>tag).
Cached blocks
Blocks loaded from the block_html cache (e.g. Hyva product list items, catalog product widgets) never call
renderHtml, so their icons can't register themselves in the sprite. To cover this:
- every symbol added to the sprite is also stored in a persistent registry (
HYVA_SVG_SPRITE_REGISTRY, kept in theblock_htmlcache type, so it is flushed together with the cached blocks); - the
view_block_abstract_to_html_afterobserver (Observer\CollectCachedIcons) scans each block's output (cache hits included) for<use href="#icon-...">and adds the missing symbols from the registry.
Only blocks rendered before the sprite block (before.body.end) are covered.
Features
- Performance Optimization: Reduces the overall size of the HTML document by reusing SVG definitions.
- Automatic Integration: No changes needed to existing templates. It automatically plugins into Hyva's standard icon rendering logic.
- Zero Configuration: Works out of the box once enabled.
Installation
Via Composer
-
Install the module:
composer require taurus-media/module-hyva-svg-sprite -
Run the following Magento commands:
bin/magento module:enable Taurus_HyvaSvgSprite bin/magento setup:upgrade bin/magento cache:flush
Manual Installation
- Copy the module files to
app/code/Taurus/HyvaSvgSprite. - Run the following Magento commands:
bin/magento module:enable Taurus_HyvaSvgSprite bin/magento setup:upgrade bin/magento cache:flush
This content is fetched directly from the module's GitHub repository. We are not the authors of this content and take no responsibility for its accuracy, completeness, or any consequences arising from its use.