📚 Documentation · 🚀 Live demo · 💬 Discussions
OBSIDIAN — the default MageObsidian storefront theme for Magento 2, built with Vite, Tailwind CSS 4, Vue islands and Twig components. See it live at the demo store (Lighthouse 100/100/100/100).
This theme's end-to-end suite and the registers that went with it now live in
mage-obsidian/storefront-verification. They were never only about this
theme: almost every finding they carry is about the platform's layout handles and
the nineteen storefront modules, and the escaping register classifies
theme-base templates too — keeping them here made one component own the record
of the whole product.
Every register that repository generates pins the revision of this one and of
theme-base, so a change here shows up over there instead of quietly
invalidating it.
composer require mage-obsidian/theme-default
bin/magento setup:upgrade
bin/magento mage-obsidian:frontend:config --generateThen rebuild your theme (mage-obsidian:build-themes). Full guide: documentation.
The theme is Twig throughout, with four deliberate exceptions. Each one exists to fix a defect in the core template it replaces, and each says so in its own header:
| Template | What it fixes |
|---|---|
Magento_Msrp::product/price/msrp.phtml |
The native MAP popup needs RequireJS; its inline scripts leak as visible text. Re-expressed as a native <details>. |
Magento_OfflinePayments::info/checkmo.phtml |
The native template emits a <dl> with no <dd> unless the check details are configured — a WCAG 1.3.1 violation axe flags. |
Magento_Weee::pricing/adjustment.phtml |
The FPT label lives only in data-label and needs the core Weee JS, which this stack suppresses. Rendered as visible text instead. |
Magento_Newsletter::subscribe.phtml |
Restyled for the dark footer. |
Migrating one to Twig without carrying its fix across reintroduces the defect.
If MageObsidian saves you time, consider buying me a coffee. ❤️