Shopping (React Native)
Shopping configurations
Customize shopping click behaviors
Product Hydration
FireworkSDK.getInstance().shopping.onUpdateProductDetails = async (event) => {
let products: Product[] = [];
for (let productId of event.productIds) {
let product: Product = { productId: productId };
// The latest product information can be fetched from the servers of the host app.
// Product-level properties
product.name = "latest-product-name";
product.subtitle = "latest-product-subtitle";
// Product-level currency string (e.g. "USD", "EUR")
product.currency = "USD";
product.description = "latest-product-description";
product.isAvailable = true;
product.mainProductImage = "https://example.com/product-image.jpg";
// Set to true to hide the product price
product.hidePrice = false;
// The translated custom CTA title displayed to the user
product.customCTATitleTranslation = "Buy Now";
// Set to true to hide the primary CTA button
product.hidePrimaryCTA = false;
product.customCTATarget = "_blank";
product.customCTAUrl = "https://example.com/product";
// The custom CTA title key (untranslated)
product.customCTATitle = "Add to Cart";
// Set to true to hide the product, or false to keep it visible
product.hidden = true;
// Product units (variants)
// IMPORTANT: unitId must match the unit id from the Firework SDK.
// The SDK matches units by unitId to determine which variant to hydrate.
// Only matched units will be updated; unmatched ones retain their original values.
product.units = [
{
unitId: "unit-id-1",
name: "Variant 1",
url: "https://example.com/product/variant-1",
imageUrl: "https://example.com/variant-1-image.jpg",
// Current selling price
price: {
amount: 19.99,
currencyCode: "USD",
},
// Original price before discount (used to show strikethrough price)
originalPrice: {
amount: 39.99,
currencyCode: "USD",
},
// Whether this variant is available for purchase
isAvailable: true,
// Variant options such as color, size, etc.
options: [
{ name: "Color", value: "Red" },
{ name: "Size", value: "M" },
],
},
{
unitId: "unit-id-2",
name: "Variant 2",
url: "https://example.com/product/variant-2",
imageUrl: "https://example.com/variant-2-image.jpg",
price: {
amount: 24.99,
currencyCode: "USD",
},
originalPrice: {
amount: 49.99,
currencyCode: "USD",
},
isAvailable: false,
options: [
{ name: "Color", value: "Blue" },
{ name: "Size", value: "L" },
],
},
];
products.push(product);
}
// Return the hydrated product list to the SDK.
// All properties are optional except productId and unitId.
// Only set the properties you want to override;
// unset properties will retain their original values from the SDK.
return products;
};Reference
Last updated
Was this helpful?