Skip to main content
The <RelatedProducts> component displays product recommendations based on the current product.

Import

import { RelatedProducts } from 'react-instantsearch';

Props

objectIDs
string[]
required
The object IDs to get related products for.
<RelatedProducts objectIDs={['product-123']} />
limit
number
Maximum number of recommendations to display.
<RelatedProducts objectIDs={['product-123']} limit={5} />
threshold
number
Threshold for the recommendation score.
<RelatedProducts objectIDs={['product-123']} threshold={0.5} />
queryParameters
object
Additional query parameters for the recommendation request.
<RelatedProducts
  objectIDs={['product-123']}
  queryParameters={{
    analytics: true,
  }}
/>
fallbackParameters
object
Fallback parameters when not enough recommendations are found.
<RelatedProducts
  objectIDs={['product-123']}
  fallbackParameters={{
    filters: 'available:true',
  }}
/>
escapeHTML
boolean
default:"true"
Whether to escape HTML in the results.
transformItems
function
Transform the recommendation items before displaying them.
<RelatedProducts
  objectIDs={['product-123']}
  transformItems={(items) =>
    items.map((item) => ({
      ...item,
      discounted: item.price * 0.9,
    }))
  }
/>
itemComponent
React.Component
Custom component to render each recommendation item.
<RelatedProducts
  objectIDs={['product-123']}
  itemComponent={({ item }) => (
    <div>
      <img src={item.image} alt={item.name} />
      <h4>{item.name}</h4>
      <p>${item.price}</p>
    </div>
  )}
/>
headerComponent
React.Component
Custom component to render the header.
emptyComponent
React.Component
Custom component to render when there are no recommendations.
layoutComponent
React.Component
Custom component to control the layout of items.
classNames
object
CSS classes to customize the component styling.

Example

import { InstantSearch, RelatedProducts } from 'react-instantsearch';
import { liteClient as algoliasearch } from 'algoliasearch/lite';

const searchClient = algoliasearch(
  'YourApplicationID',
  'YourSearchOnlyAPIKey'
);

function ProductPage({ productId }) {
  return (
    <InstantSearch searchClient={searchClient} indexName="products">
      <RelatedProducts
        objectIDs={[productId]}
        limit={4}
        itemComponent={({ item }) => (
          <div className="product-card">
            <img src={item.image} alt={item.name} />
            <h4>{item.name}</h4>
            <p>${item.price}</p>
            <button>View Details</button>
          </div>
        )}
      />
    </InstantSearch>
  );
}