Neos 3.3 highlights
Key insights
Welcome to the 3.3 release of Neos. There are many updates in this version that we hope you'll like, some of the key highlights include:
Neos Studio
Creating a menu item directly from a UI view
A UI view's tree view now has a Menu entries node, next to Actions, Methods, and Computeds, listing every existing menu item that opens this view. Clicking one navigates straight to its editor.
Its + button opens a quick-creation modal, so you no longer need to leave the UI view to create a menu item pointing to it: fill in a name, a caption, and optionally an icon and a menu. When a menu is selected, saving takes you directly to that menu's editor with the new entry already placed and selected, ready to be positioned exactly as if you had used the menu's own Add a menu item action.
See Creating a new menu item for the general menu item concepts.
What's new in documentation
This release includes documentation improvements.
Changelog highlights moved to the top
The key insights of a minor version release used to be attached to its very first published version (X.Y.0), which is the last one added to the changelog file. As soon as one or more patches were published afterward, the key insights ended up at the bottom of the changelog, below every patch section — often containing only fixes — making them easy to miss.
They are now published once, in a dedicated "Neos X.Y highlights" section at the very top of the changelog, ahead of every individual patch section.
v3.3.0-alpha.1742
Published on Sep 18, 2026.
Breaking changes
- [Gateway] Tenant-status-specific
503pages are now served by default instead of generic503.htmlpage. You can override them or disable them usingNEOS_TENANT_PAGES_ENABLED=falsein the gateway secret. Please see this article for details. (18830) - [User Permissions] Removed the obsolete
UserAccount.Synchronizedcolumn and related user account view fields. (18635) - Removed
Azure AI InferenceAI model API type. (18542) - Removed the
AzureOpenAIAPI for AI models, as there is no longer any Azure-specific code following the migration to the Microsoft Agent Framework. Use theOpenAIAPI instead. A metadata migration automatically updates existing AI models. (18898)
Features
- [Helm] Added the possibility to set priority class for business clusters pods. See this article. (18682)
- [Neos Manager] Added two buttons to switch a SQL query between its parameterized form and a version with real parameter values substituted, ready to run directly against the database. (18763)
- [Neos Studio] Added
Groupableoption for UI view properties. (18566) - [Neos Studio] Added a
Visibleboolean option to menu items, which can be set to a C# expression, evaluated on the client side. (18567) - [Neos Studio] Added cluster-level default report styles for report editing, viewing, and PDF generation. (18603)
- [Neos Studio] Added the ability to create and browse menu entries directly from the UI view editor. (18719)
- [Neos Studio] Added the real diagnostic code of client C# warnings and errors to the code editor tooltip and to the generation output. (18570)
- [Neos Studio] Simplified the Entity View AI tools tab. (18771)
- [Task Scheduler Client] Added an UpdateTask method to the TaskSchedulerClient module to update an existing scheduled task without recreating it. (18593)
- [Task Scheduler Client] Added Enable/Disable and Modify schedule row actions to the RemoteScheduledTaskListUI administration screen. (18593)
- [Tenant Management] Added three filter criteria to the tenants list based on the users attached to each tenant: user login, first name and last name. Entering a login now narrows the list to the tenants that user belongs to. (18730)
- A cluster's custom home page can now use a ViewContainer instead of a FramesContainer as its main container, via the new MainViewContainerId configuration key, with matching URL/browser history behavior and an opt-in confirmation before discarding unsaved changes. (18797)
- Added
AnthropicAPI type for AI models. (18847) - Added
InputCapabilities.SupportsTouch()static method indicating whether touch input is supported. (UI code only) (18660) - Added
layout:rendered-sizeandevent:resizedirectives reporting the size actually rendered for an element. (18668) - Added
PromptAsync<T>method toIChatCompletioninterface to be able to get a typed response: the JSON schema of the expected type is sent to the model, which is constrained to respond with a matching payload, and the response is deserialized automatically. (18838) - Added a
neos update-modulesCLI command that updates referenced modules to their latest published version, or to the latest patch of their currently used major and minor version with the--patch-onlyoption, reusing the same NuGet resolution asneos restore. (18662) - Added a generation warning when a UI view's datagrid has no visible column, closing a gap where only lookup-target views were checked. (18828)
- Added breakpoints in theme. (18660)
- Added ExecuteAsync to IViewModelAction, allowing client code to trigger a view model action programmatically, without going through a statically declared button. (18720)
- Added HasModifiedNavigationProperty() to the entity view API surface available to business assemblies. (18591)
- Added properties and methods in
Viewportto granularly know the current breakpoint. They are accessible in UI code and template. (18660) - Added RetrieveCountAsync and RetrievePagedItemsAsync methods to IRetrievingRuleArguments to retrieve a count or a paginated page with its total without loading every matching item. (18824)
- Added Settable property on IViewModelProperty for generic code that iterates over a UIView's properties, to know upfront which ones can be set (independently of any expression or read-only rule) without hard-coding a list. (18597)
- Added support for referencing Constants from UI templates: code generation, live diagnostics, editor autocompletion, and dependency/unused-usage detection. (18723)
- Adding the agent's response time to the chatbot. (18894)
- Deprecated
Deviceclass (UI code only). UseWindow.Current.Viewportin UI code or@Viewportin UI template instead. (18660) - Deprecated some
Windowproperties and methods (UI code only). Use the following classes instead:Display,Viewport,InputCapabilities,SystemPreferences. (UI code only) (18660) - Entity view parameters are now exposed, with their description, as arguments of the MCP tools generated for an entity view. (18785)
- Improved
PromptOptions.ResponseFormatto be able to specify the expected schema of the expected response. (18838) - Menu items can now begin a group, which draws a separator above them in the side menu and its sub-menus. The separator moves down to the next visible item when the item that opens the group is hidden, and is never duplicated nor displayed at the top of a menu. (18834)
- Migrated AI related code from
Microsoft.SemanticKerneltoMicrosoft.Agents.AI(Microsoft Agents Framework). (18542) - Rebuilt the progress bar component without its previous third-party UI library dependency, with no visual or functional change. Added
value-background,corner-radius,label-color, andlabel-outside-colorattributes onprogress-barcomponent to set the fill color, corner radius, and percentage label color (inside and outside the fill). (18710) - The AI personalization agent can now save the changes it applies (columns, filters, sorting, styles) into a custom view, updating the one already applied or creating a new one. (18788)
Fixes
- [Neos Studio] Fixed default status pages missing in development mode. (18830)
- [Automation tests] Fixed data-grid empty-row waits to poll until row removal is reflected. (18822), closes 36470
- [Neos AI] Fixed the casing of the native UI views directory. (18665), closes 36200
- [Neos Data Exchange] Restored sample-file downloads after switching import templates. (18624), closes 36125
- [Neos Shared UI] Fixed the tab navigator's Previous/Next buttons being shown disabled instead of hidden when navigation through them is not intended. (18716), closes 29158
- [Neos Studio VSCode extension] Fixed an error when opening the entity view UI. (18607), closes 35637, 36060, 36099, 36103
- [Neos Studio VSCode extension] Fixed Seroval error when opening a lookup modal. (18854), closes 36416
- [Neos Studio] Fixed API path classification so client files sharing an API-prefix name were no longer treated as API requests. (18765), closes 36370
- [Neos Studio] Fixed the C# full name being left as
...when opening an entity. (18647), closes 36156 - [Neos Studio] Preserved overridden inherited UIView action function permissions across saves. (18526), closes 34285
- [Reporting] Fixed report generation failing with "The generation failed while applying styles." when a 3.2 reporting service served a business cluster older than 3.2. (18858)
- [Task Scheduler] Fixed StyleCop warnings raised when the TaskSchedulerClient or TaskSchedulerShared module was referenced from another cluster. (18572)
- [UI Customization] Fixed erroneous frozen-column warnings when saving an unchanged custom view. (18896), closes 36515
- [User Permissions] Fixed StyleCop warnings raised on the Permission partial class file when referenced from another cluster. (18572)
- Clearer error message when running
neos runwithout a completedneos setupfor the current Neos version (Dapr mode or not). (18598) - Compilation errors reported during
neos generateare now parsed and coded individually instead of being duplicated as raw uncoded text for each failing build. (18754) - Excluded the primary key from update request models for entities bound to a relational database table, and reapplied its real value from the URL before any nested collection is processed, so a mismatched or missing id in the payload can no longer corrupt the entity's identity or its children's reconciliation. (18677)
- Fixed
event:clickdirective oncomboboxcomponent. (18607) - Fixed a bug where a string value equal to "Null", "NULL" or "~" was saved without quoting in YAML metadata files and silently turned into an empty value when read back, which could later break code generation. (18694), closes 35543
- Fixed a button's label being unexpectedly centered instead of left-aligned once it wrapped onto several lines. (18655), closes 30855
- Fixed an API error when POSTing an entity view where a required boolean property with no value was omitted. Before 3.2, this specific case was handled. To avoid introducing this breaking change, we are restoring the specific handling for this case. For all other types, a default value must be set on the required property if you want to be able to omit it. (18661)
- Fixed an internal error returned when sorting a list whose entity view declared a collection that is not loaded on read (
LoadedOnGetset to false). (18761), closes 36308 - Fixed an issue where the first column of a grouped data grid could be truncated. (18607)
- Fixed an issue with modifying the filter when entering a value in the quick search input: a new filter instance is assign instead of mutating the current filter instance. (18607)
- Fixed an issue with opening the dropdown of a lookup in combobox mode within an editable data grid. (18607)
- Fixed chatbot streaming requests timing out or being buffered during long-running responses. (18753)
- Fixed DateTime formatting so that standard .NET format specifiers (such as "d" or "t") now render the same result as in .NET, instead of silently showing incorrect data or causing a technical error. (18782), closes 36253
- Fixed empty area when the datagrid in card mode has no data. (18717)
- Fixed JSON inference of ISO date-only values so they deserialize as
DateOnly. (18676), closes 36190 - Fixed redundant SQL joins for fully materialized Entity View collections. (18284)
- Fixed report URLs being truncated when the filter, culture or styles bundle name contained a reserved URI character such as '#'. (18823), closes 36404
- Fixed routing via Neos gateway version 3.2 for SignalR clients on version 3.1/3.0. (18630), closes 36126
- Fixed the display of a filter that was supposed to be invisible on the chip of a property displayed in the filter bar. (18661), closes 36185, 36193, 36194
- Fixed the empty UI of a tab opened at startup when closing the active tab that was immediately after it. (18661)
- Fixed the main authentication cookie being scoped to the cluster's URL prefix instead of the site root on prefixed (host/prefix) deployments, which caused every API request to fail with a 401 error after a successful login. (18779), closes 36392
- Fixed the MCP endpoint so external OAuth clients can discover the real Azure AD B2C authorization server and complete the authorization code exchange as a public client, instead of failing with an invalid client_secret error or being redirected to the application's sign-in flow. (18711)
- Fixed the progress bar's percentage label becoming unreadable or invisible at very low values: it now automatically renders next to the fill, on the track, instead of being clipped. (18710)
- Fixed transpiled integer division so it truncates toward zero like C# instead of producing a floating-point value, and added support for transpiling
Math.Truncate. (18714), closes 36254 - Generation now reports a warning when a declared ServerMethod has no matching implementation file, instead of silently omitting the method from the generated interface. (18829), closes 36252
- The chart component's canvas could get stuck at an outdated size after a fast, continuous window resize, causing a neighboring card to remain wrapped onto its own line even when enough space became available again. (18783), closes 36255
Previous releases
You can find the changelog of previous releases by clicking on the following links :