v2.5.21
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. (17606)
Fixes
- Fixed a memory leak in Semantic Kernel dependency injection configuration. (17577)
- Fixed disabled tenants displaying in tenant selection screen. (17606), closes 34071
v2.5.20
Published on Jun 01, 2026.
Fixes
- Database migrations for the cluster have been moved to background processing. (17221), closes 33741
- Fixed the error in the cache building process. (17221)
v2.5.19
Published on May 26, 2026.
Fixes
- [Neos Studio] Fixed tenant API path detection for tenant identifiers containing
_or-. (17229) - [Tenant Management] Improved unavailable-tenant cache recovery after Redis subscription failures. (17229), closes 33766
- Fixed Pub/Sub processing so remote calls to Tenant Management
GetClusterVersionsnow propagated the user. This prevented 403 permission errors when tenant cache was unavailable. (17219), closes 33858 - Fixed the NeosAI cluster Dapr
app-idwhich was colliding with the identifier of the main application. (17201), closes 33805
v2.5.18
Published on May 22, 2026.
Features
- Blocked gateway routing to unavailable or migrating tenants by returning HTTP 503 instead of forwarding requests. See this article. (16942)
- Added new
neos_unavailable_tenantmetrics. See this article. (16942)
Fixes
v2.5.17
Published on May 13, 2026.
Features
- Added a
BackgroundService-based execution mode for background server methods when Dapr Workflow was disabled. See this article. (17048) - Added configuration to switch between local background execution and Dapr Workflow support. See this article. (17048)
Fixes
- Fixed tenants cache rebuild triggering unnecessary subscriptions on business clusters. (17057)
- Prevented default tenant lookups from triggering state store or database access in
TenantsAccessorcalls. (17057), closes 32402 - Update of the Dapr .NET SDKs to version 1.17.9. (17069)
v2.5.16
Published on May 06, 2026.
Features
- [Documentation] Added documentation about deployment, rollback, and tenant migration workflows. (16896)
- [Observability] Added
neos_tenant_cache_rebuild_requests_totalmetric (see this article). (16896) - [Tenant Management] Added
TenantsResolutionCacheFullRebuildUseTaskRunnerByDefaultandTenantsResolutionCachePartialRebuildUseTaskRunnerByDefaultto override tenant cache building dispatch mode (task-runner vs backend service). See this article. (16896) - [Tenant Management] Added
POST /api/v1/methods/resetalltenantcacheendpoint to force rebuilding all tenant cache. See this article. (16896)
Fixes
- [Tenant Management] Added synchronous tenant-cache rebuilding for partial rebuilds (eg: during tenant migration). (16896)
v2.5.15
Published on Apr 28, 2026.
Features
- [Tenant Management] Added an endpoint GET
methods/tenantscacherebuildingstatusto check tenants state stores rebuilding status. See this article. (16769)
Fixes
- [Security] Updated
NuGet.*package references to6.14.3across the affected .NET projects to addressGHSA-g4vj-cjjj-v7hg. (16796), 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. (16785)
- [Tenant Management] Optimized tenant-user state store rebuilds by batching tenant/cluster retrieval and processing. (16769)
- [Tenant Management] Fixed tenants cache not rebuilding correctly when firing multiple database migrations. (16769)
v2.5.14
Published on Apr 14, 2026.
Fixes
- Fixed an issue where semantic function invocations were not logged in Neos AI for GPT 5.2 and other models without direct tokenizer support. (16636), closes 32962
- Fixed SignalR backward compatibility issue introduced in version 2.5 caused by tenant and user identifier casing normalization. (16734), closes 33026
v2.5.13
Published on Mar 24, 2026.
Fixes
- [Helm] Fixed volume name too long error while deploying chart. (16259), closes 32383
- 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. (16450), closes 32179
v2.5.12
Published on Mar 05, 2026.
Fixes
- [Helm] Fixed Zipkin pod OOM crashes in production by configuring JVM heap settings to automatically detect container memory allocations (16138), closes 32267
- Fixed user permissions cache invalidation on tenant update. (16179), closes 32015
v2.5.11
Published on Mar 03, 2026.
Fixes
v2.5.10
Published on Feb 24, 2026.
Breaking changes
- [Background tasks] The
Identifierparameter ofServerMethodStartOptionsmust 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. (15968) - [Neos studio]
NEOS_DAPR_HttpMaxRequestSizeis now deprecated following its deprecation in Dapr 1.16. You should useNEOS_DAPR_MaxBodySizeinstead. 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. (15968)
Features
- [Dapr] Updated Dapr version from 1.13 to 1.16. (15968)
Fixes
v2.5.9
Published on Feb 20, 2026.
Features
- Added new metrics for tenants accessor. See this article. (15878)
Fixes
- [Studio] Fixed Json reporting data export from the Report Designer. (15759), closes 30289
- Fixed decorator execution order by sorting business assemblies by module hierarchy. (15934), closes 31991
- Fixed namespace generation for invalid alternate key message in entity view repository. (15763), closes 31691
- Updated Stimulsoft library from version 2026.1.1 to version 2026.1.3 (fixes bugs with images). (15830), closes 31617
v2.5.8
Published on Feb 06, 2026.
Features
- 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. (15700)
Fixes
- [Helm] Fixed report server volume not mounting with correct fsGroup. (15681), closes 31656
- Fixed loading of a specific non-embedded collection using the
EnsureDataLoadedAsyncmethod. (15696)
v2.5.7
Published on Feb 02, 2026.
Fixes
- Fixed loading and generation of event rules when using inheritance across multiple modules. (15645), closes 31577
v2.5.6
Published on Jan 28, 2026.
Features
- [Helm] Added the ability to mount more than one volume on backend/taskrunner pods using the
volumesproperty. See this article for more details. (15541)
Fixes
- [TenantsAccessor] Reduced load on Tenant Management service during initialization by caching tenant resolution data with automatic memory management (see this article for technical details). (15610)
- Fixed UIView event rules generation for inherited views by resolving rules per module and avoiding generation when no inherited event rules are defined. (15606), closes 31539
- Fixed retrieving UI event rules when overridden. (15608), closes 31512
v2.5.5
Published on Jan 26, 2026.
Features
- Added the
row-detail-expanded-by-defaultattribute to thedatagridto expand row details by default. (15524)
Fixes
- 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. (15583), closes 30621
- [TenantManagement] Fixed tenant cache not rebuilding correctly on user request. (15538), closes 31431
v2.5.4
Published on Jan 12, 2026.
Features
- Updated Stimulsoft library from version 2025.3.5 to version 2025.4.2 (fixes saving changes after performing the Undo command in the Designer). (15415)
Fixes
- Fixed Helm chart Dapr sidecars version which is now explicitly configured to match the SDK version used by the ecosystem. (15356)
- Added
daprVersionparameter support in Helm chart, enabling proper Dapr sidecar version alignment when deploying clusters with previous versions. See the documentation for more details. (15356) - [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. (15368), closes 30895 - Fixed the loss of default value when changing a column from nullable to non-nullable during migration. (15349), closes 31070
- [NeosDashboard] Fixed the dashboard list not refreshing after adding a new dashboard. (15289)
- [NeosDashboard] Fixed the missing toolbar in the dashboard list screen. (15289)
- [NeosDashboard] Fixed images incorrectly marked as colored when they were not. (15289)
- [NeosDashboard] Fixed overlooked references to the NeosDashboard icon that needed renaming. (15289)
- [NeosDashboard] Fixed hardcoded UI view titles. (15289)
v2.5.3
Published on Dec 12, 2025.
Features
- [Helm] Added the ability to set specific memory request/limit for each deployement (see this article). (15190)
Fixes
- Fixed the save behavior when selecting
Saveon the prompt indicating there are unsaved changes when closing a UI, to avoid saving embedded UI views that use data sharing. (15254) - Revert anonymous route check to use “contains” instead of “startsWith”, restoring the behavior from version 2.4. (15246), closes 30879
- [Neos Studio] Fixed detection of server method calls in client code to correctly handle multi-line invocations, (15226), closes 30703
- Fixed the data type resolution for entity view repository key construction when the key included a reference, ensuring correct repository generation. (15219), closes 30837
- Fixed source of UI component template diagnostics. (15213), closes 30831
- [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
DoughnutandPiedata sources (they still can be set by code directly on the data source definition). (15205), closes 30772
v2.5.2
Published on Dec 08, 2025.
Fixes
- Added missing change to finalize the fix for the cyclic DI migration loop. (15194)
v2.5.1
Published on Dec 04, 2025.
Fixes
- Fixed CSV export of datagrid to ignore column header sort indicator position. (15167), closes 30726
- Fixed an endless database migration loop caused by a cyclic dependency in dependency injection. (15166), closes 30731
- [Neos Shared UI] Revert padding change of the root element of
neos-template-listUI component. (15161), closes 30715 - Fixed error when pressing Tab to focus in datagrid with buttons in column-templates. (15141), closes 30691
- Fixed generation of access APIs for bound images. (15136), closes 30675
v2.5.0
Published on Nov 28, 2025.
Key insights
Welcome to the 2.5 release of Neos. There are many updates in this version that we hope you'll like, some of the key highlights include:
- Alternate keys
- Constants management enhancement
- Enhanced UI constants
- Hardcoded strings detection tool
- New
EntityViewRetrievingevent rule on entity - Expose Web APIs as MCP Tools
- Partial templates
- Datagrid card mode
- Tenant Management
- Reporting
- UI Customization
- Neos dashboard
Alternate keys
Neos now supports alternate keys on entities, allowing you to define unique identifiers alternative to the primary key. This feature is particularly valuable for data import scenarios and communication with external partners.
Alternate keys enable unique index generation, automatic repository search methods, and entity view integration with two-way binding for references, including support for composite keys and nested navigation.
Migration note: When upgrading to version 2.5, Neos automatically generates alternate key metadata from existing unique indexes on your data tables.
API response comparison for an entity view with embedded references and collections:
Traditional entity view (primary key based):
{
"orderID": 1001,
"orderNumber": "ORD-2025-001",
"date": "2025-11-02",
"rowVersion": "AAAAAAAAB9E=",
"customer": {
"customerID": 42,
"code": "ACME-CORP",
"name": "Acme Corporation",
"preferredProductCategory": {
"preferredProductCategoryID": 703,
"code": "ELECTRONICS",
"name": "Electronics"
},
"rowVersion": "AAAAAAAAB9F="
},
"details": [
{
"orderDetailID": 5001,
"quantity": 5,
"rowVersion": "AAAAAAAAB9G=",
"product": {
"productID": 301,
"categoryID": 53,
"code": "LAPTOP-PRO",
"name": "Professional Laptop"
}
}
]
}
Entity view based on alternate keys (using natural business identifiers):
{
"orderNumber": "ORD-2025-001",
"date": "2025-11-02",
"customer": {
"code": "ACME-CORP",
"name": "Acme Corporation",
"preferredProductCategory": {
"code": "ELECTRONICS",
"name": "Electronics"
}
},
"details": [
{
"quantity": 5,
"product": {
"categoryCode": "ELECTRONICS",
"code": "LAPTOP-PRO",
"name": "Professional Laptop"
}
}
]
}
For comprehensive documentation, see Alternate keys and Alternate keys in entity views.
Constants management enhancement
Neos now provides a comprehensive constants management system to centralize configuration values, magic numbers, and other fixed values. You can create constants static classes through Neos Studio with scope control (Shared/Backend/Frontend) and support for all C# constant-compatible data types.
For comprehensive information, see Constants.
Enhanced UI constants
Neos now provides standardized constant classes for UI development to eliminate hard-coded strings and ensure consistency across your frontend code.
// Instead of hard-coding
string color = "primary-500";
string size = "medium";
// Use the constants
string color = StandardColorNames.Primary500;
string size = StandardSizes.Medium;
Available constant classes include StandardColorNames (theme colors), StandardSizes (UI sizing), FontWeights (typography), and MessageSeverities (message levels).
For detailed usage, see UI Constants.
Hardcoded strings detection tool
A new tool in Neos Studio helps identify hardcoded strings that could be replaced with constants or resources. The tool analyzes both server and client-side C# code, showing file locations, occurrence counts, and smart suggestions when hardcoded strings match existing constants.
Access the tool from Tools > Hardcoded strings in Neos Studio.
For complete usage instructions, see Constants - Finding hardcoded strings.
New EntityViewRetrieving event rule on entity
A new event rule type has been added to allow to customize the filter when the underlying entity of the entity view is retrieved. For more information, see Event rules - Retrieving event rule.
Expose Web APIs as MCP Tools
Neos now supports the Model Context Protocol (MCP), allowing you to expose Web APIs as MCP tools. This enables AI models to interact with your APIs seamlessly. For more information, see Model Context Protocol (MCP).
Partial templates
Partial templates allow you to break down complex UI view and UI component templates into smaller, reusable fragments. Defined within a UI view or component, they share the full parent context (properties, actions, methods, computeds) and are evaluated at generation time.
Common use cases include splitting large templates into logical sections and creating responsive layouts with different desktop/mobile views.
For more information, see Partial templates.
Datagrid card mode
The datagrid now supports a card mode for responsive layouts. New attributes allow you to control when and how the datagrid switches between grid and card mode. You can also customize the card content using the card-template node.
For more information, see Datagrid.
Tenant Management
Publishing messages
We have added the possibility to publish messages to one or more tenants or to a specific version of a cluster. A common use case is the announcement of an upcoming update. To see more details, see the documentation.
Additional properties for the Tenant entity
The goal of this feature is to allow to customize the Tenant entity by dynamically adding additional data, see the documentation.
Definition of metadata for additional properties

Displaying additional properties

Editing additional properties

Reporting
Neos Studio performance improvements
Most reporting-related asset transfers (templates, styles) are now performed in UTF8 instead of the more expensive and cryptic Base64. Also the templates and styles listings do not include the Content property anymore: this should improve the overall performance of Neos Studio.
Styles bundle with 'AutomaticNeosStyles' collection
Alongside the report templates, we have report styles bundles.
A report styles bundle is expected to contain a collection of styles called "AutomaticNeosStyles".
When a template is statically configured to use a styles bundle or if the styles bundle is invoked dynamically via the WithStylesCollection API, the "AutomaticNeosStyles" collection will be imported and applied automatically (Viewer and PDF).
More information: report styles.
Styles bundle designer
Report styles are editable in a similar editor as the one used for the report templates.

Each time we want to edit an "AutomaticNeosStyles" collection we will need to pick a report that will act as a temporary container for those styles and allow to preview them in an actual document.
A launcher allows to pick a report that will embed the edited bundle of styles. For convenience, the reports referencing the bundle are emphasized:

Tenant module override
In a similar manner as the Content of a report template, the Content of a styles bundle can be overridden by a Tenant module.

UI Customization
Custom view picker
A new custom-view-picker component is available to manage custom views.
For more information, see Custom view picker.
Custom view sharing
To share a custom view, the user must now have access to Custom view sharing function.
Also, a shared custom view can be set as the default for users who do not have one.
Default custom view assignment
A new function Default custom view assignment has been added to enable setting a custom view as the default.
Neos dashboard
The Dashboard module allows you to display, customize, and manage dynamic dashboards within the Neos platform. It provides a synthetic and interactive view of important data for monitoring your activity.
More information : Dashboard.

Breaking changes
- Renamed the
optionsparameter of theStartAsyncmethod toserverMethodStartOptionsto prevent naming conflicts when a server method also defines a parameter namedoptions. You are only affected by this change if you explicitly used the named argumentoptionswhen callingStartAsync. (15095) - Added validation to UI templates to warn when a UI component belongs to a module not referenced by the template's module or its parent modules. (15037)
- Added strict validation to UI templates to emit an error when a UIComponent references a Computed that does not exist. Previously, this situation produced no error. (15037)
- Added a tenant locking mechanism to prevent changing the current tenant after DbContext initialization; attempts now throw an InvalidOperationException. Updated documentation to guide per-tenant scope usage when iterating across tenants. (14934)
- Modified how to obtain
Devicein UI code : It is now a static class (GroupeIsa.Neos.Designer.UIAbstractions.Device) instead of a property (of typeGroupeIsa.Neos.Designer.UIAbstractions.SystemEnvironment.IDevice) on the current instance (this) so that it can be used in UI shared methods. (14766) - The ISavingRule interface changed from ISavingRule
to ISavingRule , removing contravariance. Any custom interfaces inheriting from it must also remove the in modifier to remain compatible. (14750) - Marked the Icon text property on the ViewModel as obsolete. The strongly-typed IconId property should now be used instead. (14732)
- [License Management] Added unique indexes to the following tables:
CommercialModule,CommercialSolution,Customer,Feature,TechnicalFunction. Don't forget to remove duplicates from the database. (14622) - Added cluster option
UIDefaultBehavior:LayoutOverflowFixto prevent content overflow in layouts with fixed width, fixed height or the attributeslayout:width="fill"orlayout:height="fill". This option is disabled by default for existing clusters as it can lead to scrollbars appearing in areas with tight dimensions. For more information, see this article.
More details : 14372 - Modified frontend generation of entity view parameters. Now, to access the value of a parameter, you must use the
Valueproperty:EntityViewParameters.ParameterName.Value. A metadata migration automatically updates the existing code, but since the migration is based on a regular expression, there may be some edge cases that are not handled. (14468) - AIEvaluationOptions.ExpectedAnswer has been renamed to AIEvaluationOptions.EvaluationContext, and use of AIEvaluationOptions.ExpectedAnswer is marked as obsolete. (14242)
- [User Permissions] Removed
GetAssignedFeatureChildrenTreeNodeserver method. UseGetUserFunctionTreeserver method instead. (14329) - [User Permissions] Removed
TreeNodeFeaturedata object. Use theUserFunctionTreeNodedata object instead. (14329) - [User Permissions] Removed
GetFunctionsandGetVisibleFunctionsserver methods. Use theILicenseFunctionLoaderservice instead. (14306) - [User Permissions] Marked
FunctionTypeproperty of thePermissionentity as obsolete. The function type must not be stored in the database since it may not match the actual function type (if the type has changed in Neos Studio). (14061) - The
tab-itemcomponents are now hidden when theirvisibleattribute is bound to an element with a null value (same behavior as theconditionof aifcomponent). Atab-itemis still visible by default when nothing is set in itsvisibleattribute. (14104) - The
selected-tab-indexattribute of thetabscomponent now uses strict two-way binding: the internal value and the parent value are synchronized immediately in both directions. Any logic that relied on the internal state temporarily diverging from the parent value will no longer work. Review your usage of the attribute. (14104)
Features
- Added
footer-templatenode to be able to add content in datagrid footer. (15069) - Added
style:font-weightandstyle:hover-font-weightdirectives. (15062) - Added new theme variables :
DatagridFooterBackground,DatagridFooterForeground,InputReadonlyFocusBorder,ModalFooterBackground. (15059) - Improved default value entry in Neo Studio. (15038)
- Added
Dashboardmodule (14986) - Added an article explaining how to restore an encrypted database. (14915)
- Trimmed client API payloads by sending only scalar key properties for references and excluding server-side read-only properties (except keys) in POST/PUT requests. (15022)
- Added alternate keys support on entities, enabling unique business identifiers with unique index generation, repository methods, and entity view integration. (15007)
- Added
InvokeWithResponseAsync<T>toIRemoteServiceInvokerto return both deserialized data and the HTTP response, enabling header access (e.g., total record count). (14988) - Modified property documentation handling: Use
markdown-viewercomponent instead of converting Markdown to HTML during generation. (14930) - Improved the datagrid to request the displayed value of a scalar property with lookup if it has not been loaded (e.g. new row with the lookup property having a default value). (14916)
- [Neos Studio] Added focus on the Name field when creating a table, an entity, entity view, UI view and UI shared method. (14847)
- Added methods for handling unbound report generation response without having to take the persistence mode into consideration. The new APIs will accommodate for both legacy and Network Attached Storage-based deployments:
- ReportGenerationResponse
GetDownloadIdentifierAsync(ITemporaryFileStorage)
- ReportGenerationSucceededNotificationArgs
CreateFromResponseAsync(ITemporaryFileStorage, ReportGenerationResponse)
More details : 14853
- ReportGenerationResponse
- Improved
tree-viewcomponent to display a spinner when a node is loading on expand. (14870) - Added console logs in the browser to help debug UI-side permission evaluations when a permission is denied. (14858)
- Improved the installation of npm packages at cluster startup using
neos runto prioritize the local npm cache. (14850) - [Neos Studio]Added copy of the full type c# name in some Neos studio editors. (14796)
- [Neos Studio] Added a confirmation dialog requiring the method name when deleting a server method in Neos Studio. (14829)
- [Manager] Improved the Swagger button to make it usable in multi-tenant mode: It opens the tenant selection page before accessing Swagger. (14828)
- Added
ValidateDataAsync(bool validateUnchangedItems)method on ViewModel. (14803) - Added theme
paddingconfiguration forcardcomponent. (14773) - Added
header-paddingandcontent-paddingattributes ongroup-boxcomponent. (14773) - Improved
input-date,input-date-timecomponents to not focus the input after selecting a value from the calendar on touch device. (14767) - Improved
lookupcomponent to not focus the input after selecting a value from the modal on touch device. (14767) - Fixed the number of active filters in the
filter-bar(inputsdisplay mode). (14760) - Automatic report styles collection and tenant module override:
- Added a report styles designer.
- Added AutomaticNeosStyles collection handling during report generation.
- Added capability to override a report styles bundle for a given tenant module.
More details : 14568
- Added support for reporting multiple validation errors from entity view saving rules without throwing exceptions via AddError, and propagated these errors to cancel save operations. (14750)
- Added
modeattribute onframes-container:tabs(default mode) orstack(frames are stacked and tabs are not visible). (14748) - Added a new module named NeosAIEMail2Entity with an email analyser agent to convert emails into JSON format and then persist the data in an entity, a webhook subscription, and an UI to see the logs. (14480)
- Improved TechnicalDemos to trigger email processing and extended Order description length. (14480)
- Added a distinctive icon for key properties in bound entity views (except for views based on complex alternate keys). (14732)
- Added
expandedattribute onpanel-menucomponent to control the open/closed state of the menu. (14648) - Added
toggle-button-visibleattribute onpanel-menucomponent to allow hiding the "Collapse" button. (14648) - Added
collapse-modeattribute (collapse,hidden) onpanel-menucomponent to specify whether the menu was hidden or collapsed when minimized. (14648) - Added
panel-menu-headerandpanel-menu-footertemplates to customize the header and footer content of thepanel-menucomponent. (14648) - Added
labelattribute onglobal-search-buttonto customize or hide the label button. (14648) - Added
max-linesattribute onheadingcomponent. (14648) - Added the reasoning effort parameter for AI agents. (14704)
- Added the ability to include skill instructions within an AI agent's instructions. (14704)
- [UI Customization] Added permission to assign default views. (14685)
- Updated Stimulsoft library from version 2025.3.5 to version 2025.4.2 (fixes saving changes after performing the Undo command in the Designer). (14718)
- Added the ability to expose entity views and server methods as MCPs. (14676)
- Added a extension methode IsPrivate() to System.Net.IPAddress. (14696)
- Added a new event rule "Entity View Retrieving" on the entity. (14617)
- Added an unique agent in Neos to replace Gaia, Querya and Vasco. (14634)
- Adjusted the full-size modal to fill the entire viewport on screens narrower than 768px. (14637)
- Added methods to entity views to retrieve original values and track changes (HasOriginalValue, GetOriginalValue and GetOriginalOrCurrentValue). (14645)
- Added a new card mode to the
datagridcomponent for a more mobile-friendly experience. (14564) - Added sorting when building the list of features:
DisplayOrder,ModuleName,Name(14626) - Added
custom-view-pickercomponent. (14621) - Modified the order of the custom view dropdown items. Now, custom views come before the actions of creating, saving, and returning to the original view. (14623)
- [User Permissions] Added
SendTemporaryPasswordEmailproperty toUserPermissionsconfiguration to disable sending temporary password email to new users. See this article for more details. (14539) - [Tenant Management] Tenant management now needs a task-runner to handle background tasks (such as rebuilding cache). See this article if you want to override deployment default configuration. (14539)
- Added display of the UI view action keyboard shortcut in dropdown menu. (14613)
- Added background taks tracking in the manager page. (14537)
- Added support for defining alternate keys on entities. (14555)
- Added support for using alternate entity keys as the key of bound entity views. (14555)
- Added
LoadGroupSummariesAsyncmethod in theIViewModelinterface to be able to get group summaries in UI code. (14392) - Added support for placing
repeatcomponent betweentabsandtab-itemcomponents in the UI template. (14560) - Added support for placing
repeatcomponent betweensplitterandsplitter-panelcomponents in the UI template. (14560) - Improved persistence of custom views to only store differences from the original UI view. (14442)
- [UI Customization] Added entity view parameters to custom views. To persist an entity view parameter in custom views, assign
trueto theSaveInCustomViewproperty of the parameter (in theInitializedevent rule of the UI view):EntityViewParameters.MyParameter.SaveInCustomView = true;(14540) - [Deployment] Added the ability to persist RabbitMQ data in a volume to prevent data loss on failure/restart of the instance. See this article for more details. (14536)
- Disabled user account synchronization when the cluster was configured as single-tenant and logged an informational message instead. (14475)
- Updated technical documentation for the user accounts synchronization feature (UML Sequence Diagram). (14458)
- [UI Customization] Added an option to set a shared custom view as the default for users who don't have one. (14404)
- Removed user account synchronization when modifying permissions. This synchronization is functionally unnecessary. (14434)
- Reintroduced
AddBeforeContraintsCreationmethod, now it’s no longer obsolete. (14425) - Added the ability to auto-create a user after authentication with a specific role. (14415)
- Default sort input is now available in unbound entity views, as it is applied when calling
SetItemsSourcein theRetrievingevent. (14411) - Added the ability to retrieve the warning messages in the
IInputComponentin the Automation library (14381) - Added
GetFormattedValue(item)method on the UI view property (IViewModelPropertyinterface) to obtain the formatted value of the property of the specified item. (14374) - Added an unique agent for Neos studio to replace Ketty Elio and Gaia. (14242)
- Added
validation-messagecomponent. (14369) - Added
message-positionattribute on input components to be able to hide the validation message. (14354) - Added
style:font-styleandstyle:hover-font-styledirectives to italicize text. (14357) - [Deployment] Improved security and performances of Neos docker images by switching to
alpinebased images (except for report server). (13684) - Added the ability to use user permissions in global filters. (14248)
- Added
editor-optionsattribute to therich-text-editorcomponent to pass options to TinyMCE editorinitfunction. (14341) - [NeosAICore] Added
editor-optionsparameter toneos-ai-rich-text-editorcomponent to pass options to TinyMCE editorinitfunction. (14341) - [NeosAICore] Added
html-preview-editor-optionsparameter toneos-ai-writing-assistantcomponent to pass options to the HTML preview. (14341) - Added additional properties feature. The goal of this feature is to allow authorized users to customize the Tenant entity by dynamically adding additional data. (14245)
- Added partial templates on UI views and UI components. (14266)
- Removed WSL as a prerequisite for installing the framework on windows. Memurai is now installed instead of Redis inside WSL. (13923)
- Added "Print settings" option in UI view actions. The option is only used when the user is using the desktop application. (14221)
- Added the ability to customize status code pages (eg :
403,502). Please see this article. (14014) - Remove mandatory entry of 'temperature' and 'top-p' parameters from AI agents. (14215)
- Improved reporting server startup in development. (14138)
- Added the ability to create constants in Neos Studio. These constants can be used in both backend and frontend code. See documentation. (14194)
- Added C# constant classes (
StandardColorNames,StandardSizes,FontWeights,MessageSeverities) available in UI code to replace hardcoded strings, along with a "Hardcoded strings" tool in Neos Studio to identify candidates for replacement. See documentation. (14194) - Added methods
FindEnumandGetEnumin UI code to be able to get an enumeration type from its name. (14171) - Added
LookupDisplayPropertyon UI view properties. See documentation. (13997) - [Tenant Management] Added the ability to send a message to one or more tenants/clusters. (14070)
- Added SignalR open telemetry traces. (13713)
- Added
LoadSummariesAsyncmethod in theIViewModelinterface to be able to get summaries in UI code. (13994) - Added
buttons-layoutcomponent that horizontally displays a set of buttons. By default, buttons are displayed in the same order as they are listed in thebuttons-layoutcomponent. The order can be reversed in the theme. This affects allbuttons-layoutcomponents including the ones displayed by Neos framework and modules. (14064) - Added the ability to customize read data isolation for a multi-tenant cluster, see documentation. (14001)
Fixes
- [Tenant management] Fixed unwanted page reloading on tenants, clusters, and databases screens. (15107), closes 30570
- Fixed
InandNot infilter operators for Localizable String properties. (15094), closes 30586 - Fixed signature of server methods with nullable parameters followed by at least one mandatory parameter (i.e. non-nullable and without a default value) (do not add the
= nulldefault value). (15105), closes 30478, 30491 - [Tenant Management] Fixed timeouts when making changes in the tenant manager with a large number of users. (15100), closes 30546
- Fixed to commit the add row when scrolling in the datagrid. (15093), closes 29255
- Fixed filter reset when applying a custom view that doesn't have a filter. (15080), closes 30501
- Fixed the error display of an unnamed role in its cluster in the default language. (15079), closes 30568
- Fixed generation of authorization conditions when they are only present on sub-functions. (15077), closes 30564
- Fixed server data export using the NeosDataExchange module so that the entity view parameters are taken into account. (15074), closes 30502
- Improved log handling in neos run by fixing long output redirection and truncating very large messages. The common case was a failed compilation where the output was redirected to the console, producing extremely large logs. This caused the application to hang and prevented the generation process from ever completing. The new behavior avoids this issue by limiting output size while keeping the most relevant parts visible. (15070), closes 28895
- Fixed the number of active filters in the filter-bar (inputs display mode) by excluding non-filterable properties. (15072), closes 30532
- Fixed cursor restoration in textboxes by preserving the selection to prevent the caret from jumping to the end. (15061), closes 30514
- Fixed the opening of a popover from a UI method linked to a button. (15038)
- [Tenant Management] Added a fixed height to the cluster editing modal to have a scrollbar in the list of versions. (15020), closes 29016
- Database initialization failed when adding a cluster to a tenant (15036), closes 28071
- Fixed warning when a data column is required with the TPH inheritance model. (15019)
- Fixed the display error of an external role whose label in the current language and in the default language is not specified. (15013), closes 30022
- Removed the invalidation of unnecessary user caches/permissions and pub/sub UserAccountSaved when updating the user's last login date. (15016), closes 30446
- Fixed initialization of the filter bar with a
Infilter on a property with lookup. (15009), closes 30419 - [Neos Studio] Fixed the association of a resource to a function to use the resource module instead of the function module. (15021), closes 30457
- Fixing a 400 Bad Request error when calling an API with the tenant in the URL. (15005), closes 30434
- Removed --prefer-offline argument from npm install command. (15017), closes 30424
- Fixed to not load aggregations of non-displayable UI view properties. (15014), closes 30429
- [Neos Studio] Fixed the filter on UI view properties where enum members could depend on the current item. (15012)
- Fixed the position of the data grid's column picker, which could extend beyond the window. (15012), closes 30430, 30431
- Fixed the removal of roles from an external cluster when state stores are invalid or missing. (14958)
- Fixed assignment of a base entity in TPH mode on an entity to prevent pre-populating the associated table. Having the table defined on a child entity in TPH mode can result in an invalid EF Core configuration (even though it may work depending on the order in which configurations are applied). (14951), closes 30389
- Fixed the order of enum members when using visibility expressions. (14981), closes 29359
- Fixed server code generation in business assemblies to avoid creating unit test files when the test project was missing. (14961), closes 30314
- [UserPermissions] Fixed cluster roles not being visible in other clusters when the UserPermissions module was an indirect cluster dependency. (14924), closes 30374
- [Neos Studio] Added validation to ensure enum members have unique persisted values. (14925), closes 30371, 30380
- Fixed tree view explorer scoped entities synchronization (DataObject, Interface, EnumType, ConstantsStaticClass, StringResource). (14907), closes 29131
- Fixed the “Between” filter operator to handle cases where the first value is greater than the second. (14890), closes 30348
- Fixed OData filtering for GUID properties. (14902)
- [Neos Studio] Fixed removal of UI view properties when an inherited UI view exists. (14902), closes 30081, 30362
- [Neos Studio] Fixed detection of invalid server method signatures (including generic type parameters). (14898)
- [Neos Studio] Fixed obsolescence version evaluation using base module names for overridden elements. (14898)
- [Neos Studio] Fixed generation messages emitted for overridden metadata so that the message is associated with the metadata’s base module rather than the module of the last override. (14898), closes 29531, 29647, 29651
- Fixed default filter operator for Color properties. (14893), closes 30349
- Fixed string comparison on client side when one of the two strings is null. (14865)
- [Neos Studio] Fixed IntelliSense for code starting with whitespace characters. (14793), closes 28779
- Fixed tenant cache reset when creating/modifying additional property metadata. (14851), closes 29843
- Fixed display of lookup suggestions (where free values are allowed) that appeared even when focus was lost during data loading. (14862), closes 30319
- Fixed Visual Studio opening when SQL Server Management Studio is installed on the machine. (14866), closes 29596
- Prevented opening the expression editor for entity view properties without name or data type, showing an error. (14863), closes 29604, 30062
- Improved generation to avoid an unclear error message about sorting when a key is missing in an entity view. (14863), closes 29604, 30062
- Fixed sorting indicators of the datagrid so that the entity view default sorting is not redisplayed once the user has changed it. (14857), closes 30320
- Fixed a bug where server-side read-only properties could still be required, leading to save errors. (14856), closes 30253
- Fixed the checkbox selection in the datagrid when a client-side filter is applied. (14849)
- [Neos Studio] Fixed client-side filtering on an expression boolean property. (14849), closes 30308
- Made collection properties in create models nullable when nested inside editable references. (14836)
- This prevents unintended loss of existing collection items when posting entities containing editable references. (14836), closes 30273
- Fixed browser warning emitted by a
buttonin arepeaton a string array. (14839), closes 30298 - Fixed the namespace generation for entity partial classes. (14852), closes 29983
- Fixed button border when focused. (14842), closes 29524
- [Neos Studio] Fixed full screen mode of code editor in modal. (14845), closes 28899, 29490
- Fixed task-runner not working on Linux in development. (14832), closes 30247
- [UI Customization] Fixed navigation buttons in the custom view editing UI that ignored the “Style rules” tab. (14834), closes 30268
- Moved
IODataParserimplementation to the Application layer to make it available in background server methods. (14831), closes 29525 - [User Permissions] Fixed the display of permissions for a previously selected role after saving a new role. (14830), closes 29913
- Fixed an issue where child collection properties were omitted from API requests when the same property name was unbound on the parent. (14812), closes 29933
- Fixed untimely triggering of a validation rule (checks that the metadata count is greater than zero) when deleting all metadata. (14822), closes 29931
- Improved generation warnings related to quick search. (14787), closes 29864
- Fixed OData sort clause generated by the lookup to escape the
'character. (14795), closes 30217 - Added a warning when quick search is performed on the client side and one of the properties is not present on the UI side. (14784), closes 30042
- Fixed neos setup failing to install Redis on recent Ubuntu/Debian versions. (14781), closes 30123
- Fixed style of the disabled checkbox in the datagrid. (14771), closes 29128
- Fixed the
load-data-on-scrollcomponent which could load indefinitely. (14770), closes 30084 - Added detailed logs to track mail webhook processing and facilitate debugging. (14765)
- [User Permissions] Fixed formatting of error message when saving a user. (14763), closes 30066
- Fixed to persist the active input before navigating with the Tab key in the datagrid. (14762), closes 30009
- Fixed compilation of the generated project
CSharpAbstractionswhen there are only backend enums in the cluster. (14758), closes 30058 - Fixed an issue where collection items could remain in a modified state after saving on the client side when the relation property was not present on the child entity view. (14755), closes 29890
- Fixed YAML serialization of multiline strings to ensure consistent behavior regardless of the line break style in the serialized text. (14732), closes 29129, 29851
- Fixed metadata generation to prevent valid properties from referenced objects (e.g. Customer.Name) from being removed in UIViews. (14732), closes 29129, 29851
- [User Permissions] Fixed the creation of a user in cases where the name of a role does not match the space management. (14742), closes 29912
- Fixed datagrid error when closing UI view in
PositionChangedevent rule. (14722), closes 29988 - [License Management] Fixed titles in creation and modification modals. (14702), closes 29471
- Fixed transpilation of the
NavigationResultStatetype. (14694) - [Tenant Management] Added a new diagnostics menu to verify user synchronisation. (14423)
- [User Permissions] Fixed roles cache not updated correctly for tenants on separate database. (14661), closes 29839
- Fixed the ability to group unsortable server-side properties in a custom view. (14646), closes 29118
- Fixed server data export when the file name contained an accent. (14642), closes 29870
- Fixed the UI template so that logical components (e.g.,
if) can be used at the root level. (14561), closes 29612 - Fixed display of horizontal
dividercomponent inside agrid-layoutcomponent. (14604) - Fixed
colorattribute ofdividercomponent to be able to use theme colors. (14604), closes 29642 - Fixed vertical scroll bar of the
tree-viewcomponent. (14606), closes 29730 - Fixed the display of a property's enumeration values in lookup suggestions. (14610), closes 29632
- Fixed autocompletion of
grid:directives when inside agrid-layoutbut with logical components as parents. (14596), closes 29643 - [Security] Fixed CVE-2025-55315 (CVSS CRITICAL 9.9). Please update your backend / task-runner docker images to use at least ASP.NET Core Runtime version
8.0.21(see this article for backend and this article for task-runner). (14583), closes 29701 - Fixed handling of unbound entity views with editable reference properties (14577)
- Fixed missing semantic function throwing exception in neos ai monitoring. (14571), closes 29433
- Fixed generation of the
Multilineoption of the UI view properties. (14559), closes 29618 - Fixed the columns order in the column picker: visible columns are now listed first (sorted by their visible index), followed by hidden columns sorted alphabetically by caption. (14562), closes 29597
- Fixed the number of items in the data grid footer when the
sourceattribute is set. (14563), closes 29622 - Fixed
griddirectives inside agrid-layoutbut with logical components (e.g.context) as parents. (14560) - Added JSON-based create and update support in entity view repositories (AddFromJsonAsync and UpdateFromJsonAsync methods). (14535)
- Fixed opening from Neos Studio a solution with a space in its path. (14549), closes 29565
- Fixed generation of EF Core one-to-one relationship configuration by placing
IsRequiredafterHasForeignKeyto prevent model-building errors. (14489), closes 29522 - Fixed GET model generation for optional reference properties. (14493), closes 29513
- Fixed report generation in Legacy mode. (14488), closes 29515
- [Neos Studio] Fixed the
Modalcomponent preview in the theme edition UI. (14476), closes 29511 - Fixed
neos setupon MacOS with ARM64 processor. (14478) - [UI Customization] Fixed a migration command that caused an error with a SQL Server database. (14471), closes 29507
- Fixed button spacing in component
toolbarwhen attributeanimatedisfalse. (14453), closes 29461 - Fixed generation results display in Neos Studio: avoided toasts on partial generation without new errors/warnings and improved deduplication using raw messages. Unwrapped facade build exceptions to show the root cause. (14459), closes 29446
- Fixed crash during full generation and other operations involving .resx file deletions by properly tracking and removing these files in the in-memory solution. Improved workspace stability with thread-safe handling of document updates and deletions. (14436), closes 29443
- Fixed reversion of UIView item inheritance status back to Inherited instead of Overridden when the item is saved with a content identical to the base item (applies to Actions and ActionLocations, Computeds, EventRules, Fields, PreValidationRules, Properties, StyleRules and UIMethods). (14405), closes 26697
- [Tenant Management] Fixed tenants not being returned by the global search. (14390)
- Fixed race condition during save by awaiting pending asynchronous event handlers, ensuring property and position change events completed before data was saved. (14373)
- Renamed the directives
layout:horizontal-alignmentandlayout:vertical-alignmenttolayout:align-self-horizontalandlayout:align-self-verticalto be more explicit and understandable.neos migrate-metadataautomatically renames them in existing templates. (14363) - [Tenant Management] Fixed cluster import displaying monotenant clusters. (14344), closes 29166
- Fixed
neos setupcommand installing too recent version of DaprCLI on linux. (14328) - Removed useless run of
dotnet tool restorecommand when runningneos init. (14328), closes 29090 - Fixed logical deletion when physical fails flag wrongly being set to
truewhen an entity view has unbound properties and the entity has no status property. (14330), closes 29148 - [Helm] Changed Redis bitnami images reposity to use legacy images. Please see this article for more details on Bitnami's policy change regarding its Docker images. (14313)
- Added transpilation error for unsupported nullable member access patterns after conditional access operator (e.g.,
obj?.NullableProp.HasValue) to prevent generation of malformed TypeScript code. (14302), closes 28383 - Fixed navigation tree node updating when changing the name of a entity that exists across the different layers (Backend, Frontend and Shared). (14304), closes 28746
- Fixed rule overloading when the parent UI view was redefined in a child module. (14284), closes 29029
- Fixed incorrect download URL in report generation notification when manually emitted by backend code. (14294), closes 29111
- [Neos Studio] Fixed the dark variant of the string resources icon. (14291)
- Fixed the error when pressing Enter while focusing on the "..." button in a filter chip popover. (14288), closes 29093
- Fixed the display of the tooltip with the description of UI view actions displayed in a dropdown menu. (14287), closes 29094
- Fixed
Retrievingevent rule call when loading groupings. (14286), closes 28986 - Fixed frame matching logic to prevent incorrect reuse of frames when FrameId presence differs between existing and new navigation requests. (14282), closes 28784
- Fixed deletion of references and collections on entities. (14281), closes 28729
- Fixed the call to baseRule after the introduction of CancellationToken. (14244), closes 29039
- Fixed client-side (TypeScript) code generation when an entity-view uses an interface with a scope set to
MetadataScope.Backend. (14249), closes 26697, 29049 - Fixed several reactivity issues with UI validation rules. (13782), closes 26210, 27746
- Fixed existing
AppResourcesstring resources not being found when opened from the code editor. (14228), closes 29022 - Fix breaking change and restore backward compatible retrieval of reports generated by code when using the new persistence mode (and not having to set
$env:NeosReportLegacyMode = $Truein local development either). With this fix, theReportGenerationResponse.ReportContentInBase64property is always populated before the business backend code is called with the response. (14207), closes 28924 - Fixed gateway returning status code
400instead of403when an authenticated user has no tenant on a cluster. (14014), closes 25251 - Fixed generated reports folder not available from cluster backend/task-runner pods. (14201), closes 28924
- Updated the documentation related to the tenant management and nested clusters in the deployed environment. (14210), closes 28689
- Fixed file encoding changes when saved using Visual Studio.
.csfiles are now forced toutf-8in generated.editorconfigfile. This fix is only available on new clusters when usingneos initcommand. Please see this article for how to fix it on your existing clusters. (14135), closes 28751 - [Designer] Fixed ability to edit the template report without using Dapr (
neos run -dp:false). (14096), closes 26326 - Updated Stimulsoft library from version 2025.3.4 to version 2025.3.5 (fixes an error when trying to use the Undo feature in the Stimulsoft Designer). (14151), closes 28679
- Fixed serialization/deserialization of a
LocalizableStringwhen publishing an event. (14070) - Fixed character casing of the user identifier in SignalR notifications. (14070)
- [Notification Center] Fixed character casing of the user identifier when searching and sending notifications. (14070)
- Fixed default values of
carouselcomponent attributes. (14128) - [Neos Studio] Fixed quick search in the "Add entity property to entity view" modal. (14126), closes 28769
- [UI Customization] Fixed restoration of sub view property captions when returning to the original view. (14085), closes 28710
- [Reporting] (Backward compatibility) Fixed the CSV export feature provided by the Reporting service to be able to work with requests emitted from Business clusters based on Neos v2.2. (14095), closes 28747
- Fixed extra data loading when displaying the datagrid of an non-embedded collection with infinite scrolling enabled and no vertical scrollbar. (14083), closes 28723
- Fixed diagnostics for template UI bounds values not being reported in the code editor. (14079), closes 28706
- Fixed "Export sample business data (.json)" action in the Neos Designer for Stimulsoft reports. (14077), closes 26895
- [Security] [Reporting] Removed display of exception messages from the Stimulsoft Viewer (sensitive information disclosure risk) and replaced them with the same family of localized messages as the ones that are shown in the toast after a failed PDF generation. (13983), closes 28647, 28690
- [Reporting] The subscriber
GenerateAndNotifyAsyncuses the correct UI Culture when localizing its eventual error messages. (13983), closes 28647, 28690 - Fixed partial URL generation for images and files in EF Core queries. (14071), closes 28683
- Fixed an error when calling an entity view API when another entity view has the same name suffixed with a number. (14058), closes 28632
- Fixed the value displayed in a lookup on an editable reference that was not updated when the user changes the value of the property used as the display property on the editable reference. (14048), closes 22199
- [User Permissions] Fixed retrieval of permissions for a function whose type changed without permissions being updated after the type change. (14047), closes 28667
- [User Permissions] Renamed
Printimage toNeosPrintto avoid conflicts. (14055)
Previous releases
You can find the changelog of previous releases by clicking on the following links :