Neos 3.0 highlights

Key insights

Welcome to the 3.0 release of Neos. There are many updates in this version that we hope you'll like, some of the key highlights include:

.NET 10

Neos now requires .NET 10.

A few important points:

  • If you use Visual Studio 2022, you will need to upgrade to Visual Studio 2026.
  • We removed two extension methods that we had implemented because they are now integrated into .NET: IAsyncEnumerable<T> ToAsyncEnumerable<T>(this IEnumerable<T> items) (GroupeIsa.Neos.Shared.Extensions.AsyncEnumerableExtensions), Task<List<T>> ToListAsync<T>(this IAsyncEnumerable<T> items, CancellationToken cancellationToken = default) (GroupeIsa.Neos.Shared.Extensions.IEnumerableExtensions).
  • Update Azure DevOps pipelines to replace any use of .NET 8 with .NET 10.
  • Update Docker base images to .NET 10. (mcr.microsoft.com/dotnet/aspnet:8.0.21-alpine3.22 to mcr.microsoft.com/dotnet/aspnet:10.0.3-alpine3.22)
  • You may need to update some NuGet dependencies in your C# projects. If not, it's still a great opportunity to get everything up to date!

Useful links regarding breaking changes in .NET:

New C# solution file format (SLNX)

Solution files have been migrated from .sln / .slnf to the new .slnx format.

Key points of the new format:

  • Simpler and more readable structure: .slnx uses a cleaner XML representation that is easier to understand and edit.
  • Smaller footprint and faster loading: sensible defaults keep the file lean, which helps reduce overhead and improve solution load performance, especially for larger repositories.

On your side, you just need to replace the .slnf and .sln references with .slnx throughout your repository. It's very likely that there are occurrences in your pipelines and scripts.

See this article for more information about the new format.

Auto-suggest

Auto-suggest is a new AI-powered feature that automatically suggests property values when users modify related fields. For example, when entering a city name, the system can suggest the corresponding postal code or country.

Neos Studio now uses auto-suggest extensively: when editing entities, properties, UI views, or any metadata, the AI automatically suggests names, descriptions, captions, data types, and more based on context.

Configure suggestions in your own applications using AIAutoSuggestPrompt and AIAutoSuggestTriggers in UI view properties metadata. For more details, see the Auto-suggest documentation.

Micro-frontends

You can now consume UI views from another cluster as a micro-frontend (remote UI view) to compose applications.

For details, configuration examples (development + production), and first-load notes, see the Nested clusters documentation.

Forwarding nested cluster notifications to main cluster

Notifications from the nested cluster's notification center can now be forwarded to the main cluster.

For configuration details, see the nested clusters configuration documentation.

New standard UI components and attributes

New UI building blocks are available in templates:

  • documentation-button component: adds a dedicated button to quickly access contextual documentation directly from the UI.
  • calculable type for input-number: enables calculations to be performed directly in the input.
  • vertical-align attribute on vertical-layout: lets you control how children are vertically aligned within a vertical-layout.

UI filtering

Filtering capabilities have been enhanced:

  • Named filters: define preset filters users can apply in one click (including multi-condition filters). See the Named filters documentation.

  • Improved lookup filter component
  • Improved date filter component

Default

Day

Month

Year

UI navigation

Frame URL Parameters

You can now pass parameters via the URL, via the WithUrlParameter fluent method of the NavigationOptions class:

This also works in tabs and popups:

For more details (including updated notes and warnings), see the frontend navigation with frame URL parameters documentation.

New syntax for disabling view context inheritance

The WithNewParameters method can now be called without any parameter which gives a simpler syntax in some cases:

NavigationOptions options = new NavigationOptions("UIViewName")
    .WithNewParameters() // disable inheritance
    .WithParameter("ParameterKey", "ParameterValue");

For more details (including updated notes and warnings), see the frontend navigation with disabled view context inheritance documentation.

UI template suggestions and diagnostics

The UI template editor now provides richer suggestions and better diagnostics to help you author templates faster and with fewer mistakes.

Improvements include intelligent completion for image names, UI view names, lookups, string resources (@Resources.), and UI components. The editor is also context-aware, taking into account module dependencies, context components, and repeat scopes to provide relevant suggestions.

Configurable multiline validation

Neos 3.0 introduces backend validation for single-line text (Multiline = false) on entities and entity views.

In previous versions, this backend control did not exist, so some incorrect cases could still work.

By default, values containing line breaks (\r, \n) are now rejected. If needed during migration, you can temporarily disable this validation with:

{
  "TextValidation": {
    "EnforceMultiLineConstraint": false
  }
}

This option is a temporary risk-mitigation switch for production after an FMK upgrade, when teams need extra time for deeper validation before enforcing the new control.

Neos 3.0 also adds dedicated generation warnings to detect multiline inconsistencies across metadata and templates:

  • M0068 (PropertyCannotBeMultilineBecauseSourceIsNot) when a property is marked multiline while its source is not.
  • M0067 (ElementBoundToNonMultilineProperty) when a multiline-oriented UI template element is bound to a single-line property. This warning currently applies only to native framework components that are directly bound to a property in bound mode.
Important

Treat these warnings as high-priority remediation items after upgrading to Neos 3.0. They identify cases that previously went unnoticed and can now cause validation or behavior mismatches if left unresolved.

Also pay close attention to custom components that use multiline editors (for example, neos-ai-rich-text-editor). It is strongly recommended to search their usages in templates and verify they are bound to multiline sources.

For details, see Backend application configuration, Entity properties, Entity view properties, and UI view properties.

Server methods organization

Server method implementation files can now be organized in subfolders within your business assembly project, making it easier to manage large numbers of server methods.

Previously, all server methods had to be placed directly in the Methods/ folder. Now you can create a logical folder structure such as Methods/Orders/, Methods/Customers/, or Methods/Billing/ to group related methods together. The Neos code generator determines the expected namespace based on the folder structure.

For example, a file at Methods/Orders/CreateOrder.cs must use the namespace MyModule.Application.Methods.Orders.CreateOrder.

For more details, see Organizing server method files.

Reporting

Report Styles

The work started on Report Style in Neos 2.5 was finalized in 3.0, with the Report Style Designer persisting the association between a style and a container report. In other words, the Report used for editing and previewing the styles is part of the Report Style's properties.

We can see this when creating a new style:

As well as when changing its properties:

The banner has also been revamped:

🇫🇷 Visualiser la version française

Post-Processing PDF generated from the Business Assembly

A new factory method ForgeSuccessfulGenerationResponse has been added to ReportGenerationResponse, enabling developers to post-process a generated PDF and produce a new response that behaves exactly like one emitted by the reporting service.

A typical use case is merging documents: after receiving the generated report in the callback, you can combine it with additional content (e.g., terms and conditions, appendices) using a PDF library, and then forge a new response from the merged result. The forged response is automatically persisted in the $NeosFile database table, so it can be downloaded or printed by the end user just like any standard report.

// 1. Merge the generated report with additional content
byte[] mergedContent = MergePdfDocuments(
    response.ReportContent,
    termsAndConditionsFile.Content);

// 2. Forge a new response from the merged PDF
ReportGenerationResponse forgedResponse = ReportGenerationResponse
    .ForgeSuccessfulGenerationResponse(
        response.FilenameToUse,
        documentContent: mergedContent);

// 3. Send the forged response as a download notification
ReportGenerationSucceededNotificationArgs notifArgs = await ReportGenerationSucceededNotificationArgs
    .CreateFromResponseAsync(_temporaryFileStorage, forgedResponse, logger, cancellationToken);

await _userNotification.SendReportGenerationSucceededNotificationAsync(notifArgs, cancellationToken);

An overload ForgeSuccessfulGenerationResponseFromBase64Content is also available when content is already Base64-encoded, but in most cases the raw byte array overload is preferred to avoid unnecessary encoding.

For the full working example (including PDF merging with iText), refer to the EmailSender class in the TechnicalDemos cluster under Reports > Export from Server. For more details on report retrieval APIs, see Report retrieval migration and the ReportGenerationResponse API reference.

Without Dapr

When developing a cluster and multi-tenancy is not required, the neos run -dp:false option can make your development environment lighter and faster. Unfortunately, the "no Dapr"-mode lacked support on the reporting side until now. Starting from Neos 3.0, you can embrace the "no Dapr"-mode and should be able to run the designer, generate reports from the client or from a business assembly and it should all work as intended, as if you were using the Dapr runtime.

What's new in documentation

This release includes significant documentation improvements:

New articles
  • View model - Documents the MVVM view model pattern in Neos, including built-in methods for displaying messages, toasts, file selection, overlays, and navigation between view models.
  • Generated solution structure - Comprehensive guide to understanding the structure of a generated Neos backend solution, including project descriptions, layer responsibilities, and data flow diagrams.
  • Debug server application - Explains how to debug the backend code of your cluster (business assemblies, server methods, etc.).
  • Business assemblies - Documents business assembly project structure, Startup class registration, repositories, and testing strategies.
  • Report retrieval migration - Documents how to use the new APIs for retrieving and processing a report generated from a business assembly.
  • Purge notifications - Explains how to periodically purge old notifications to maintain optimal database performance, including specific instructions for the Tenant Management cluster.
Updated documentation
  • Debug UI application - Added a new "Browser Developer Tools" section explaining how to use Elements, Console, Sources, and Network panels, with detailed guidance on debugging API calls.
  • Clean architecture - Restructured to explain how Clean Architecture principles are applied in the Neos framework, with detailed solution folder mapping to architectural layers.
  • Domain vs Application - Comprehensive rewrite with detailed guidance on choosing between Domain and Application layers, including decision flowcharts, concrete helper examples from the framework, and cross-layer patterns.
  • Reports troubleshooting - Added new Q&As and a link to the Neos Forum for more Tips & Tricks about working with the Stimulsoft for Neos reporting solution.

Visual Studio Code Extension

Neos Studio is now available as a Visual Studio Code extension, allowing you to manage your Neos clusters and perform various tasks directly from your code editor. For more details, see the Neos Studio VS Code Extension documentation.

v3.0.20

Published on Aug 31, 2026.

Features

  • Updated the .NET SDK to 10.0.400 and .NET runtime images to 10.0.11.
    • CVE-2026-62898 | .NET Information Disclosure Vulnerability
    • CVE-2026-62899 | .NET Security Feature Bypass Vulnerability
    • CVE-2026-62900 | .NET Information Disclosure Vulnerability
    • CVE-2026-62901 | .NET Denial of Service Vulnerability
    • CVE-2026-62886 | .NET Elevation of Privilege Vulnerability
    • CVE-2026-62871 | .NET Elevation of Privilege Vulnerability
    • CVE-2026-70354 | .NET Core Remote Code Execution Vulnerability
    • CVE-2026-62902 | .NET Information Disclosure Vulnerability
    • CVE-2026-62897 | .NET Remote Code Execution Vulnerability
    • CVE-2026-62909 | .NET Elevation of Privilege Vulnerability
      More details : 18452

Fixes

  • Fixed background task dispatch so it no longer inherited a disposed HTTP context from the initiating request. (18521), closes 35978
  • Shared ASP.NET Core data protection keys through Redis between gateway and backend instances to improve compatibility during mixed-version deployments. (17967)

v3.0.19

Published on Aug 12, 2026.

Fixes

  • [Security] Updated dependencies to fix CVE-2026-45646 (HIGH CVSS 7.5) (18292)
  • [Security] Updated dependencies to fix CVE-2026-50506 (HIGH CVSS 7.5) (18292), closes 35587
  • [Security] Updated dependencies to fix GHSA-28wg-ghj8-5hjv (HIGH CVSS 5.9) (18279)
  • [Security] Updated dependencies to fix GHSA-2v37-7h3g-55p8 (HIGH CVSS 5.9) (18279)
  • [Security] Updated dependencies to fix GHSA-2v8p-3f2j-5mp7 (MEDIUM) (18279)
  • [Security] Updated dependencies to fix GHSA-3rrr-jr9j-h3q3 (MEDIUM) (18279)
  • [Security] Updated dependencies to fix GHSA-55q2-fjhq-7xh7 (MEDIUM) (18279)
  • [Security] Updated dependencies to fix GHSA-6g55-p6wh-862q (HIGH CVSS 7.5) (18279)
  • [Security] Updated dependencies to fix GHSA-6x64-9x62-f2gx (MEDIUM) (18279)
  • [Security] Updated dependencies to fix GHSA-c2j3-45gr-mqc4 (LOW) (18279)
  • [Security] Updated dependencies to fix GHSA-c4c3-pg64-4m4v (LOW) (18279), closes 35586, 35588, 35589, 35597, 35598
  • [Security] Updated dependencies to fix GHSA-fxqj-rqcc-2cmp (MEDIUM) (18279)
  • [Security] Updated dependencies to fix GHSA-mv8w-475r-vwqw (CRITICAL CVSS 9.8) (18279)
  • [Security] Updated dependencies to fix GHSA-qx2v-qp2m-jg93 (MEDIUM CVSS 6.1) (18279)
  • [Security] Updated dependencies to fix GHSA-r28c-9q8g-f849 (HIGH CVSS 7.5) (18279)
  • [Security] Updated dependencies to fix GHSA-rhh3-jpg6-66xh (MEDIUM) (18279)
  • Fixed wrong tenant settings used for sequences and database exception converter in background server methods. (18179), closes 34734

v3.0.18

Published on Jul 23, 2026.

Breaking changes

  • [Security] The GetClusterVersions, GetTenantInfo, and GetTenantClusters methods of the tenant management API are isolated behind the gateway and, consequently, restricted to the internal network. (17998)

Features

  • Configured the Helm chart to use a default Kubernetes RollingUpdate strategy with maxSurge: 1 and maxUnavailable: 50%, and added configurable per-service deployment strategy overrides. See this article (17802)

Fixes

  • [Security] Fixed forwarded-header handling so InternalUseOnly server methods are properly isolated behind the gateway. (17998), closes 33655
  • [Security] Updated dependencies to fix CVE-2026-41148 (MED CVSS 5.3) (18004)
  • [Security] Updated dependencies to fix CVE-2026-41907 (HIGH CVSS 8.1) (18004)
  • [Security] Updated dependencies to fix CVE-2026-46681 (HIGH CVSS 7.2) (18004)
  • [Security] Updated dependencies to fix CVE-2026-47759 (HIGH CVSS 8.7) (18004)
  • [Security] Updated dependencies to fix CVE-2026-47761 (HIGH CVSS 8.7) (18004)
  • [Security] Updated dependencies to fix CVE-2026-47762 (HIGH CVSS 8.7) (18004)
  • [Security] Updated dependencies to fix CVE-2026-48109 (HIGH CVSS 8.2) (18004)
  • [Security] Updated dependencies to fix CVE-2026-48502 (HIGH CVSS 8.2) (18004)
  • [Security] Updated dependencies to fix CVE-2026-48506 (HIGH CVSS 7.5) (18004)
  • [Security] Updated dependencies to fix CVE-2026-48779 (HIGH CVSS 7.5) (18004)
  • [Security] Updated dependencies to fix CVE-2026-49451 (HIGH CVSS 7.5) (18004)
  • [Security] Updated dependencies to fix GHSA-39q2-94rc-95cp (MED CVSS 5.3) (18004)
  • [Security] Updated dependencies to fix GHSA-7jvp-hj45-2f2m (HIGH) (18004)
  • Fixed datagrid row selection so right-clicking the current selected row no longer cleared other selected rows. (18064), closes 35007
  • Fixed Remote Invoke not exposing the business message when the called cluster throws a business error. (17783), closes 34606
  • Fixed SignalR notifications sent through the Redis backplane to preserve invocation IDs, allowing client response flows to work correctly in production. (17680)

v3.0.17

Published on Jun 17, 2026.

Features

  • Added the ability to customise tenant selection screen according to each tenant status (disabled via tenant manager or currently unavailable, eg: migrating). See this article. (17592)

Fixes

  • Fixed a memory leak in Semantic Kernel dependency injection configuration. (17575)
  • Fixed disabled tenants displaying in tenant selection screen. (17592), closes 34071

v3.0.16

Published on Jun 09, 2026.

Fixes

  • [Tenant Management] Fixed user synchronization during tenant creation and tenant migration state changes to prevent unintended cross-cluster sync events. (17426)
  • [User Permissions] Removed the automatic synchronized status update because this property could drift from the actual state depending on the cluster, making it unreliable. (17426), closes 34043

v3.0.15

Published on Jun 01, 2026.

Fixes

  • Fixed API validation for decimal properties when minimum or maximum values used a dot decimal separator. Prevented culture-dependent failures in decimal range constraints. (17348), closes 34014
  • Fixed filter bar so server filter chips are displayed in advanced mode. (17334), closes 33958

v3.0.14

Published on May 29, 2026.

Features

Fixes

  • [Neos Studio] Fixed tenant API path detection for tenant identifiers containing _ or -. (17228)
  • [Tenant Management] Improved unavailable-tenant cache recovery after Redis subscription failures. (17228), closes 33766
  • Database migrations for the cluster have been moved to background processing. (17266), closes 33741
  • Fixed OpenAPI schema with RangeAttribute's default maximal value being now a valid decimal format. The previous format was causing NSwag to crash with JsonReaderException "Input string '7.922816251426434E+28' is not a valid decimal". Now, the maximum for a decimal in the swagger.json file is noted as 79228162514264337593543950335, which is the actual maximal value for a decimal. (17284), closes 32281
  • Fixed Pub/Sub processing so remote calls to Tenant Management GetClusterVersions now propagated the user. This prevented 403 permission errors when tenant cache was unavailable. (17218), closes 33858
  • Fixed reactivity initialization for remote UI views in micro-frontends. (17223), closes 33853
  • Fixed the error in the cache building process. (17266)
  • Fixed the NeosAI cluster Dapr app-id which was colliding with the identifier of the main application. (17199), closes 33805

v3.0.13

Published on May 22, 2026.

Features

  • Added new neos_unavailable_tenant metrics. See this article. (17144)
  • Blocked gateway routing to unavailable or migrating tenants by returning HTTP 503 instead of forwarding requests. See this article. (17144)

Fixes

  • [C# Dependencies] Upgraded Microsoft.Extensions.DependencyInjection.Abstractions and Microsoft.Extensions.Logging.Abstractions from 10.0.3 to 10.0.7 to be able to upgrade OpenTelemetry packages. (17128), closes 33724
  • [Security] Fixed CVE-2026-40182 (Moderate 5.3) and CVE-2026-42191 (Moderate 6.3) by upgrading OpenTelemetry packages to 1.15.3. (17128)
  • [Security] Fixed CVE-2026-40372 (Critical 9.1) by upgrading Microsoft.AspNetCore.DataProtection.StackExchangeRedis package to 10.0.7. (17128)
  • [Security] Fixed CVE-2026-44503 (High 7.0) by upgrading Microsoft.Graph package to 6.0.3 of UserPermissions module. (17128)
  • Fixed deployment documentation for specific Redis instance deployment. (17169), closes 33776

v3.0.12

Published on May 13, 2026.

Features

  • [Documentation] Added documentation about deployment, rollback, and tenant migration workflows. (17006)
  • [Observability] Added neos_tenant_cache_rebuild_requests_total metric (see this article). (17006)
  • [Tenant Management] Added POST /api/v1/methods/resetalltenantcache endpoint to force rebuilding all tenant cache. See this article. (17006)
  • [Tenant Management] Added TenantsResolutionCacheFullRebuildUseTaskRunnerByDefault and TenantsResolutionCachePartialRebuildUseTaskRunnerByDefault to override tenant cache building dispatch mode (task-runner vs backend service). See this article. (17006)
  • Added a BackgroundService-based execution mode for background server methods when Dapr Workflow was disabled. Added configuration to switch between local background execution and Dapr Workflow support. (17084)

Fixes

  • [Tenant Management] Added synchronous tenant-cache rebuilding for partial rebuilds (eg: during tenant migration). (17006)
  • Fixed an issue related to the generation of the MCP class of a server method. (16979), closes 32032
  • Fixed an issue where UI views opened via micro-frontends were not working in development environment. (17013)
  • Removed the cast of OData quick search filter condition. (16980)
  • Update of the Dapr .NET SDKs to version 1.17.9. (17068)

v3.0.11

Published on Apr 27, 2026.

Breaking changes

  • Enum properties without an EnumTypeName now raise an error. (16356)

Features

  • Added a propagation of current UIView id changes to the VSCode integration. (16795)
  • Added VSCode-aware Ctrl+Shift+E navigation to open the Neos Studio UIView directly from the app. (16795)

Fixes

  • [Neos Studio] Fixed default Entity View MCP tools from being kept under the previous name after an entity view rename. (16775), closes 32111
  • [Neos Studio] Fixed layout shift in the VS Code extension when opening modal dialogs. (16845), closes 33172
  • [Security] Updated NuGet.* package references to 7.0.3 across the affected .NET projects to address GHSA-g4vj-cjjj-v7hg. (16794), closes 33222
  • [Tenant Management] Improved tenant cache rebuild reliability by clearing tenant cache completion markers before triggering a full rebuild, so tenant data can fall back to the database while caches are being reconstructed. (16871)
  • Fixed an issue where a Vscode tab would not close after deleting an element from Neos Studio. (16795)
  • Removed the maximum length constraint of the Message property from the NeosUserNotification entity. (16870), closes 33297
  • Updated @module-federation/vite dependency to stabilize micro-frontends. (16724)

v3.0.10

Published on Apr 14, 2026.

Features

  • [Neos Studio] Added VS Code extension-based opening for business class files instead of relying on backend launch. (16725)

Fixes

  • [Neos Studio] Fixed data table columns datagrid virtualization. (16648), closes 32855
  • [User Permissions] Prevented automatic authentication-provider synchronization failures from blocking user saves and tenant creation. (16706), closes 33041
  • Fixed alternate key resolution for inherited entities so keys defined on base entities were correctly available in Designer views and generated facades. (16591), closes 32841, 32842
  • Fixed client library code backing the transpilation of a property's FilterDefaultOperator; it should be a string (Example usage: Properties.MyAmount.FilterDefaultOperator = FilterOperator.GreaterOrEqual.ToString();). (16616), closes 32944
  • Fixed client library code for transpiled DateTime constructor with optional milliseconds. (16596), closes 32892
  • Fixed data loading using the configured page size when filters or sorting changed, while preserving the loaded item count for manual refresh in infinite scrolling scenarios. (16707), closes 33092
  • Fixed SignalR backward compatibility issue introduced in version 2.5 caused by tenant and user identifier casing normalization. (16733), closes 33026
  • Fixed tab selection when opening a non-closeable frame. (16616), closes 32944

v3.0.9

Published on Apr 03, 2026.

Fixes

  • Fixed client-side total summaries so watched getter-backed properties recalculated their aggregations when values changed. (16569), closes 32859
  • Fixed the read-only lock icon display on filter condition chips in the filter bar. (16561), closes 32852
  • Fixed vulnerability warnings of the Scriban package by upgrading it. (16557)
  • Updated @module-federation/vite dependency to stabilize micro-frontends. (16562)

v3.0.8

Published on Mar 30, 2026.

Features

  • [Neos Studio] Added server compilation issue surfacing in build results with file/line/column details, and enabled opening source files directly from the Build Result Viewer. (16520)

Fixes

  • [Neos Studio] Fixed status property validation to resolve the configured status property through base-entity inheritance, preventing false errors when the property is defined on an ancestor entity. (16517), closes 32604
  • [UI Customization] Fixed auto-saved personal view updates so newly added UI view fields were persisted correctly when linked to an unbound entity view. (16542), closes 32808
  • Fixed bound entity view serialization by excluding the internal Entity property when using System.Text.Json. Added unit tests to validate consistent behavior with both System.Text.Json and Newtonsoft.Json. (16518), closes 32817
  • Fixed chatbot attachment handling to support non-image files (including PDFs). Users can now attach PDF files in chatbot conversations. (16525), closes 32820

v3.0.7

Published on Mar 24, 2026.

Features

  • [Tenant Management] Added an endpoint GET methods/tenantscacherebuildingstatus to check tenants state stores rebuilding status. See this article. (16393)
  • [Tenant Management] Added new metric for tenant cache rebuild duration. See this article. (16442)
  • [Tenant Management] Added new metric for tenant cache rebuild state. See this article. (16442)
  • Enabled automatic startup of the reporting server when proxy requests targeted nested cluster reporting endpoints. (16367)

Fixes

  • [Deployment] Added missing environment configuration in Dockerfiles for backend and taskrunner. See this article. (16347), closes 32468
  • [Neos Studio - VSCode] Fixed VS Code navigation handling so UIView default open mode is applied before delegation, preventing popup navigations without an explicit target from being redirected to the extension. Initial route-based view openings were kept local to avoid unintended delegation loops. (16355), closes 32467
  • [Neos Studio] Fixed modification indicator badge in Report and ReportStyle designers. (16362), closes 30903
  • [Neos Studio] Fixed UI Template editor IntelliSense so selecting a suggestion after partially typing a bound expression no longer dropped characters. (16397), closes 32572
  • [Tenant Management] Fixed tenants cache not rebuilding correctly when firing multiple database migrations. (16393), closes 32470
  • [Tenant Management] Optimized tenant-user state store rebuilds by batching tenant/cluster retrieval and processing normalized user logins once, reducing cache reconstruction overhead. (16442), closes 32470
  • Disabled sorting for grouped scalar lookup-backed properties to avoid OData errors. (16439)
  • Fixed automatic vertical scrolling during datagrid row drag-and-drop when hovering near the top or bottom edges. (16389), closes 32561
  • Fixed chatbot message deserialization for follow-up questions. (16416), closes 32599
  • Fixed Datagrid infinite scrolling fallback to the view model setting when the infinite-scrolling prop is null. (16439)
  • Fixed datagrid row detail height recalculation to follow asynchronous detail content changes and reload scenarios. Detail rows now resize more reliably without relying on a short timeout window. (16448), closes 32179
  • Fixed micro-frontend in the deployed environment. (16338)
  • Fixed project file discovery to exclude bin and obj only at the project root, while still scanning nested folders with the same names. This resolved compilation issues when legitimate nested directories were named bin or obj. (16467), closes 32773
  • Fixed unbound Lookup required validation messaging when clearing input. (16439), closes 32672

v3.0.6

Published on Mar 11, 2026.

Fixes

  • Added service account documentation. (16302)
  • Fixed double execution PropertyChanged event rule when property watcher is enabled (Properties.MyProperty.EnableWatcher()). (16273), closes 32301
  • Fixed lookup filter behavior so selected suggestions stayed synchronized when selections changed externally or during search. (16273)
  • Fixed report generation toast download/print actions to use the application base URL instead of the reporting base URL, preventing invalid links when the NeosNotificationCenter module is not used. (16294), closes 32390
  • Fixed tenants cache rebuild triggering unnecessary subscriptions on business clusters. (16287)
  • Fixed ViewModel fields initialization after remote services initialization. (16298), closes 32400
  • Fixed visibility of actions on datagrid rows that were appearing behind frozen columns. (16288), closes 32403
  • Prevented default tenant lookups from triggering state store or database access in TenantsAccessor calls. (16287), closes 32402

v3.0.5

Published on Mar 09, 2026.

Fixes

  • [Helm] Fixed volume name too long error while deploying chart. (16260), closes 32383
  • Fixed an issue where all UI views implicitly used by a UI view in micro-frontends had to be listed in the ExposedUIViews configuration. (16246)
  • Fixed multiple reloads on the first launch of the application after a neos run with the micro-frontends. (16246)
  • Fixed non-blocking errors in development when the proxy server tries to call Tenant Management while not in a multi-tenant mode. (16238), closes 32321
  • Fixed UI template IntelliSense by filtering snippet and attribute-value completions based on typed prefixes. (16262), closes 32375

v3.0.4

Published on Mar 05, 2026.

Features

  • Added AddNew method to the IViewModelProperties interface to allow adding unbound UI view properties programmatically. (16147)
  • Added AddValidationMessage, RemoveValidationMessage, ClearValidationMessages, and ClearPropertyValidationMessages methods to the IUIView interface for manual control of validation messages. (16147)
  • Added SetValue method to the IUIView interface to set an item's property value by property name. (16147)
  • Added an option on AI agent to allow attachments. (16121)

Fixes

  • [Helm] Fixed Zipkin pod OOM crashes in production by configuring JVM heap settings to automatically detect container memory allocations (16139), closes 32267
  • Fixed datagrid refresh when validation messages are applied. (16136), closes 32177
  • Fixed images within UI views opened in micro-frontend mode. (16147), closes 32261
  • Fixed navigation within UI views opened in micro-frontend mode. (16147)
  • Fixed user permissions cache invalidation on tenant update. (16143), closes 32015

v3.0.3

Published on Mar 03, 2026.

Fixes

  • [Task Scheduler] Fixed tasks failing to start with Dapr version 1.16+. (16123), closes 32233
  • Fixed AcceptEntityViewChanges in the XUnit test framework so manually assigned IDs are preserved instead of being overwritten during change acceptance. (16119), closes 32254

v3.0.2

Published on Feb 26, 2026.

Breaking changes

  • [Background tasks] The Identifier parameter of ServerMethodStartOptions must now conform to the RFC 1123 subdomain format (lowercase alphanumeric characters, '-' or '.', starting and ending with an alphanumeric character), following the upgrade to Dapr 1.16. (15382)
  • [Neos studio] NEOS_DAPR_HttpMaxRequestSize is now deprecated following its deprecation in Dapr 1.16. You should use NEOS_DAPR_MaxBodySize instead. Set the value using size units (e.g., 16Mi for 16MB). The default is 4Mi. See this article in Dapr documentation for more details. Note that using this parameter is not recommended since the limit in deployed environnement will still be 4Mi. (15382)

Features

  • [Dapr] Updated Dapr version from 1.13 to 1.16. (15382)
  • [Helm] Added the clusters.dapr.workflow property to configure specific cluster sidecar workflow behavior (see this article). (15993)
  • [Helm] Added the ability to configure or disable the creation of Prometheus PodMonitor to expose Dapr sidecar metrics. See this article. (16017)
  • [NeosNotificationCenter] Added notification forwarding from the nested cluster’s notification center to the main cluster. (16070)
  • Added FilteringBehavior.ExecutionSide option to the ViewModel to enable client side filtering. (16041)
  • Added a configuration option to disable line-break validation for single-line text fields. (15927)
  • Added a new filter component for lookup properties. (15883)
  • Added backend entity validation to enforce MaxLength constraints on string and localizable string properties, with a configuration switch to disable enforcement. (15981)
  • Added generation warnings (M0067/M0068) to detect multiline inconsistencies between metadata and UI templates. (15983)
  • Added new metrics for tenants accessor. See this article. (15866)
  • Added support for report-generated interceptors to post-process generated reports before end-user notifications or server-side callbacks. (15894)
  • Improved authentication in development mode: Neos Studio API requests for a cluster requiring authentication are no longer authenticated; only access to the cluster itself requires authentication. (16023)

Fixes

  • [Helm] Fixed Dapr sidecar metrics not scraped by Prometheus. (16017), closes 32035
  • [Neos Studio] Fixed the multi-line control error when saving a function with authorization condition. (15958), closes 32020
  • [NeosStudio] Fixed an error when opening the YAML editor (Ctrl+Shift+Y) in the VS Code extension. (16058), closes 32118
  • Fixed an issue in multilingual clusters where localized string fields (lookup and datagrid) displayed the neutral language (first configured language) instead of the user's current language. (15914), closes 31841
  • Fixed an issue where validation rules were not triggered when the validation rule name matched a property name. (15949), closes 32002
  • Fixed datagrid row validation indicator style. (15949)
  • Fixed decorator execution order by sorting business assemblies by module hierarchy. (15933), closes 31991
  • Fixed filter bar popovers issue where multiple could be open at the same time. (16056), closes 31985, 31993, 32014
  • Fixed neos migrate-metadata to fail fast with a clear error when module dependencies were missing (e.g., when neos restore had not been run). (15853), closes 31228
  • Fixed server method enum parameter default values by normalizing short enum member expressions to fully qualified values and comparing equivalent defaults consistently during synchronization. (15918), closes 31630
  • Fixed the issue where the HTTP 200 code was being returned by the development proxy server instead of the 502 code when the backend was not responding. (16031)
  • Fixed the test helper method AcceptEntityViewChanges() to properly call AcceptChanges() on entity views, ensuring that original values are correctly reset when changes are accepted. (15932), closes 31946

v3.0.1

Published on Feb 17, 2026.

Breaking changes

Features

  • [Neos Studio] Enabled organizing server method implementation files in subfolders. (15746)
  • Added FilterComponent property to IViewModelFilterableAttribute interface to set the default display mode of the filter component. (15865)
  • Added WithFrameUrlParameters on the NavigationOptions class. The parameters will show as being prefixed with an f_ in the URL to distinguish them from global parameters. They can be accessed via the UrlContext property of the view-model. (15709)
  • Added several display modes to the date filter component: Default (existing mode), CalendarDay (calendar with day view), CalendarMonth (calendar with month view), CalendarYear (calendar with year view). (15865)
  • Added SQL query in Jager traces. (15841)
  • Added support for executing multiple server-method subscribers for the same event in a deterministic order. (15736)
  • Added support for triggering background server methods via Pub/Sub subscriptions. (15736)
  • Added the calculable type to the input-number component to enable calculations to be performed directly in the input. (15720)
  • Added the input-number-type attribute to the datagrid component. (15720)
  • Added the type attribute to the input-number component. (15720)
  • Updated the radio-group styles to use the CheckedBackground color from the Checkbox component to color the radio input. (15708)

Fixes

  • [Neos Studio] Fixed StringResource dependency detection so that string resources used as UI action panel group captions are correctly resolved. (15772), closes 30840, 30987
  • [Neos Studio] Fixed the layout of the "Menu entry" view in the right-hand side panel of the Menu editor: the code editor wasn't filling the available vertical space. (15709)
  • [Studio] Fixed Json reporting data export from the Report Designer. (15758), closes 30289
  • [User Permissions] Fixed the "Default printer" field and "Report print settings" tab of the user settings UI, which are now hidden when not in the desktop application (tauri). (15771), closes 31792
  • Fixed an issue in TPH metadata generation where the table name was incorrectly initialized for derived entities. (15819), closes 31644
  • Fixed an issue where editable reference properties without a sub-view were incorrectly stripped from data sent to the server, causing save errors. (15772), closes 30840, 30987
  • Fixed entity view retrieval by key to correctly apply retrieving-rule filters (including entity-level filters). (15816), closes 31829
  • Fixed loading and generation of event rules when using inheritance across multiple modules. (15712), closes 30621, 31539, 31577
  • Fixed metadata generation for inheritance by preventing derived TPT tables from being marked as multitenant. (15868), closes 30986
  • Fixed migration history incorrectly displaying an error when creating a tenant. (15837), closes 31697
  • Fixed namespace generation for invalid alternate key message in entity view repository. (15754), closes 31691
  • Fixed special character ('"', '', '\r', '\n', '\t', '\f', '\b') escape in JSON values when data convertion. (15785), closes 31484
  • Fixed the bad visual effect when saving a custom view. (15771)
  • Fixed the closure of the UI view of the view-container when closing the UI view that contains the view-container. (15771)
  • Fixed the issue of theme previews not displaying in the vsCode extension. (15831), closes 31800
  • Fixed the Neos Studio MCP tool "get-information-about-neos" so that it does not return an excessive amount of information rejected by the latest versions of github copilot. (15869), closes 31939
  • Fixed the new VisualStudioVersion format in VS 2025 to preserve project GUIDs. (15776), closes 31441
  • Fixed the width of the datagrid floating bar when actions have conditional visibility. (15825), closes 31884
  • Fixed UIView event rule callback chaining when the same rule was defined in multiple sibling/independent modules, ensuring the correct next-callback module is selected. (15712), closes 30621, 31539, 31577
  • Removed unnecessary using GroupeIsa.Neos.Application.Errors; directives from generated entity views to reduce compiler warnings. (15782), closes 31827
  • Updated Semantic Kernel to remove the vulnerability warning. We were not affected by the vulnerability. (15871)
  • Updated Stimulsoft library from version 2026.1.1 to version 2026.1.3 (fixes bugs with images). (15833), closes 31617

v3.0.0

Published on Feb 05, 2026.

Breaking changes

  • Fixed the logic determining the required language for localizable strings: it is now always the first configured language (or the first of input cultures when provided), regardless of the current UI language. (15216)
  • For the Neos generate command, modified files no longer appear in the default output. To restore the previous behavior, you must now explicitly pass the --list-changed-files or -cf parameter. (15181)
  • Improved validation rule execution on UI : Validation rule messages are now persisted immediately for loaded items. For newly created items, messages are persisted only when at least one property has been modified. To disable the immediate persistence of validation rule messages on loaded items, set UIBehavior.PersistValidationRuleMessagesOnLoad to false. (15653)
  • Modified type of FilterDefaultOperator from FilterOperator to string on IViewModelFilterableAttribute interface. (15352)
  • Removed the extension method IAsyncEnumerable<T> ToAsyncEnumerable<T>(this IEnumerable<T> items), which is now integrated into .NET. Removed the extension method Task<List<T>> ToListAsync<T>(this IAsyncEnumerable<T> items, CancellationToken cancellationToken = default), which is now integrated into .NET. Updated .NET version from 8 to 10. See documentations about :
  • The design of EndToEnd tests has been removed from Neos Studio; tests are now created directly in the Visual Studio project. (15276)
  • Updated test infrastructure to use Moq.AutoMock 3.6.2 (preview). This version is stricter regarding duplicate type registrations; while this behavior is correct, it may cause some tests that previously passed to fail. Additionally, a very specific edge case exists when test projects reference each other and share internal members, which can surface issues described in https://github.com/moq/Moq.AutoMocker/issues/410.
    More details : 15429
  • Validation of the Multiline flag is now enforced at the Entity and EntityView levels for String and LocalizableString properties. In previous versions, Multiline = false was not strictly validated. At the UI level, the input component generally prevented entering line breaks, but there was no actual validation at the Entity or EntityView level. As a result, values containing line breaks (\r, \n) could still be persisted. Starting with this version, any value containing line break characters is rejected when Multiline = false, resulting in validation errors. Because this validation did not exist before, save operations that previously succeeded may now fail.
    More details : 15371

Features

  • [Authentication] Added support for validating JWTs from multiple identity providers to enable client-credentials authentication. See this article. (15603)
  • [Helm] Added the ability to mount more than one volume on backend/taskrunner pods using the volumes property. See this article for more details. (15602)
  • [Helm] Added the ability to set specific memory request/limit for each deployement (see this article). (15191)
  • [Neos Studio] Added persistence of the container reports used for editing the AutomaticNeosStyles collections. (In other words, each ReportStyle entity now references a Report entity to use in the ReportStyleDesignerUI.) (15240)
  • [Neos Studio] Added a restriction on modifying the DataColumn.IsKey property when the cluster is entity first. (15467)
  • [Notification center] Added an index IDX_$NeosUserNotification_TenantID_UserId_CreatedAt on $NeosUserNotification to improve the loading of user notifications. (15673)
  • [Notification center] Normalisation of the user ID before persisting its notification to optimise database queries. It is now in lower case. (15673)
  • [Reporting] Report server image is now based on Alpine Linux rather than Ubuntu. This improves security by reducing the attack surface associated with the packages installed by default in the distribution. (15443)
  • [Tenant Management] Added warnings when changing the default tenant input language or deleting input languages. (15231)
  • [UserPermissions] Added the ability to create service account instead of user account. (15603)
  • Added documentation-button component. (15163)
  • Added ForgeSuccessfulGenerationResponse API to enable PDF manipulation in the post-generation callback for server-side report generation. Example: appending a pre-existing "Terms and Conditions" (CGU/CGV) document to the generated report. (15537)
  • Added LookupContext property to the IViewModel interface. The property is only defined when the UI view is opened from the lookup modal. It contains the ViewModel (IViewModel), the property (IViewModelProperty), and the item (IUIView) bound to the lookup. (15661)
  • Added LookupTrigger property to the ReferenceRetrieving event rule arguments to obtain information about the rule trigger: Suggestions (lookup dropdown), UIView (lookup modal), Validation (when value is validating). (15411)
  • Added vertical-align attribute on vertical-layout component. (15157)
  • Added a new SaveMode.NeverThrow and TrySaveAsync() on UnitOfWork to return failed Results instead of throwing exceptions during saves. (15490)
  • Added an extension method IsNavigationLoaded to determine whether navigation properties are loaded and to check if they can be accessed without triggering lazy loading. (15375)
  • Added attachments support to chatbot messages, including UI improvements (paperclip button) and backend handling of temporary files (15316)
  • Added auto-suggest, an AI-powered feature that suggests property values when users modify related fields—Neos Studio now uses it extensively to suggest names, descriptions, captions, and data types when editing metadata. (15585)
  • Added custom filter operators. (15352)
  • Added entity view parameters support in filter bar (editable-chips display mode only). (14501)
  • Added MailAnalysis demo in TechnicalDemos clusterto process received emails using NeosAI. (15295)
  • Added named filters. (15462)
  • Added new save modes (ValidateOnly, Simulate, ThrowOnError) on IUnitOfWork. Introduced the SaveAndThrowAsync method to the IUnitOfWork interface. This new method provides a convenience wrapper around SaveAsync(SaveMode.ThrowOnError), allowing consumers to save changes and automatically throw an exception on validation or persistence failure instead of returning a failed Result.
    More details : 15081
  • Added Open AI GPT 5.2 model. (15372)
  • Added support for optional embedded editable references in API POST/PUT scenarios, with proper null-handling during editable reference updates. UI generation now reports an error if a UI view uses an entity view containing a non-required editable reference. (15675)
  • Added support for passing an initial navigation filter through navigation options via a WithFilter method. (15502)
  • Added the row-detail-expanded-by-default attribute to the datagrid to expand row details by default. (15492)
  • Added the ability to expose an entityView as an AI skill. (15372)
  • Added the NeosEmailReception module with pub/sub-based email handling. (15295)
  • Added transpilation support for TimeSpan.TryParse(string, out TimeSpan) and introduced a shared tryParseDuration helper on the client. Mapped TimeSpan() to Duration.fromMillis(0) in generated TypeScript. (15172)
  • Added Web API and MCP to get menu paths for a specified ui view. (15311)
  • Improved UI template completions. (15291)
  • Improved validation rule execution on UI : Validation rules are executed individually and are no longer executed simultaneously. (15446)
  • Modified the sorting applied to the lookup API request when a sort is added by the ReferenceRetrieving event rule: the rule-defined sort is applied before the framework-defined sort instead of replacing it. (15408)
  • Optimization of facade loading during generation by avoiding unnecessary initialization of counterpart references that are already initialized. (15263)
  • Rendered datagrid column header documentation using the markdown-viewer to improve formatting. (15687)
  • Tenant manager: Ability to filter based on the license client (15597)
  • Updated .NET version from 8 to 10. See Breaking changes section for further information. (15147)
  • Updated Stimulsoft library from version 2025.3.5 to version 2025.4.2 (fixes saving changes after performing the Undo command in the Designer). (15396)

Fixes

  • [Neos Shared UI] Revert padding change of the root element of neos-template-list UI component. (15156), closes 30715
  • [Neos Studio] Fixed detection of server method calls in client code to correctly handle multi-line invocations, (15223), closes 30703
  • [Neos Studio] Added a filter on enum type lookups to take into account the scope and layer of the business assembly. (15527), closes 31223
  • [Neos Studio] Fixed adding an image from the image lookup UI view. (15453), closes 31267
  • [Neos Studio] Increased timeout on generation API request (5min -> 10min). (15448)
  • [Neos Studio] Removed duplicates from the list of key properties available in the API route settings. (15470), closes 30910
  • [NeosDashboard] Fixed colors defined by a user on a dashboard data source not being taken into account. For now, colors can no longer be set by a user on Doughnut and Pie data sources (they still can be set by code directly on the data source definition). (15195), closes 30772
  • [NeosDashboard] Fixed hardcoded UI view titles. (15287)
  • [NeosDashboard] Fixed images incorrectly marked as colored when they were not. (15287)
  • [NeosDashboard] Fixed overlooked references to the NeosDashboard icon that needed renaming. (15287)
  • [NeosDashboard] Fixed the dashboard list not refreshing after adding a new dashboard. (15287)
  • [NeosDashboard] Fixed the missing toolbar in the dashboard list screen. (15287)
  • [TenantManagement] Fixed tenant cache not rebuilding correctly on user request. (15542)
  • [TenantsAccessor] Reduced load on Tenant Management service during initialization by caching tenant resolution data with automatic memory management (see this article for technical details). (15614)
  • [User Permissions] Preserved system-generated user logins (e.g., ) during user creation and update with Microsoft Entra External ID or Azure AD B2C, preventing them from being overwritten by normalized email. (15357), closes 30895
  • Added daprVersion parameter support in Helm chart, enabling proper Dapr sidecar version alignment when deploying clusters with previous versions. See the documentation for more details. (15358)
  • Added missing change to finalize the fix for the cyclic DI migration loop. (15193)
  • Fixed message-position attribute on several input components. (15386), closes 31201
  • Fixed a serialization issue in an MCP exposure of an entity view with a cyclic reference. (15276)
  • Fixed an endless database migration loop caused by a cyclic dependency in dependency injection. (15164), closes 30731
  • Fixed an issue with the HTTP header value URI encoding. (15208)
  • Fixed CSV export of datagrid to ignore column header sort indicator position. (15165), closes 30726
  • Fixed dynamic tab-item components inside repeat or if components. (15328), closes 31005
  • Fixed error when opening the additional properties UI view of the tenant entity. (15309), closes 30861, 31012
  • Fixed error when pressing Tab to focus in datagrid with buttons in column-templates. (15140), closes 30691
  • Fixed false module-hierarchy warnings in the dependency viewer by accounting for overridden property module origins. (15584), closes 31334
  • Fixed front-end loading issues in development mode on clusters containing a very large number of UIViews. (15241), closes 30857
  • Fixed generation of access APIs for bound images. (15134), closes 30675
  • Fixed Helm chart Dapr sidecars version which is now explicitly configured to match the SDK version used by the ecosystem. (15358)
  • Fixed modal closing behavior when users declined validation warning confirmations, preventing unintended closure and data loss. (15590), closes 31495
  • Fixed module root namespace validation to detect conflicts only when namespace segments overlap with the cluster root namespace (instead of substring matching). (15588), closes 30890
  • Fixed notification center toast not displaying any message when the localizable string of the message does not contain the current language. (15260)
  • Fixed partial and incremential generation of lookups when modifying suggestion properties. (15599), closes 31527
  • Fixed pre-validation rules triggered twice in the tenant editing user interface. (15312), closes 30866
  • Fixed read-only on EntityViewProperty.ClientSideReadOnly in cases where logical deletion is implemented. (15484), closes 31355
  • Fixed retrieving UI event rules when overridden. (15595), closes 31512
  • Fixed saving of deleted items from an unembedded collection. (15460), closes 31222
  • Fixed source of UI component template diagnostics. (15209), closes 30831
  • Fixed static report style association in the Report Designer UI in Neos Studio. (15521), closes 29934
  • Fixed synchronization of position between the original view model and the nested view model. (15456), closes 31299
  • Fixed the data type resolution for entity view repository key construction when the key included a reference, ensuring correct repository generation. (15218), closes 30837
  • Fixed the loss of default value when changing a column from nullable to non-nullable during migration. (15348), closes 31070
  • Fixed the save behavior when selecting Save on the prompt indicating there are unsaved changes when closing a UI, to avoid saving embedded UI views that use data sharing. (15247), closes 30873
  • Fixed the vertical alignment of the input-type filter-bar with the add button in the default lookup modal template. (15362), closes 31178
  • Fixed the visibility of the add button to check creation permissions for the adding UI view. (15406), closes 31220
  • Fixed type of the Value and OldValue properties of the PropertyChanged event rule arguments on a reference property that must be nullable. (15452), closes 31204
  • Improved entity save performance by reducing unnecessary persistence tracking (15656)
  • Improved the robustness of logout request interception by the proxy. (15373)
  • Optimized generation process for very large clusters, significantly improving performance and reducing memory usage. (15181), closes 30636
  • Revert anonymous route check to use “contains” instead of “startsWith”, restoring the behavior from version 2.4. (15245), closes 30879

Previous releases

You can find the changelog of previous releases by clicking on the following links :