All open source
PluginBetaTypeScript

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:migrate

Creates the Feature model in the productFeatures module and the many-to-many product link that carries the per-product rank.

Built with

What is under it

TypeScriptMedusaJS v2Medusa WorkflowsMedusa Admin SDKReact

Work with us

Have something you want built?

Small enough to care about the details. Experienced enough to build the difficult parts. Tell us about the problem and we'll come back with a technical direction, scope, and timeline.

You work directly with the people building your product.