PackageTrack
Sign in Get early access

spryker/product-storage

ProductStorage module

1.56.1 2.5M downloads/mo #4636 most downloaded on Packagist spryker/product-storage

What this package is like to depend on

Last release 3 days ago

20 Aug 2026

Release timing varies

gaps range from 2 weeks to 4 months

Rarely documented

notes for 10 of 86 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

86 releases · first in 2018

13 releases in the last 12 months

see the full history below

Release timeline

86 releases · Jan 2018 to Aug 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 86
  1. 1.56.1 20 Aug 2026
    Release notes

    Included commits: 1.56.0...1.56.1

    Fixes

    • Fixed attribute filtering to correctly handle super attributes with a single value that are filtered out of the variant map but still selected, preventing incorrect variant compatibility checks.
    Open source →
  2. 1.56.0 19 Aug 2026
    Release notes

    Included commits: 1.55.0...1.56.0

    Fixes

    • Fixed product attribute filtering to correctly resolve available attributes when a product variant is selected.
    Open source →
  3. 1.55.0 12 Aug 2026
    Release notes

    Included commits: 1.54.0...1.55.0

    Improvements

    • Improved product storage publishing performance by applying OptimizedSimpleArrayFormatter to bulk concrete product queries, reducing memory usage for projects with large product catalogs.

    Adjustments

    • Updated spryker/propel-orm constraint to ^1.22.0.
    Open source →
  4. 1.54.1 07 Aug 2026
    Release notes

    Included commits: 1.54.0...1.54.1

    Fixes

    • Fixed ProductConcreteStorageCatalogSearcher to populate all product view transfer fields when mapping to ProductConcretePageSearchTransfer, ensuring the full product data is available during concrete product search.
    • Changed visibility of createAttributeMap(), getProductFacade(), and getProductStorageClient() in ProductStorageBusinessFactory from protected to public to allow access from extending classes.
    Open source →
  5. 1.54.0 13 Jul 2026
    Release notes

    Included commits: 1.53.0...1.54.0

    Improvements

    • Extended ProductConcreteStorageCatalogSearcher to map product images from ProductViewTransfer into ProductConcretePageSearchTransfer, enabling product images to be available in catalog search results.

    Overview

    Bug
    On the Configurable Bundle configurator slot page (e.g. /DE/en/configurable-bundle/configurator/2/slots/6), non-selected products rendered without images; only the selected product showed its image.

    Root cause
    Spryker\Client\ProductStorage\ProductConcreteSearch\ProductConcreteStorageCatalogSearcher::mapProductViewTransfersToProductConcretePageSearchTransfers() mapped only fkProduct, fkProductAbstract, sku, name into the ProductConcretePageSearchTransfer and dropped the images. The non-selected product list is rendered by ProductConcreteSearchGridWidget, which consumes these search-result transfers, so it had no image data. The selected product is expanded via a separate path (ConfigurableBundlePage\Expander\ProductConcreteImageExpander) and therefore kept its image.

    Fix
    Carry the images already resolved by the product view expanders into the search-result transfer:

    ->setImages($productViewTransfer->getImages()->getArrayCopy())

    ProductViewTransfer::getImages() returns ArrayObject<ProductImageStorageTransfer>; getArrayCopy() yields array<ProductImageStorageTransfer> matching ProductConcretePageSearchTransfer::setImages(array). Downstream ProductSearchWidget\Mapper\ProductConcreteMapper round-trips via fromArray(toArray()); AbstractTransfer::processArrayObject passes TransferInterface elements through untouched, so images survive. Purely additive — no interface/transfer/schema change (Internal API, MINOR).

    Tests
    Added ProductConcreteStorageCatalogSearcherTest::testGivenProductViewWithImagesWhenSearchingProductConcretesThenMapsImagesToPageSearchTransfer (Client suite) — fails without the fix (images size 0 vs 1), passes with it. Plus an explicit empty-images boundary assertion. Suite green: 12 tests, 26 assertions.

    Verification

    • Runtime on the repro URL: 47/47 products now render a real image data-src (was 1/47).
    • Independent QA accepted across 3 slots (47/47, 51/51, 18/18), no regression to the selected product, invalid slots redirect cleanly.
    • Static: phpcs + phpstan (L6) clean on both changed files.
    Change log
    • Fixed missing product images for non-selected products in the Configurable Bundle configurator by mapping images in ProductConcreteStorageCatalogSearcher.

    Release Table

    | Module | Type | Change |
    |

    Open source →
  6. 1.53.0 02 Jun 2026
    Release notes

    Included commits: 1.52.0...1.53.0

    Improvements

    • Introduced ProductStorageClient::getRawProductCollection() to support batch retrieval of raw product data from storage, enabling product readiness improvements.
    • Introduced ProductStorageRepositoryInterface::getProductAbstractStorageEntriesByIdProductAbstract() to fetch all per-store/locale storage entries for a given product abstract.
    • Enhanced product abstract and concrete storage readiness providers to compare database and Redis storage data, displaying per-entry sync status with timestamps and clickable storage key links to support product readiness improvements.

    Deprecations

    • Deprecated StorageProductAbstractReadinessProviderPlugin in favor of StorageTableProductAbstractReadinessProviderPlugin.
    Open source →
  7. 1.52.0 29 May 2026
    Release notes

    Included commits: 1.51.0...1.52.0

    Improvements

    • Introduced ProductConcreteStorageSearchPlugin to serve concrete product search results from Redis storage via direct SKU lookup and abstract-product fallback, supporting removal of product concretes from the search index.
    • Introduced ProductConcreteSuggestionEnricherPlugin to enrich suggest search results with matching concrete product SKUs loaded from storage when product concretes are not indexed in the search engine.
    • Added spryker/catalog-extension: ^1.2.0 dependency to support the new storage-based search plugin interfaces.
    • Fixed ProductAbstractStorageReader::isProductInCurrentStore() to correctly bypass the store-map check when the unified store storage key is used.
    Open source →
  8. 1.51.0 14 May 2026
    Release notes

    Included commits: 1.50.2...1.51.0

    Improvements

    • Introduced unified KV storage mode for product abstract data to reduce storage consumption: product abstract entries are now stored once per locale under a shared key (instead of per-store keys), with a product_abstract_stores_map field listing which stores carry the product.
    • Introduced ProductStorageConfig::isProductAbstractStorageUnifiedEnabled() on the Zed and Client layers and ProductStorageConfig::isProductAbstractStorageUnifiedFallbackEnabled() on the Client layer to allow incremental migration to unified storage without interrupting URL resolution.
    • Introduced ProductStorageConfig::PRODUCT_ABSTRACT_STORES_MAP and ProductStorageConfig::PRODUCT_ABSTRACT_STORAGE_UNIFIED_STORE_KEY constants to Spryker\Shared\ProductStorage\ProductStorageConfig.
    • Added isProductAbstractStorageUnifiedEnabled() method to the shared ProductStorageConfig to enable consistent configuration across Zed and Client layers.
    • Changed ProductStorageFactory::getStorageClient() visibility from protected to public to support unified storage resolution in URL mapper plugins.
    Open source →
  9. 1.50.2 30 Apr 2026
    Release notes

    Included commits: 1.50.1...1.50.2

    Fixes

    • Fixed ProductCategoryStorageFacade::publish() not removing orphaned storage entries — commit() was missing after processing stale store/locale entries, causing batched deletes to never be flushed to the database.
    Open source →
  10. 1.50.1 30 Apr 2026
    Release notes

    Included commits: 1.50.0...1.50.1

    Fixes

    • Fixed transaction commit after deleting concrete product storage records during publishing of a deactivated product.
    Open source →
  11. 1.50.0 12 Mar 2026

    Nothing published for this version

  12. 1.49.0 11 Mar 2026

    Nothing published for this version

  13. 1.48.0 17 Nov 2025

    Nothing published for this version

  14. 1.47.0 21 Aug 2025

    Nothing published for this version

  15. 1.46.0 06 Aug 2025

    Nothing published for this version

  16. 1.45.0 04 Aug 2025

    Nothing published for this version

  17. 1.44.0 03 Jul 2025

    Nothing published for this version

  18. 1.43.0 20 May 2025

    Nothing published for this version

  19. 1.42.0 05 Mar 2025

    Nothing published for this version

  20. 1.41.0 24 Dec 2024

    Nothing published for this version

  21. 1.40.2 04 Nov 2024

    Nothing published for this version

  22. 1.40.1 10 Oct 2024

    Nothing published for this version

  23. 1.40.0 02 Oct 2024

    Nothing published for this version

  24. 1.39.1 06 May 2024

    Nothing published for this version

  25. 1.39.0 25 Jan 2024

    Nothing published for this version

  26. 1.38.0 05 Jun 2023

    Nothing published for this version

  27. 1.37.1 05 May 2023

    Nothing published for this version

  28. 1.37.0 31 Mar 2023

    Nothing published for this version

  29. 1.36.2 14 Mar 2023

    Nothing published for this version

  30. 1.36.1 28 Apr 2022

    Nothing published for this version

  31. 1.36.0 18 Apr 2022

    Nothing published for this version

  32. 1.35.0 11 Feb 2022

    Nothing published for this version

  33. 1.34.0 26 Jan 2022

    Nothing published for this version

  34. 1.33.0 04 Jan 2022

    Nothing published for this version

  35. 1.32.1 23 Aug 2021

    Nothing published for this version

  36. 1.32.0 11 Mar 2021

    Nothing published for this version

  37. 1.31.0 26 Jan 2021

    Nothing published for this version

  38. 1.30.1 03 Nov 2020

    Nothing published for this version

  39. 1.30.0 03 Nov 2020

    Nothing published for this version

  40. 1.29.0 07 Oct 2020

    Nothing published for this version

  41. 1.28.0 09 Sep 2020

    Nothing published for this version

  42. 1.27.0 07 Jul 2020

    Nothing published for this version

  43. 1.26.0 03 Jul 2020

    Nothing published for this version

  44. 1.25.1 29 May 2020

    Nothing published for this version

  45. 1.25.0 13 Apr 2020

    Nothing published for this version

  46. 1.24.0 09 Apr 2020

    Nothing published for this version

  47. 1.23.0 09 Apr 2020

    Nothing published for this version

  48. 1.22.0 06 Apr 2020

    Nothing published for this version

  49. 1.21.1 23 Mar 2020

    Nothing published for this version

  50. 1.21.0 06 Mar 2020

    Nothing published for this version

  51. 1.20.0 21 Feb 2020

    Nothing published for this version

  52. 1.19.0 14 Feb 2020

    Nothing published for this version

  53. 1.18.1 24 Dec 2019

    Nothing published for this version

  54. 1.18.0 06 Dec 2019

    Nothing published for this version

  55. 1.17.1 06 Dec 2019

    Nothing published for this version

  56. 1.17.0 05 Dec 2019

    Nothing published for this version

  57. 1.16.1 03 Dec 2019

    Nothing published for this version

  58. 1.16.0 27 Nov 2019

    Nothing published for this version

  59. 1.15.1 20 Nov 2019

    Nothing published for this version

  60. 1.15.0 23 Oct 2019

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive