8.1 Changelog
This page lists all the changes introduced in 8.1 releases. See also the release notes and the migration guide.
8.1.1 (2026-03-09)
Change
-
Replace react-text-mask with internal <MaskedInput> component
Details
Replace the unmaintained react-text-mask dependency with a fully internal <MaskedInput> implementation covering the same feature set.
Fix
-
Fix required validation in duration widget
-
Fix false
React.createFactoryerror on undefined property accessDetails
The expression parser sandbox checked property access values against
React.createFactory, which was removed in React 19 and isundefined. This caused any computed property lookup returningundefined(e.g. an object key miss with nullish coalescing) to falsely throw an error. -
Fix SingleSelect dropdown not closing on Tab key
-
Fix EML file upload failures
-
Fix multi-tenancy AxelorCache.asMap() usage
Details
With multi-tenancy, AxelorCache.asMap() returns a map view for current tenant. Using it on static field either cause null tenant if called before multi-tenancy module, or resolution to tenant of first usage. AxelorCache.asMap() should be called on demand only.
Moreover, on app shutdown, we need to iterate over the cache for each tenant.
Affected usage:
-
Pending exports
-
Mail channel
-
-
Fix lost action-view context in calendar views
Details
Calendar views with context-based domains (e.g.
self.user.id = :_userId) displayed no events because the calendar widget’s_domainContextoverwrote the action-view’s context variables during filter merge. The DataStore’s original context is now preserved by spreading it first when building the calendar’s domain context. -
Fix
x-popup-maximizedattribute on relational fieldsDetails
This fixes
x-popup-maximizedattribute to control the maximized (i.e., fullscreen) state of popup windows for relational fields.
Security
-
Fix sandbox bypass via async/generator function constructors
Details
The expression parser sandbox only blocked the regular
Functionconstructor, allowing code execution throughAsyncFunction,GeneratorFunction, andAsyncGeneratorFunctionconstructors obtained via.constructoron async, generator, and async generator function instances. -
Block expression sandbox escapes via this and prototype access
Details
The expression parser now blocks
thisand dangerous properties such as__proto__,prototype, andconstructor, including computed access, to prevent sandbox escapes and prototype pollution vectors.
8.1.0 (2026-02-20)
Feature
-
Add support to custom entity sequence allocation size
Details
Allows specifying custom allocation size for sequences used by entities. This can be useful for optimizing performance.
This allows to provide custom entity sequence allocation size in multiple ways:
-
From xml entity definition itself, using
allocationSizeattribute -
Sequence specific configuration defined in application settings,
application.entity.sequence.%MY_SEQ%.allocation_size -
Global default allocation size :
application.entity.sequence.default_allocation_size
When
allocationSizeis 1, it forces Hibernate to execute aSELECT nextval('seq')query for every single entity saved. Having anallocationSizegreater than 1 is the performance tuner for database inserts. It controls how many IDs Hibernate fetches from the database in a single network call. -
-
Add drag-and-drop support into the widget area
Details
Add support to simply drag and drop files directly into binary/binary-link/image widgets. Users can now drag files from their desktop or file explorer directly into the widget area, bypassing the traditional system file picker dialog
-
Add summary bar feature in grid view
Details
The summary bar can be used to show summary by the selected rows, page and action in a grid view.
-
Include date range and view mode in calendar context
Details
In calendar views, the context now includes the following information:
-
_calendarViewMode: current view type (day, week, or month) -
_calendarStartDate: first visible date of the viewport (inclusive) -
_calendarEndDate: last visible date of the viewport (exclusive)
-
-
Improve React-based HTML applications embedded
Details
React-based HTML applications embedded can now retrieve some information (theme/language/…) and subscribe to changes via a listener pattern.
-
Allow displaying archived records only from advance search
Details
Show archived boolean is replaced by selection as follow
-
Include archived : include the archived records
-
Only archived : only display the archived records.
-
-
Asynchronous Queue-Based Audit Tracking
Details
Improved audit tracking with asynchronous queue-based processing to improve the performance. Now the listener performs a lightweight capture of raw data and inserts simple
AuditLogrows into the database. The main operation has no more complex logic executed, reducing the execution time. After the transaction commits, a background thread picks up the AuditLog entries and handle the tracking process : generate the associated mail message and emails sending.-
Introduce
AuditLogentity for persistent audit event storage with full state capture. It support retry logic with max retries and error tracking. -
For security and performance reasons, certain field types are automatically excluded from audit tracking : passwords/encrypted/binary/collection and transient fields.
-
Tracking messages are not created immediately when a record is created/updated. Instead, they appear in the stream after a brief delay.
-
Adaptive back-pressure mechanism controlled with following properties :
application.audit.logs.flush-threshold,application.audit.processor.batch-delay,application.audit.processor.activity-window,application.audit.processor.busy-backoff-interval,application.audit.processor.busy-backoff-max-retriesandapplication.audit.processor.batch-size.
-
-
Add
oiddatabase type for binary fieldsDetails
Since 8.0,
binaryfields declared in domains now map tobyteainstead ofoid.byteais the modern standard for binary data up to a few hundred megabytes.oidis a legacy mechanism that introduces significant maintenance headaches and should only be used for specific "streaming" use cases. For compatibility reasons, this adds support to useoiddatabase type forbinaryfields. This can be enabled by addinglarge="true"attribute on field definition. -
Implement findById and getReferenceById in entity repositories
Details
Implement two new methods in entity repositories :
-
findById(Long id): same asfind(Long id)but return an Optional -
getReferenceById(Long id): retrieves a reference (proxy) to an entity without immediately loading its state
-
-
Add real-time mail message updates
Details
The mail messages widget now supports real-time updates via WebSocket. This is necessary since the introduction of asynchronous audit tracking. The implementation also supports distributed environments using Redis/Valkey for message broadcasting.
Change
-
Update sorting behavior in grouped grids
Details
On grouped grids, the grouped results can become inconsistent due to sorted fields. This automatically prioritizes grouping fields in the sort order to ensure consistent grouping records through pagination.
-
Upgrade backend dependencies
Details
Here is the list of backend dependencies upgraded :
-
Upgrade Byte Buddy from 1.17.8 to 1.18.5
-
Upgrade ASM from 9.8 to 9.9.1
-
Upgrade Snakeyaml from 2.4 to 2.5
-
Upgrade Jsoup from 1.21.2 to 1.22.1
-
Upgrade Flyway from 11.11.2 to 11.20.3
-
Upgrade Junit from 5.13.4 to 5.14.3
-
Upgrade Apache Commons IO from 2.20.0 to 2.21.0
-
Upgrade Guava from 33.4.8 to 33.5.0
-
Upgrade Minio from 8.5.17 to 8.6.0
-
Upgrade Jackson from 2.19.4 to 2.21.0
-
Upgrade PostgreSQL JDBC from 42.7.9 to 42.7.10
-
Upgrade Tomcat from 10.1.50 to 10.1.52
-
Upgrade Groovy from 4.0.29 to 4.0.30
-
Upgrade Logback from 1.5.25 to 1.5.32
-
Upgrade Swagger from 2.2.41 to 2.2.43
-
Upgrade Undertow from 2.3.21.Final to 2.3.23.Final
-
Upgrade Hibernate ORM from 6.6.40.Final to 6.6.42.Final
-
Upgrade Jakarta JAXB API from 4.0.4 to 4.0.5
-
Deprecate
-
The
sequentialattribute onentitydefinition is now deprecatedDetails
Since Hibernate 6.x, it creates a sequence per entity hierarchy instead of a single sequence
hibernate_sequence. So thesequentialattribute is no longer needed and should be removed from entity definitions. It is marked as deprecated and will be removed in further version. All entities will now use their own sequence.
Fix
-
Automatically initialize jsonModel field for custom model forms
Details
When creating a new record in a custom model form view, the jsonModel field is now automatically set to match the view’s jsonModel value.
This ensures custom model records are properly initialized with the correct jsonModel identifier without requiring additional backend actions or manual intervention.
-
Fix search on grid multi-select widget field
-
Fix observer lookup for plain class event hierarchies
Details
Observers whose event parameter is a supertype are now correctly invoked when a subtype event is fired. For example, an observer declared as
onModel(@Observes ModelEvent e)is now triggered when aContactEvent extends ModelEventis fired, as required by the CDI specification.Previously, observer lookup used an exact class match, so supertype observers were never notified for subtype events.
-
Support observer method inheritance in EventBus
Details
Observer methods are now inherited by subclasses, as required by the CDI specification. Previously, only methods declared directly on the bound class were discovered; inherited observer methods were silently ignored.
Overriding rules are also respected: if a subclass overrides an observer method, only the overriding version is invoked (the parent version is suppressed), matching standard Java method override semantics.
-
Fix theme builder typography properties path
-
Resolve generic type variables in inherited observer methods
Details
When an observer method is declared in a generic base class (e.g.
onSave(@Observes SaveEvent<T> event)), the event parameter type is now correctly resolved to the concrete type argument supplied by the subclass (e.g.SaveEvent<Contact>forclass ContactHandler extends GenericHandler<Contact>).Previously, the unresolved type variable
Twas used for matching, causing generic observer methods to either never match or match too broadly.