Changelog
Changelog
v9.1.33 - [23/09/2026]
Added:
- analytics:
indexproperty onentry.added,entry.deleted, andproduct.show(0-based position in the recipe shopping list).
Updated:
- analytics:
- Bumped
mealz-shared-analyticsto^4.16.0.
- Bumped
Fixed:
- basket-transfer: ITM (
pdvref) waits forpos.extIdto match before/baskets/transfer(after ITMpos.load()on view refresh). Cookie polling andlocation.reload()were removed so to avoid cancelling mid basket-synchro. (#12451cu3t6d)
v9.1.32 - [17/09/2026]
Added:
- analytics:
- Viewport-based
product.showon recipe details product cards (≥80% visible for 1s, deduped perrecipe_id:item_idper visit, no re-fire on scroll or replace/back).
- Viewport-based
- analytics-service / basket-preview-line:
- Add
product_base_price(basketEntry.price,"0"when missing) toentry.addedandentry.deleted
- Add
Updated:
- analytics:
- Bumped
mealz-shared-analyticsto^4.15.0soproduct.showis a known event (sendEventno longer drops it). Includesproduct_base_pricefrom 4.14.0.
- Bumped
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 —
attachRecipeCardShowTrackingalways uses the current page URL (location.href);analyticsPathis not part of the public API (#86cb88rwy).
v9.1.30 - [09/07/2026]
Added:
- window.mealz.analytics:
attachRecipeCardShowTracking({ element, recipeId, categoryId?, analyticsPath? })attaches viewport-basedrecipe.showtracking on a custom recipe card root (same rules asmealz-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.
- SDK-side implementation of the recipe show pipeline; tracker singleton is stored on
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.openDetailsaccepts the planner flag as fifth argument and optionalcategoryIdas sixth argument; when a string is passed as fifth argument it is still treated as the legacycategoryId.
- mealzInternal:
recipes.updateRecipeLikeaccepts an optionalcategoryIdand forwards it in the like/unlike event trace.
Fixed:
- analytics-service:
recipe.addnow forwardscategory_idwhen it is present in the basket action event trace.
v9.1.26 - [26/02/2026]
Added
- mealz:
- Expose
recipes.openDetailsto open recipe details (previously only on mealzInternal)
- Expose
v9.1.25 - [12/06/2026]
Updated:
- Update mealzSharedAnalytics to 4.12.0
Internal:
- context:
- Add optional
journeyparameter tosendEventand forward it to mealzSharedAnalytics
- Add optional
- journey:
- Use URL-based helper to compute
journey(e.g.meals-space-headerwhenfrom=header)
- Use URL-based helper to compute
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_sourceto 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
pdvrefhandling (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$torecipeDataInBasket$and addedgueststo attributes
- Replaced
v9.1.19 - [23/06/2025]
Updated:
- mealzInternal:
- Replaced
recipePricesInBasket$torecipeDataInBasket$and addedgueststo attributes
- Replaced
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
loadRecipesfunction failed to load recipe titles when reloading the view, causing the recipe titles to appear blank in the basket preview
- Resolved an issue where the
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
journeyproperty on events
- Handle
v9.1.5 - [07/02/2025]
Added:
- window.mealz.basketSync:
- Added
defineAddProductsToCartanddefineRemoveProductsFromCartas an optional replacement fordefinePushProductsToCartto separate products added and removed
- Added
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_serveattribute toprice-per-serve
- Updated
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
=== 0to< 1
- Fix skip condition that was wrongly update from
- 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
analyticsPathproperty for analytics
- New
- window.mealz.user:
- Added a method
loadWithAuthlessId: (id: string, forbidProfiling?: boolean) => voidto inform Mealz of the authless-id fetched with the SSR route /generate-authless-token - Added a method
updateForbidProfiling: (forbidProfiling: boolean, userId: string, isAuthless: boolean) => voidto 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))
- Added a method
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
analyticsPathandcategoryIdproperties for analytics - Added a parameter to open the recipe details on a specific tab
- New
- window.mealzInternal.recipes.updateRecipeLike:
- New
pathproperty for analytics
- New
- 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