Skip to main content
Version: 9.1

Changelog

Changelog​

v9.1.33 - [23/09/2026]​

Added:​

  • analytics:
    • index property on entry.added, entry.deleted, and product.show (0-based position in the recipe shopping list).

Updated:​

  • analytics:
    • Bumped mealz-shared-analytics to ^4.16.0.

Fixed:​

  • basket-transfer: ITM (pdvref) waits for pos.extId to match before /baskets/transfer (after ITM pos.load() on view refresh). Cookie polling and location.reload() were removed so to avoid cancelling mid basket-synchro. (#12451cu3t6d)

v9.1.32 - [17/09/2026]​

Added:​

  • analytics:
    • Viewport-based product.show on recipe details product cards (≥80% visible for 1s, deduped per recipe_id:item_id per visit, no re-fire on scroll or replace/back).
  • analytics-service / basket-preview-line:
    • Add product_base_price (basketEntry.price, "0" when missing) to entry.added and entry.deleted

Updated:​

  • analytics:
    • Bumped mealz-shared-analytics to ^4.15.0 so product.show is a known event (sendEvent no longer drops it). Includes product_base_price from 4.14.0.

Internal​

  • Transpile mealz-shared-analytics in the WebC webpack build and Jest (Kotlin/JS ?? is not parsed by Angular 11 / Node 12)

v9.1.31 - [21/08/2026]​

Fixed:​

  • window.mealz.analytics — attachRecipeCardShowTracking always uses the current page URL (location.href); analyticsPath is not part of the public API (#86cb88rwy).

v9.1.30 - [09/07/2026]​

Added:​

  • window.mealz.analytics:
    • attachRecipeCardShowTracking({ element, recipeId, categoryId?, analyticsPath? }) attaches viewport-based recipe.show tracking on a custom recipe card root (same rules as mealz-recipe-card: ≥80% visible for 1s, deduped until the user scrolls). Returns { disconnect() } for teardown on virtual lists or SPA navigation.

Internal:​

  • recipe-card-show-tracker / attach-recipe-card-show-tracking / viewport-listener:
    • SDK-side implementation of the recipe show pipeline; tracker singleton is stored on window.__mealzRecipeCardShowTracker__ so dedup stays shared with Lit recipe cards.

v9.1.29 - [24/04/2026]​

Fix:​

  • mealz.openDetails
    • Now force path to '' to avoid analytics errors

v9.1.28 - [24/04/2026]​

Internal​

  • Update mealzSharedAnalytic version to 4.13.0

v9.1.27 - [20/04/2026]​

Updated:​

  • mealz - mealzInternal:
    • recipes.openDetails accepts the planner flag as fifth argument and optional categoryId as sixth argument; when a string is passed as fifth argument it is still treated as the legacy categoryId.
  • mealzInternal:
    • recipes.updateRecipeLike accepts an optional categoryId and forwards it in the like/unlike event trace.

Fixed:​

  • analytics-service:
    • recipe.add now forwards category_id when it is present in the basket action event trace.

v9.1.26 - [26/02/2026]​

Added​

  • mealz:
    • Expose recipes.openDetails to open recipe details (previously only on mealzInternal)

v9.1.25 - [12/06/2026]​

Updated:​

  • Update mealzSharedAnalytics to 4.12.0

Internal:​

  • context:
    • Add optional journey parameter to sendEvent and forward it to mealzSharedAnalytics
  • journey:
    • Use URL-based helper to compute journey (e.g. meals-space-header when from=header)

v9.1.24 - [03/12/2025]​

Internal​

  • context-recipes
    • Add extStoreId in internal recipes getPricing

v9.1.23 - [28/11/2025]​

Updated:​

  • sponsor-storytelling
    • Change spacing between sponsor blocks
  • Update mealzSharedAnalytics to 4.10.0

Internal:​

  • analytics-service - baskets-service
    • Add journey to entry.added event
    • Send entry.added event after request completion
    • Add add_source to entry.added event

v9.1.22 - [23/10/2025]​

Updated:​

  • Update MealzSharedAnalytics to 4.7 and add environment parameter on init

v9.1.21 - [25/09/2025]​

Added​

  • basket-transfer: Added ITM supplier support with pdvref handling (left unchanged except on navigation where it is zero-padded to at least 5 chars) and cookie-based POS detection

v9.1.20 - [01/09/2025]​

Fixed:​

  • recipe-details:
    • Update product-cards when the selected-item of an ingredient changes after modifying the number of guests

v9.1.19 - [23/06/2025]​

Updated:​

  • mealzInternal:
    • Replaced recipePricesInBasket$ to recipeDataInBasket$ and added guests to attributes

v9.1.19 - [23/06/2025]​

Updated:​

  • mealzInternal:
    • Replaced recipePricesInBasket$ to recipeDataInBasket$ and added guests to attributes

Removed:​

  • pricebook:
    • No more used, we removed all related code

v9.1.18 - [16/06/2025]​

Updated:​

  • basket-recipe-cleanup:
    • Now when adding product(s), if it fails, it checks if the recipe has active entries, if not it removes the recipe from users basket
  • recipe-modal:
    • Removed singleton service unsubscribe to prevent listener stopping

Fixed:​

  • recipe-modal: Fixed store-locator behavior to only open in noSupplier mode and prevent opening when PoS hasn't loaded
  • recipes
    • Resolved an issue where the loadRecipes function failed to load recipe titles when reloading the view, causing the recipe titles to appear blank in the basket preview

v9.1.17 - [10/06/2025]​

Updated:​

  • Update wording for last order title in recipe-details, title and text in last-order modal

v9.1.16 - [05/06/2025]​

Internal:​

  • mealzInternal:
    • Added recipes.getRecipeLike to fetch the recipe-like for a recipeId

v9.1.15 - [25/04/2025]​

Updated:​

  • my-meals:
    • Now when removing every active ingredients from a meal, it gets removed from the basket

Internal:​

  • basket-recipe-cleanup:
    • Created service to handle removing recipe without active basket entries

v9.1.14 - [18/04/2025]​

Fixed:​

  • product-card:
    • Out of stock overlay now adapts to header height
  • out-of-stock:
    • Now when succeeding in adding a product out-of-stock, it removes it from storage and prevent forcing the status from 'active' to 'out_of_stock'
  • miam-ds:
    • Update to 1.2.6

v9.1.13 - [14/04/2025]​

Merged 9.0.11 in 9.1 -> See v9.0.11 for changes

Fixed:​

  • recipe-details:
    • Fixed issue where updating guest number tried to update "deleted" ingredients

Updated:​

  • replace-item:
    • Prevent adding out-of-stock products by disabling CTA
    • On replace time out, it navigates to previous page rather than just removing loaders

v9.1.12 - [04/04/2025]​

Fixed:​

  • basket-sync:
    • Replacing a product with the same quantity could result in a quantity of 0

v9.1.11 - [03/04/2025]​

Fixed:​

  • recipe-details:
    • Fixed null error on out-of-stock check

v9.1.10 - [03/04/2025]​

Fixed:​

  • recipe-details
    • Fixed an issue where opening recipe-details from SSR did not correctly update the guest count
  • basket-sync:
    • Does not send to retailer actions with a quantity of 0 anymore
    • Compared quantity to add with the quantity of deleted entries, resulting in ADD actions with negative quantities
  • basket-preview:
    • Price was displayed on 3 lines

Internal:​

  • store-out-of-stock-service:
    • Now when adding a product times out, it updates its status into out-of-stock and store it in session-storage

v9.1.9 - [28/03/2025]​

Fixed:​

  • preferences:
    • Filter tags by supplier

Internal:​

  • Remove tagsWhitelist from:
    • environment.ts
    • environment.uat.ts
    • environment.prod.ts

v9.1.8 - [26/03/2025]​

Fixed:​

  • recipes-service:
    • Turned recipeDetailsOpened$ to a Subject to prevent stale data emissions on init

v9.1.7 - [21/03/2025]​

Fixed:​

  • Translations files after 9.1.6

v9.1.6 - [21/03/2025]​

Fixed:​

  • meals-planner:
    • Can now open again list of ingredients from recipe in the meals planner view
  • replace-item:
    • Fixed replacing item from the product view in basket-preview
  • order-history:
    • Fixed drawer script was called twice when order-history was called in webc
    • Fixed favorites tab did not work when order-history was called in webc
    • Fixed calls to ssr were blocked because they were caught by the interceptor
    • SDK now uses mealz-components@1.2 as history does not exist in 0.7
  • basket-sync:
    • Basket-sync could sometimes try to compare the retailer cart & the basket before fetching the entries, resulting in not deleting the entries that were not in the retailer cart anymore

Internal:​

  • analytics:
    • Handle journey property on events

v9.1.5 - [07/02/2025]​

Added:​

  • window.mealz.basketSync:
    • Added defineAddProductsToCart and defineRemoveProductsFromCart as an optional replacement for definePushProductsToCart to separate products added and removed

Fixed:​

  • replace-item:
    • Fix error when trying to replace an item that was unavailable
  • preferences:
    • Removed unnecessary tags requests that were done on script init
  • analytics:
    • Event methods are now queued if library is not initialised yet instead of not being sent

Internal:​

  • recipe-details:
    • Use price from BasketEntry instead of fetching items/price
  • basket-preview-product:
    • Use price from BasketEntry instead of fetching items/price

v9.1.4 - [31/01/2025]​

Internal:​

  • analytics:
    • Fixed analytics disabling needed two separate tokens on the client side

v9.1.3 - [31/01/2025]​

Fixed:​

  • basket:
    • Fixed incorrect field name on recipes fetch which made the request return more data than necessary

v9.1.2 - [17/01/2025]​

Fixed:​

  • recipe-details
    • Price briefly showing "0,00 €" when reopening a recipe in the cart. The price is now hidden during loading

Internal:​

  • pricings:
    • Updated price_per_serve attribute to price-per-serve

v9.1.1 - [10/01/2025]​

Added:​

  • recipe-catalog
    • Add search functionality to history tab

Updated:​

  • analytics:
    • Can now disable events tracking from supplierToken
  • packages:
    • Now when retrieving packages, we filter with forced_completion_perc to prevent replacing sponsored product with a non-sponsored one
  • history:
    • The "explore our catalog" button when there is no order history now redirects to the catalog url defined with mealz.router.setRecipeCatalogUrl('...')
  • drawer-history:
    • Now refreshing page with drawer history opened will open it back
  • recipe-card:
    • Added the attribute aria-hidden="true" to recipe picture as redundant with recipe label

Fixed:​

  • analytics:
    • Called setAffiliate method when the value changes from localStorage
  • basket-synchro:
    • Fix skip condition that was wrongly update from === 0 to < 1
  • replace-item:
    • Fix regression where selected item was not at the top of the list
  • store-locator:
    • getByCoordinates had inverted coordinates parameters in miam-interface

Internal:​

  • window.mealzInternal.user.setSessionId:
    • New method to synchronize the session ID with SSR

Merged 9.0.8 in 9.1 -> See v9.0.8 for changes

v9.1.0 - [20/12/2024]​

Added:​

  • promotions:
    • New promotion badges on product cards and on replace-item cards, also displays the old and new price before / after the promotion
    • New promotion badge on recipe cards
    • New promotions banner on catalog page, it is hidden by default and must be displayed manually
  • recipe-details
    • Displayed a "Last Order" badge showing the date of the user's most recent order (if applicable)
    • Added the logic for the "Last Order" modal
    • Added a banner under the recipe steps in the "Cooking" tab to allow users to reorder previously ordered recipes
    • Can now replace unavailable products
  • last-order-modal
    • Created a component triggered by clicking the "Last Order" badge, allowing users to reorder recipes not currently in their basket
  • basket-preview
    • Add footer to redirect to client's cart
  • analytics:
    • New basket.display event sent on click on "X recipes in your basket" in catalog
    • New home.display event sent on click on "See more recipes" in recipe details
    • New recipe.shopping.display event sent on click on "Shopping" in recipe details
    • New recipe.coooking.display event sent on click on "Cooking" in recipe details
    • New entry.ignore event sent on click on "Ignore" in product card
    • New entry.replace event sent on click on "Replace" or "Choose a product" in product card
  • window.mealz.basket.openPreview:
    • New analyticsPath property for analytics
  • window.mealz.user:
    • Added a method loadWithAuthlessId: (id: string, forbidProfiling?: boolean) => void to inform Mealz of the authless-id fetched with the SSR route /generate-authless-token
    • Added a method updateForbidProfiling: (forbidProfiling: boolean, userId: string, isAuthless: boolean) => void to inform Mealz that the profiling permission has changed during execution. It can be used for both logged mode and authless mode (ex: logged user : updateForbidProfiling(true, 'user-id') | authless user: updateForbidProfiling(true, 'MEALZ-AUTHLESS-12345', true))

Updated:​

  • catalog-header
    • Header label changes to "My space" when history is enabled; otherwise, it remains "Favorites"
  • catalog-toolbar
    • "Filters" and "Preferences" buttons are now hidden in the "Favorites" page
    • "Filters" and "Preferences" are not applied in the "Favorites" page
    • Button label changes to "My space" when history is enabled; otherwise, it remains "Favorites"
  • recipe-catalog
    • Text changes to "My space" when history is enabled; otherwise, it remains "Favorites"
    • Display "Favorites" and "History" tabs when history is enabled
    • History content is shown only when order history is enabled.
  • recipe-details
    • Removed the footer with the CTA "Add X products (XX,XX€)" in the "Cooking" tab
  • products-picker:
    • Unavailable products now display into the default section
  • product-card:
    • New view for unavailable state
  • modal
    • Adjusted CSS using ">" selectors to prevent styles from affecting multiple simultaneously displayed modals
    • Removed the footer with the CTA "Add X products (XX,XX€)" in the "Cooking" tab
  • product-card-skeleton:
    • Updated design regression
  • window.mealz.supplier.setupWithToken
    • Now checks for orderHistory attribute in the supplier token and sets orderHistoryEnabled accordingly
  • in-viewport:
    • Handle unsubscription to prevent memory leaks
  • basket-preview-line:
    • Updated recipe total price to take in account discounted products

Fixed:​

  • preferences:
    • Fix issue where removing every preferences manually wouldn't remove them from the cache

Internal:​

  • window.mealzInternal.analytics:
    • New sendEvent method to send analytics events via mealz-shared-analytics
  • window.mealzInternal.recipes.openDetails:
    • New analyticsPath and categoryId properties for analytics
    • Added a parameter to open the recipe details on a specific tab
  • window.mealzInternal.recipes.updateRecipeLike:
    • New path property for analytics
  • price-service:
    • Add new service to handle prices display
  • basket-entries:
    • Add new price attribute to basket entries type
  • prices:
    • Changed prices type from string to number
  • unavailable-badge:
    • Created new components to display the number of unavailable products and on unavailable products itself
    • Add scroll to product card event
  • out-of-stock-overlay:
    • Created new component that overlay product card when a product is out of stock