Welcome to the April 2026 release notes from Virto Commerce! This month delivers a rich set of improvements across the Platform, Frontend, and AI tooling including expanded Virto OZ capabilities.
Key updates:
- Stable 14 release on .NET10 released
- Virto Commerce is the first commerce platform member of the Commerce Operations Foundation to release an onX adapter
- Two new modules introduced: Sanity and Open Telemetry
Stable 14 release on .NET10
Stable 14 has been released. The headline change is .NET 10 migration. The Platform and every single module in this release has been updated to .NET 10. This is the dominant change accompanied by targeted functional additions such as the IGraphTypeHook extensibility interface in xAPI, native SVG thumbnail generation, and Lucene filter hardening.
The full list of module versions is available in the release notes.
The new 3.0 documentation release has been published to align with Stable 14.
Commerce Operations Foundation MCP Server (onX)
Virto Commerce introduces support for the Order Network eXchange (onX) standard through a new adapter and the Commerce Operations Foundation MCP Server implementation.
This integration provides a standardized interface between AI agents and fulfillment systems using the Model Context Protocol (MCP). It enables AI assistants and external systems to interact with order management, inventory, and fulfillment services through a unified protocol.
With the onX adapter, storefronts and integrations can query OMS, 3PL, and WMS systems directly for up-to-date inventory availability and delivery promise information, eliminating the need for hard-coded OMS integrations.
Virto Commerce is the first commerce platform member of the Commerce Operations Foundation to release an onX adapter.
Sanity CMS integration. Sanity 3.1000.0
Content editors can now create landing pages using Sanity CMS and integrate them into Virto Commerce. The new module connects Sanity content with the Virto Commerce page management system, enabling teams to use their preferred CMS while benefiting from the platform’s storefront capabilities.
Open Telemetry module first release
A new Open Telemetry module provides comprehensive observability for the Virto Commerce platform via an OTLP exporter. This update adds optional, standards-based observability, enabling real-time monitoring, tracing, and log correlation across the system to quickly detect, analyze, and resolve performance issues. The module is only activated when explicitly configured, so it adds no overhead to environments that do not need it.
Instrumentation coverage includes:
- Metrics: ASP.NET Core, HTTP Client, Runtime, Process, EF Core, Elasticsearch, Redis.
- Distributed tracing: ASP.NET Core, HTTP Client, Hangfire, EF Core, Elasticsearch, Redis.
- Logging: Serilog routed to OpenTelemetry via OTLP sink, with trace and span ID correlation for structured log analysis.
Dark mode for Coffee theme. Frontend 2.43.0 + Dark mode for Mercury theme. Frontend 2.44.0
Frontend now supports a night/dark mode for the default Mercury theme and the Coffee theme:

Dark mode reduces screen glare and brightness, which is easier on the eyes during low-light use. Additional benefits include:
- Accessibility and inclusivity for users with visual impairments such as photophobia or cataracts.
- Battery savings on OLED devices, where dark pixels consume less power.
- Enhanced focus: Visual elements such as images, icons, and buttons stand out more clearly against dark backgrounds.
- Modern aesthetic: A sleek design choice that many users prefer.
Coupons and promotions upgraded. Frontend 2.44.0 + Marketing 3.1001.0 + xMarketing 3.1001.0
Customers can now view all available coupons and promotions in a dedicated page within their account. The page shows the discount value, promotion name, description, expiry date, and a click-to-copy coupon code button for each available offer. This gives customers full visibility of what they can apply and where they can benefit from discounts and price reductions.
Promotions now support localized name and description fields per language.
Shareable link for product variations. Frontend 2.43.0
Customers can now open and copy a direct link to a specific product variation. The recipient of the link sees the exact same variant (color, size, configuration) immediately without having to reselect options. This simplifies sharing across teams and with other customers.

Pickup widget redesign. Frontend 2.43.0
Selecting a pick-up point now dynamically updates the map view, making it easier to orient and confirm the right location:

Assets widget added for Categories. Catalog 3.10006.0
The Assets widget is now available at the category level in catalog, enabling content teams to attach and manage assets directly on categories:
Category DB search filter by code. Catalog 3.1010.0
A new REST API endpoint has been added to look up categories by their predefined codes in both physical and virtual catalogs:
POST /api/catalog/{catalogId}/categories-by-codes
The request body is a JSON array of category codes, for example:
["CAT-001", "CAT-002", "CAT-003"]
Configurable section layout improvements. Catalog 3.1011.0
The configurable product section layout in the Catalog module has been improved, including the addition of a Max length field for text-type sections and a new variation configuration section type.
Refund number generation improvements. Order 3.1001.0
Refund document numbering and retry behavior have been improved to handle edge cases correctly:
- Sequential numbers are now correctly assigned even when the refund blade is opened immediately after creating a previous refund, or when earlier refund documents have been deleted.
- When a payment gateway throws an error, the refund document is saved with a “Rejected” status. Retrying with the same
transactionIdnow updates the existing rejected document rather than creating a duplicate. - Editing a refund document’s amount or reason and saving the order now correctly calls
PaymentMethod.RefundProcessPaymentAsyncwith the updated values andIsUpdate=true.
Marketplace
Vendor potal
-
The Vendor portal now supports configurable product setup, allowing vendors to define and manage product configurations directly in their portal:

-
The Vendor portal now surfaces contextual guidance messages to reduce friction during product and offer setup. For example:
Virto OZ
-
Users can now supply a CSV file with product data, and Virto OZ processes it, creates the products, and provides action suggestions such as updating selected products, changing status, and exporting:

-
Virto OZ in the Vendor portal can now create and import offers with variable properties:

-
Virto OZ now supports:
- Custom LLM settings configurable per tenant or per agent, for example, pointing a specific agent to
openai/gpt-5-mini. - Preview light model and streaming. Claude Haiku is used for fast approval preview generation and live streaming.
- Proper observability in Langfuse, tracing the full processing pipeline:
Process chat request → Process message → Preview → Approval.
- Custom LLM settings configurable per tenant or per agent, for example, pointing a specific agent to
For more information, request a demo
VC-Shell
-
The sidebar now includes an App Hub with application search and an app switcher, redesigned widgets with new sub-components, and a tabbed Menu/Hub switcher with swipe gestures on mobile:

-
A notification bell has been added to the header with an unread indicator dot:

-
The gallery component has been redesigned with a CSS Grid layout, responsive presets (sm/md/lg), frosted-glass hover action tray with a slide-up effect, skeleton shimmer during image loading, dark preview lightbox with crossfade transitions, and FLIP animation for drag-and-drop reordering. A new VcImageUpload component for avatars and logos has been extracted from the Gallery.
-
VcSkeleton loading and VcLoading have been upgraded:
- VcSkeleton now includes circle and block shape variants with configurable dimensions.
- VcBlade spinner overlay has been replaced with skeleton placeholders.
- VcDataTable uses column-aware skeleton rows that mirror the real column structure.
- VcLoading bar sweep animation replaces the previous dots loader, with an instant preloader.
-
The login and authentication pages have been updated with SSO-only mode (hiding the form when only SSO buttons are available), improved API error message parsing, a redesigned login form layout, and Storybook stories for all five auth pages:
-
The dashboard now features new chart components powered by Unovis and redesigned widget cards:
-
A unified error handling system has been implemented, including
useAsyncwith error ref and deferred notification,ErrorInterceptorfor blade-level red banners, global handlers for unhandled rejections and error events, and aparseError/DisplayableErrorunified parsing utility:

-
Network awareness is now built in: the app uses
useConnectionStatus(via VueUseuseNetwork) to detect connectivity. When offline, a persistent warning is shown, a 30% grayscale filter is applied to the entire app, and a fetch interceptor enforces a 30-second timeout with fast-fail behavior. The app recovers automatically when connectivity is restored: -
Shell startup performance has been improved across several dimensions: AppInsights and SignalR initialization are deferred to post-paint, dynamic modules are loaded on demand, the menu sidebar uses batch reveal to eliminate per-item layout shift, Vite
server.warmupis used for monorepo dev pre-transform, and auseWebVitalscomposable tracks LCP, FID, and CLS. -
Blade components no longer require ~55 lines of boilerplate props, emits, and lifecycle wiring. The new
useBlade()composable auto-injectsparamandoptions, handles blade events internally, and exposes clean helpers:openBlade,closeSelf,callParent,onActivated, andonDeactivated. The result is approximately 15 lines of clean code per blade. -
The new
defineAppModuleAPI uses a named options object instead of positional arguments, eliminating positional confusion and introducing integrated notification configuration. Notification templates, toast modes, and severity rules are now declared directly in the module definition - no separate registration step required: -
A two-level notification architecture has been introduced. Level 1 is module-level configuration via
defineAppModule, providing always-on toast handling forauto,progress, andsilentmodes through aNotificationStoresingleton. Level 2 isuseBladeNotifications(), a composable that subscribes to specific notification types scoped to the current blade, with automatic cleanup on unmount: -
The widget system no longer requires
.vuecomponent files.useBladeWidgets()accepts a configuration array describing each widget’s icon, title, badge, visibility, and callbacks. Registration and cleanup are handled automatically - no manualonUnmountedrequired. For dynamic modules that register widgets externally,defineBladeContextandinjectBladeContextare available:
Explore the new features and capabilities
Virto Commerce
-
Missed the “All Things AI: From ‘Help!’ to ‘Order Placed’” webinar? The recording is available.
-
Two new whitepapers are also available for download:















