Welcome to the March 2025 release notes from Virto Commerce! As we step into the first month of spring, we’re bringing fresh updates, powerful enhancements, and new features to help your business grow!
Highlights
- New payment provider added.
- Back-in-stock notifications enabled.
- Product reviews enhanced.
- Vendor registration request added.
Frontend 2.15.0
-
A new feature to upload company logo directly from the corporate account has been added. Admins can upload images in JPG and PNG format not exceeding 4.8 MB:
-
Buyers can now review products from their completed orders and upload real photos of them. After an order is completed, a review widget appears on the product page, allowing the buyer to submit a review and an image. Once the seller approves the review, it is displayed on the product page next to the product description:
Frontend 2.16.0
-
A Text message section has been added to product configuration, allowing customers to enter custom text while personalizing their products. This can be used for messages on postcards, engravings on rings, greetings on cakes, and more:
-
Organization maintainers can now view all company orders placed by any user. This allows them to track what was ordered, in what quantities, when, and by whom:
-
Category names in facets have been localized to display consistent information:
Back in Stock 
The Back-in-stock module has been released to help customers stay informed when products are available again. Once back-in-stock notifications are enabled in the Platform, customers can subscribe to real-time notifications that the product is restocked:
After the product is restocked, the subscribers receive the following notification:
Now, users can add the product to the cart from the list:
CyberSource Payment Provider 
CyberSource, a new payment provider has been integrated into the Platform along with Authorize.net and Skyflow:
CyberSource 3.801.0
The module allows order managers to initiate Capture and Refund operations.
-
Capture: Finalizes an authorized payment, completing the transaction:
-
Refund: Allows Order Managers to issue refunds for completed payments.
Customer 3.824.0
Customers can now automatically return to their last active organization after logging in. When a customer signs in to the frontend with multiple organizations (e.g., OrgA, OrgB), they are logged in under their Default company by default. If no Default Company is set, they are assigned to the first organization they belong to. If the customer switches to another organization (e.g., OrgB), that organization is saved as their default for future sign-ins:
Catalog 3.839.0
The breadcrumbs localization feature has been added to ensure that category names in breadcrumb navigation are displayed in the appropriate language based on localization settings.
The localization logic is as follows:
-
SEO (page title): If a localized page title is available in the SEO settings, it is used in the breadcrumbs. This value comes directly from the SEO “Page Title” field.
-
Localized category name: If no SEO page title is defined, the system falls back to the localized category name. This ensures that the breadcrumb reflects the appropriate language.
-
Default category name: If neither an SEO page title nor a localized category name is available, the default category name is displayed.
Templates to create modules
Templates to create own custom modules using dotnet new
have been updated. The developer experience has been improved by adding an option to generate all the necessary classes for CRUD operations:
Template Name | Description |
---|---|
vc-module-dba-xapi | Creates a new Virto Commerce module with DB Agnostic and xAPI support. |
vc-module-dba | Creates a new Virto Commerce module with DB Agnostic support. |
vc-module-xapi | Creates a new Virto Commerce module with xAPI support. |
vc-crud | Creates all the classes needed for CRUD operations. |
For more information, refer to our video or documentation
Frontend modularity
Modules architecture description has been updated to explain core concepts and interactions:
The key concepts of modules architecture are as follows:
Concept | Description |
---|---|
Core | The main application that includes the API, router, builder, and other systems. |
Module | An additional functionality developed with minimal impact on the Core. It is a self-contained feature area within the application. Each module encapsulates its own components, services, APIs, and other related code. |
Extensions | Extension points that belong to the Core, also called holes or sockets. Existing extensions: - client-app/shared/common/composables/useCustomProductComponents.ts - client-app/shared/layout/composables/useCustomAccountLinkComponents.ts - client-app/shared/layout/composables/useCustomMobileMenuLinkComponents.ts - client-app/shared/layout/composables/useCustomHeaderLinkComponents.ts - client-app/shared/layout/composables/useCustomMobileHeaderComponents.ts |
Module management system | A decision-making point and business logic handler. It is represented as settings_data.json at the bundle level and as an array of modules in the getStore request at the store level. It can be considered a form of Feature flags. |
Type generation system | Handles the generation of types and constants for GraphQL API. |
Marketplace
-
In the operator portal, operators can now easily switch between vendors. Previously, operators could access the Vendor portal on behalf of any registered vendor to manage vendor-specific settings, troubleshoot issues, and provide direct support without needing the vendor’s login credentials. This feature has now been extended to allow seamless switching between vendors within the Vendor portal:
Search among vendors is also available here.
-
Vendors can now submit registration forms to operators themselves to simplify the onboarding process. Previously vendors could only be invited by operators:
For more information, request a demo
VC Shell
-
The mobile grid layout has been restyled:
- The mobile grid item structure has been updated to take up less space.
- The left side now has a reserved area for the status component, while the content area consists of two rows with two slots each for information.
-
The mobile toolbar menu has been redesigned:
-
The blade search bar is now hidden by default on the main blade. You can toggle it using the special “Search” button in the app header.
-
The settings menu has been redesigned both visually and internally:
- Now, registering new menu items or modifying existing ones is done using the useSettingsMenu composable, which provides flexible customization.
- Additionally, all related components, such as the predefined menu item, have been updated.
-
In the mobile view, the notifications dropdown has been moved to a separate button in the application header.
-
Navigation between blades is now handled using the ← button, which, on a long press, opens a list of previous blades. The mobile view now accommodates a maximum of 5 widgets. However, if their names are too long or they don’t fit physically, they are dynamically hidden under a chevron:
-
Instead of a burger menu, the user’s avatar is now used to access the navigation menu in the mobile view.
-
The vc-table/grid component has been improved, along with enhancements to row and column drag-and-drop actions. They now move within their designated areas with clearer visual indication.