In our Blazor Web App (InteractiveAuto), the WebAssembly client takes about 7 seconds after each F5 before the application can be used, even with the browser cache already filled. Almost all of this time is spent in the browser, not waiting for the server. We measured the startup and split it into the steps below.
| Step | Time | |---|---| | Module localization texts (20 to 29 languages per module) | ~2.0 s | | Module registration and Autofac container | ~1.3 s | | Static asset list sent to the client (resource-collection.js) | ~1.2 s | | API descriptions of the static proxies (generate-proxy.json) | ~0.9 s | | Layout, menu, toolbar and first page | ~0.9 s | | Application configuration and localization requests | ~0.7 s | | Total | ~7.1 s |
Taking as an example the step with the largest weight in the table above, the module localization texts (~2.0 s): when a module's texts are used for the first time, the WebAssembly client loads the files of every language that module ships, which is between 20 and 29 languages per ABP module. Because each F5 restarts the client, this repeats on every F5.
Our application has only two languages configured, pt-PT and en. As we understand it, the only other languages ABP needs are the fallback cultures used to resolve a text: the parent culture (pt) and the default culture of each resource. Since switching language reloads the page, the remaining languages appear to be loaded but never used.
Thank you.
Hi,
Thank you for the feedback and for considering this suggestion.
I was also wondering if there is a preferred way to share ideas and suggestions for potential improvements to the framework, particularly as we'd like to make the best use of our available support tickets while still being able to contribute ideas that could benefit the platform.
Thank you.
Currently, the Chat module displays an avatar with the user's initials (first and last name) in both the contact list and the conversation header.
Since Account Pro already allows users to upload a profile picture, it would be useful if the Chat module could use these images for avatars, providing a more consistent experience across the application.
Currently, implementing this behaviour requires replacing the entire Chat page, making it difficult to keep up with future updates to the module. Supporting this functionality directly within the Chat module would allow for this customization while preserving compatibility with future updates.
In SaaS → Tenants → Actions → Connection strings, clicking Test next to the default connection string shows the error 415 Unsupported Media Type, even when the connection string is valid.
The problem happens when the application is running in WebAssembly mode, but not in server mode.
1. Server mode —> works
2. WebAssembly mode —> fails
When the LeptonX style is set to System and the operating system is in dark mode, part of the application is shown in light mode.
The LeptonX parts of the layout (side menu, page background, cards) are correctly shown in dark mode, but the MudBlazor components stay light: data grid rows (for example, on the Users and Tenants pages), lists and some content areas have a white background, which makes them hard to read.
It happens mostly when the page is loaded in server mode (first visit or full page reload).
DefaultStyle = LeptonXStyleNames.System in the LeptonX options.Could a member of the support team please review this ticket?
When a user is created through the admin UI with Send confirmation email enabled, the user is created successfully, but no confirmation email is sent.
However, clicking Verify on the "Confirm user" page sends the email successfully.
When processing the user-created event through RabbitMQ, AccountIdentityUserCreatedEventHandler fails while generating the confirmation token, with the following exception:
A DbContext can only be created inside a unit of work!
at Volo.Abp.Identity.AbpSingleActiveTokenProvider.GenerateAsync(...)
at Volo.Abp.Account.Emailing.AccountIdentityUserCreatedEventHandler.HandleEventAsync(...)
The exception occurs before the email is sent, so no confirmation email is generated. RabbitMQ repeatedly retries the failed message.
In a test environment, the AccountIdentityUserCreatedEventHandler.cs file in the Volo.Abp.Account.Pro.Public.Application project was modified as follows:
Before:
public async Task HandleEventAsync(IdentityUserCreatedEto eventData)
After:
[UnitOfWork]
public virtual async Task HandleEventAsync(IdentityUserCreatedEto eventData)
The following namespace must also be added:
using Volo.Abp.Uow;
No other changes were made to the method.
After this change, the confirmation email was sent successfully, and the unit of work errors no longer appeared in the logs.
virtual modifier.virtual methods.During a normal sign-in, ABP checks whether the user's email has been confirmed and redirects them to the confirmation page if it hasn't. However, when a password change is required, the user is prompted to change their password first. After changing it, the user is signed in and can access the application without being asked to confirm their email. The confirmation check only takes place at the next sign-in.
Abp.Identity.SignIn.RequireConfirmedEmail.A user without the Chat → Messaging → Searching permission can open a conversation with someone they have never interacted with. However, when they attempt to send the first message, an unhandled Blazor error occurs and the page must be reloaded.
The server rejects the request due to an authorization failure (Forbidden). However, the error is not handled by the client, causing the Chat page to stop working correctly.
Could you please clarify the expected behavior in this scenario?
Blazor (client)
2026-10-16 16:25:08.389 +01:00 [ERR] Unhandled exception in circuit 'CoCj56m3pNdJeVtR9zxKwq3Sm8mkn3TVGSpmr0FnQaA'.
Volo.Abp.Http.Client.AbpRemoteCallException: Forbidden
at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.ThrowExceptionForResponseAsync(HttpResponseMessage response)
...
at Volo.Chat.Conversations.ConversationClientProxy.SendMessageAsync(SendMessageInput input)
at Volo.Chat.Blazor.MudBlazor.Pages.Chat.Index.WouAAVFdL()
at Volo.Chat.Blazor.MudBlazor.Pages.Chat.Index.yMtunRrM39()
at MudBlazor.MudBaseButton.OnClickHandler(MouseEventArgs ev)
HttpApi.Host (server)
2026-10-16 16:25:08.099 +01:00 [WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
Code: Volo.Authorization:010004
Message: Authorization failed! Given requirement has not granted for given resource: {ResourceName}
Volo.Abp.Authorization.AbpAuthorizationException: Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
at Volo.Chat.Conversations.ConversationAppService.SendMessageAsync(SendMessageInput input)
...
A user with only the Conversation → Messages permission cannot access the Chat page and is redirected to the Access Denied page.
However, granting the Conversation → Setting Management permission as well allows the page to work normally. This is unexpected, as managing settings should be independent of using Chat.
/Chat.During testing, we found that the Chat page retrieves the module's settings when it initializes, even when the user only needs to access their messages.
This request appears to be the cause of the issue. The OnInitializedAsync method in Index.razor.cs (in Volo.Chat.Blazor.MudBlazor) calls SettingsAppService.GetAsync, which requires the Chat.SettingManagement permission at class level. As a result, users without this permission cannot complete the page initialization.