docs/en/Blog-Posts/2026-04-29 v10_4_Preview/POST.md
We are happy to release ABP version 10.4 RC (Release Candidate). This blog post introduces the new features and important changes in this new version.
Try this version and provide feedback for a more stable version of ABP v10.4! Thanks to you in advance.
You can check the Get Started page to see how to get started with ABP. You can either download ABP Studio (recommended, if you prefer a user-friendly GUI application - desktop application) or use the ABP CLI.
The v10.4 RC versions of ABP Studio and the ABP CLI are still being tested and will be released shortly.
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI:
There are no explicitly marked breaking changes in this version. However, there are still some important migration notes for specific scenarios. Please check the migration guide if you are upgrading from v10.3 or earlier: ABP Version 10.4 Migration Guide.
In this section, I will introduce some major features released in this version. Here is a brief list of titles explained in the next sections:
ABP v10.4 introduces URL-based localization support. You can now embed the culture directly in the URL path, such as /tr/products or /en/about.
This is especially useful for public websites, documentation sites, e-commerce applications, and any application that needs SEO-friendly and shareable localized URLs. Instead of relying only on query string, cookie, or browser language detection, the selected culture can be part of the URL itself.
You can enable it with a single configuration:
Configure<AbpRequestLocalizationOptions>(options =>
{
options.UseRouteBasedCulture = true;
});
When enabled, ABP automatically handles route registration, URL generation, menu links, and language switching for MVC/Razor Pages, Blazor, and Angular UIs.
For Angular applications, route trees can be wrapped with withOptionalRouteCulturePrefix so the same route configuration can handle both /identity/users and /en/identity/users:
import { Routes } from '@angular/router';
import { withOptionalRouteCulturePrefix } from '@abp/ng.core';
const appRoutesCore: Routes = [
// ... your routes
];
export const appRoutes = withOptionalRouteCulturePrefix(appRoutesCore);
For Blazor applications, ABP built-in module pages already include culture-aware route variants. If you have your own Blazor pages, add culture route variants manually:
@page "/Products"
@page "/{culture}/Products"
See the URL-Based Localization documentation and #25174 for details.
ABP localization resources can now use multiple JSON files for the same culture. This is useful for large modules or applications where keeping all localization texts in a single en.json file becomes difficult to maintain.
For example, you can split a resource by feature:
Localization/
+-- MyResource/
+-- en.json
+-- en_Authors.json
+-- en_Books.json
+-- en_Users.json
ABP merges these files into the same localization dictionary. Files are sorted by name before merging, and if the same key exists in multiple files, the value from the last file wins.
See the Localization documentation and #25227 for details.
ABP v10.4 starts the MudBlazor integration work for the Blazor UI stack.
This release adds MudBlazor-based package infrastructure, template integration, and module/theme support needed to build ABP Blazor applications with MudBlazor. Blazorise and MudBlazor are now supported side by side, the LeptonX theme works with both UI libraries, and when creating a new Blazor project you can pick which UI library to use.
This is a major UI foundation change, so we especially encourage Blazor users to try the RC and share feedback before the stable release.
Selecting the UI library when creating a new Blazor project in ABP Studio:
MudBlazor-based application home page:
MudBlazor-based Identity management page:
See #25235 for details.
ABP v10.4 improves the security model for email and SMS two-factor authentication codes.
Email and phone verification codes now use ABP's single-use token providers. Generated codes are encrypted, stored with an absolute expiration time, and consumed after successful validation. Generating a new code invalidates the previous one.
You can configure token lifetime and code length:
Configure<AbpEmailTwoFactorTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromMinutes(5);
options.CodeLength = 8;
});
Configure<AbpPhoneNumberTwoFactorTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromMinutes(2);
});
The authenticator app provider is not affected and continues to use the standard TOTP approach.
See the Two Factor Authentication documentation and #25316 for details.
ABP Commercial v10.4 RC introduces passwordless email login for the Account Pro module.
Users can sign in by receiving an email login link and/or a one-time password (OTP), depending on the configured login type. Administrators can enable the feature, choose the login mode, and configure token lifetime from the account settings.
The feature is designed with security in mind:
This feature is especially useful for applications that want a smoother sign-in experience without removing the tenant-aware and security-focused account flow of ABP.
"Login via email":
Type the One-time Password (OTP) to login:
The AI Management module continues to improve its MCP (Model Context Protocol) support.
In this release, MCP server configuration has been enhanced for stdio transport scenarios and workspace relationships. This makes it easier to connect local or process-based MCP servers to AI workspaces and use their tools from the chat playground.
LeptonX has been updated to work with the new URL-based localization flow across UI types, including Angular language switching and culture-aware navigation.
This release also includes several theme improvements and fixes, such as PathBase-safe menu links, improved custom select synchronization, sidebar menu re-binding after async rendering, and MudBlazor-related theme support.
ABP v10.4 RC includes several dependency updates and security-related package bumps:
System.Security.Cryptography.Xml upgraded to 10.0.6@abp/lodash lodash dependency updatedCheck Package Version Changes document for all updates.
ReplaceEmbeddedByPhysical can now receive exclusion filters, which gives developers more control over included/excluded physical files during development (#25284).RequireFeaturesSimpleBatchStateChecker (#25276).As always, exciting articles have been contributed by the ABP community. I will highlight some of them here:
Thanks to the ABP Community for all the content they have published. You can also post your ABP related (text or video) content to the ABP Community.
This version comes with some new features and a lot of enhancements to the existing features. You can see the Road Map documentation to learn about the release schedule and planned features for the next releases. Please try ABP v10.4 RC and provide feedback to help us release a more stable version.
Thanks for being a part of this community!