medusa-product-features
A product features catalogue for Medusa v2
Adds the icon-title-subtitle list most product pages need — managed once as a global catalogue, assigned and ordered per product, and read by the storefront through a public store route.
Language
TypeScript
Licence
Not yet declared
Status
Beta
Repository
webloomlabs/medusa-product-features
Requires
MedusaJS v2
Store route
GET /store/products/:id/features
Why it exists
The same list,
retyped on every product
Nearly every commerce build needs the same block on a product page: three or four features, each an icon with a title and a line under it. Breathable. Machine washable. Ships in 48 hours.
Without somewhere to put them, they end up in the product description as hand-formatted HTML, or as metadata fields retyped per product — which means an icon change is a hundred edits and a typo is permanent.
This makes them a first-class thing: one catalogue in Settings, assigned to products and ordered per product, and exposed to the storefront through a single route. Editing a feature edits it everywhere it appears.
What it does
What medusa-product-features gives you
The short version of the README. The repository has the rest, including what medusa-product-features does not do yet.
A global catalogue
Settings → Product Features, with create, edit and delete for a title, an optional subtitle, and an optional icon image.
Assigned per product
A widget on the product detail page picks features from the catalogue for that product, so nothing is retyped.
Ordered per product
The link carries a rank, so the same feature can sit first on one product and third on another.
One public store route
GET /store/products/:id/features returns the ordered list with ids, titles, subtitles and icons — no admin token, no over-fetching.
Workflow-based
Create, update, delete and bulk assignment are Medusa workflows, so they compose with the rest of your backend rather than sitting beside it.
Native admin UI
A Settings page and a product-detail widget built with the Medusa Admin SDK, so it looks like part of the dashboard.
Getting started
Adding it to a Medusa project
The plugin is published locally for now — build it and link it with yalc or a watch build, then register it.
1. Register the plugin
// medusa-config.ts
module.exports = defineConfig({
plugins: ["product-features"],
});2. Run the migrations
npx medusa db:migrateCreates the Feature model in the productFeatures module and the many-to-many product link that carries the per-product rank.
Built with