Skip to main content
Version: v11.14.2

WaveMaker 11.15.0 - Release date: 8 February 2026

Features

Studio

Profiles & Property Management Simplified

WaveMaker has reworked how application, service, connector, and prefab properties are managed across profiles. Default values are now sourced directly from their respective configuration files, and profile entries are created only when a user explicitly overrides a value.

This change eliminates property duplication, improves version control clarity, and enables consistent, build-once deploy-anywhere workflows. See the detailed documentation for structure changes, migration behavior, and deployment implications.

Studio Design Update: All Controls Consolidated into a Single Top Nav Bar

The Studio design has been streamlined by merging the secondary top bar into the primary top bar, reducing visual clutter and improving discoverability of frequently used actions.

This update reorganizes menus and controls into a single, consistent header layout while preserving existing functionality. Several items have been repositioned to align better with user workflows, improve canvas focus, and create clearer separation between project context, page actions, and global settings.

Users may notice changes in where certain options appear, but no capabilities have been removed—only consolidated and better organized.

Refer to the image below for a clear understanding of the UI changes and their new locations.

Debounced Auto-Save in Design Workspace

Implemented an Auto-Save mechanism that automatically persists the user's data. The system monitors user interactions (such as typing or canvas interaction) and triggers a save operation after 5 seconds of inactivity(debouncing operation ) following the last user input. This ensures data is saved efficiently and improves user experience.

The auto-save process resets the timer on every interaction, ensuring that data is only saved once the user pauses, preventing frequent or redundant saves during continuous input.

Live save status display in the header showing "Saving..." and "Saved" states based on API responses.

How Auto-Save Works (Use Case) The user starts typing or interacting with the canvas (e.g., drag and drop, delete, copy, paste, template or layout selection, property changes). A 5-second inactivity timer is started. If the user interacts again within 5 seconds: The previous timer is cleared. A new 5-second timer is initiated. While changes are pending and the save request is being prepared: The header displays the status “Saving…”.

If no interaction occurs for 5 seconds: The auto-save API is triggered automatically. Upon successful API response: The data is persisted and synced with the backend. The header status updates to “Saved”, confirming successful completion.

This implementation follows a debounced auto-saving approach, ensuring efficient API usage and a seamless user experience.

Enhancements

Web

Async Support Added to `App.onBeforeServiceCall`

Previously, App.onBeforeServiceCall only worked with synchronous logic. The framework expected the request object to be returned immediately.

That meant any asynchronous modification like generating tokens, fetching keys, or encrypting headers silently failed. The API call triggered before your async code finished, and your changes were ignored.

Earlier Behavior (Async Logic Did NOT Work)

App.onBeforeServiceCall = function (req) {
return new Promise(resolve => {
setTimeout(() => {
req.headers["x-token"] = "encrypted-value";
resolve(req);
}, 1000);
});
};
  • Async code starts running
  • API call is triggered immediately
  • Header update finishes too late
  • Request is sent without x-token

What’s New

App.onBeforeServiceCall now supports:

  • Synchronous returns
  • Promises
  • Conditional sync + async logic
  • async / await

The API call waits until the request is fully resolved.

Supported Usage (All Scenarios)

Case 1: Synchronous Modification

App.onBeforeServiceCall = function (req) {
req.headers["x-app"] = "my-app";
return req;
};
  • Works as before
  • API call uses the modified request

Case 2: Asynchronous Modification (Promise)

App.onBeforeServiceCall = function (req) {
return generateEncryptedToken().then(token => {
req.headers["x-token"] = token;
return req;
});
};
  • Promises are fully supported
  • API call waits for async completion

Case 3: Conditional Sync or Async Logic

App.onBeforeServiceCall = function (req) {
if (!req.secure) {
return req; // sync path
}

return generateEncryptedToken().then(token => {
req.headers["x-token"] = token;
return req;
});
};
  • Works correctly in mixed scenarios
  • Always returns the final request

Case 4: Using async / await

App.onBeforeServiceCall = async function (req) {
const token = await generateEncryptedToken();
req.headers["x-token"] = token;
return req;
};
  • Clean and readable
  • Fully supported
  • Request is modified before the API call

If you rely on async logic—security headers, tokens, encryption, conditional auth— this hook now behaves the way you always expected it to.

Programmatically Access Widgets in Tabs, Accordions, and Wizards

Accessing widgets inside Dynamic widgets like Tabs, Accordion, and Wizard is tricky. To simplify this, we now expose a dedicated method that allows you to programmatically access internal widgets with ease.

Syntax:

Page.Widgets.<dynamicWidgetName>.getWidgets(widgetName, index);

Parameters: widgetName (Required): Name of the widget to access. index (Optional): Zero-based pane index (Tab / Accordion pane / Wizard step).

Returns: With index: An array containing the matching widget from the specified pane. Without index: An array of matching widgets from all panes of the dynamic widget.

Example:

Access a widget from a specific Tab
Page.Widgets.MyTabs.getWidgets('label1', 0)[0].caption = 'Updated';

Access widgets across all Accordion panes
Page.Widgets.MyAccordion.getWidgets('checkbox1')
.forEach(w => w.show = false);

Access a widget in a Wizard
Page.Widgets.MyWizard.getWidgets('username', 2)[0].required = true;
ESLint Inspection Integrated into Angular UI Builds

WaveMaker now supports running ESLint inspections as part of the Angular UI build and deployment process. A new inspection step can be enabled in CI/CD to automatically analyze UI code during build and report linting and code-quality issues.

This inspection is optional, configurable, and runs only for Angular-based builds. Teams can choose to log issues for visibility or enforce strict quality gates by failing the build when critical ESLint errors are detected.

This enhancement helps catch UI issues early in the pipeline, improves consistency across projects, and enables better code-quality enforcement in automated builds. Refer to the detailed documentation for configuration options, build conditions, and enforcement behavior.

React Native

Toggle (Switch) Widget: Consistent Circle Size Across ON and OFF States
Fixes inconsistent toggle circle resizing when height or width is customized. - The toggle circle maintains a consistent size in both ON and OFF states. - Changing the height or width of the switch affects layout dimensions, not internal toggle behavior. - Visual and interaction behavior remain predictable regardless of size customization.
Toast Notification Widget: New Customization Options
Adds support for a dismiss button, anchor elements, and customizable message icons.
Panel Widget: Custom Icons for Collapsed and Expanded States
Introduces separate properties to define icons for collapsed and expanded panel states.
Wizard Widget: Display All Step Titles Simultaneously
Allows all wizard step titles to be visible regardless of active or inactive state.
Accordion Widget: Subheading Fix and Icon Direction Option
Fixes the subheading property and adds control to reverse expand/collapse icon position or direction.
Chip Widget: Enable Styling for Item Text
Allows styling customization of text inside individual chip items.
Select Dropdown Component: Spacing Consistency Across Android and iOS
Resolves layout and spacing inconsistencies in the select dropdown modal.
Accordion Widget: Base View/Class Exposed for Title Styling

A common base view/class has been introduced for the Accordion title, enabling consistent and reusable styling across applications.

  • The Accordion title should support:
    • A configurable background color
    • An icon alongside the title text
  • Styling should be applied through a common view or base class, enabling reuse and consistency across applications.

Bug Fixes

  • Resolved a UI glitch where dragging and dropping the locale widget caused a slanted line to appear.
  • Fixed custom accordion title icons not rendering when a custom icon class is applied.
  • Resolved issues in localized message settings where Save and Cancel buttons were not visible after format changes.
  • Fixed a bug where the Save dialog did not close after adding and saving localized messages.
  • Fixed data loss when switching between Query and Procedure tabs in the Database section.
  • Resolved an issue where database schema changes were not getting saved due to console errors.
  • Fixed misalignment of query result table headers when displaying large numbers of columns.
  • Updated SQL Server procedure execution to use EXEC instead of CALL by default.
  • Fixed syntax errors occurring while executing database procedures.
  • Improved Canvas usability by showing the current page context in Script and CSS tabs.
  • Added missing Help link on the Localization Messages page.
  • Fixed dialog boxes (New/Edit/Delete) opening behind popovers when datatables are used inside popovers.
  • Resolved an issue where delete action dialogs appeared empty in datatables.
  • Fixed incorrect rendering of selected tab data when switching between tabs.
  • Fixed navigation failures caused by breadcrumb label values referencing undefined widgets.
  • Resolved intermittent blank page issues while navigating between paginated datatable pages.
  • Fixed URL handling where page names were incorrectly appended when redirect URLs contained query parameters.
  • Fixed prefab rendering issues when showInDevice property is applied to prefab containers.
  • Prevented multiple wizard action callbacks triggered by concurrent clicks.
  • Fixed i18n issues in locally deployed Angular projects packaged as Angular ZIPs.
  • Fixed inline datatable row expand/collapse not working when multi-select is enabled.
  • Fixed project name wrapping issues when long names overflow to the next line.
  • Removed WaveMaker option from deployment build settings in Prism projects.
  • Added support for asynchronous handling in App.onBeforeServiceCall.
  • Fixed cards widget where “items per page” selection did not update results at runtime.
  • Resolved Studio scrolling issues preventing users from viewing full pages.
  • Fixed number widget behavior where passing null defaulted incorrectly to 0.
  • Fixed issues saving table rows using the Tab key.
  • Resolved form widget layout breakage when fixed height and width values are applied on web.
  • Fixed navigation failures after importing Web Services or creating Java Services.
  • Fixed Save and Discard buttons remaining enabled after saving AD configuration.
  • Resolved datetime picker overlap with page scrollbar.
  • Fixed file workspace overlapping with the inspect panel.
  • Fixed select widget configuration issues with custom formatter parameters.
  • Resolved widget selection issues after disabling widgets in Studio.
  • Added validation support for Chips widget.
  • Fixed intermittent visibility issues for container content and page parameter properties.
  • Added hint property support for RadioSet widget.
  • Fixed number field validation issues.
  • Resolved offline app deployment failures caused by ESLint module installation errors.
  • Fixed select filter state not retaining in multi-column filters.
  • Added delete options for projects and branches in Team Portal.
  • Fixed datatable page size selection not reflecting correctly in server-side pagination.
  • Fixed script tab formatting and syntax highlighting loss after saving.
  • Fixed incorrect tooltip value formatting in single Y-axis bar charts.
  • Fixed Studio crashes caused by out-of-memory errors when loading Google Maps prefabs.
  • Fixed design tab changes not persisting after switching between Style and Markup tabs.
  • Fixed incorrect multipart/form-data content type in REST API payloads.
  • Fixed autocomplete and popover loading and styling issues in CSP-enabled projects.
  • Fixed Studio View Changes, Push, and Pull operations failing after app reload.
  • Fixed prefab app environment values not getting saved.
  • Fixed alignment issues in CheckboxSet filter options in property panel.
  • Fixed query result headers detaching from result rows.
  • Improved variable search functionality in Studio.
  • Fixed conditional classes not consistently applying to Chips widget default values.
  • Fixed calendar date highlight not persisting on hover.
  • Fixed header inline content not rendering in preview mode.
  • Fixed an issue where Wavepulse QR enablement failed to launch the RN app.
  • Fixed Camera widget onSuccess event not triggering during video recording.
  • Fixed spacing issues where Bottom Sheet content overlapped with the Bottom Navigation Bar.

Technology Stack

WaveMaker Studio

UI Frameworks (Web and Mobile)

DescriptionJS LibraryVersion
JS Bindingjquery3.7.1
jquery-ui*1.13.3
MVC FrameworkAngular18.2.13
ngx-bootstrap9.0.0
Stylesbootstrap3.3.7
Chartingd37.8.5
nvd31.8.11
Fullcalendar6.1.15
Built-in functionslodash-es4.17.21
Device support, gestureshammerjs2.0.8

Backend Frameworks (Web and Mobile)

DescriptionJava LibraryVersion
Spring Framework6.2.12 -> 6.2.15
Security frameworkSpring Security6.5.6 -> 6.5.7
Spring Data2025.0.5 -> 2025.0.7
Spring Boot3.5.6 -> 3.5.9
Spring Session3.5.2 -> 3.5.4
Java JSON utilitiesGson2.13.2
DB Persistence libraryHibernate(Jakarta)5.6.15. Final
Sample databaseHSQL2.7.4
JSON libraryJackson2.20.0 -> 2.20.1
Logging frameworkSLF4j2.0.17
Logging ImplementationLog4j22.25.2 -> 2.25.3
Http client libraryHttpComponents - httpclient5.5.1
Servlet Framework6.0.0
Database Connection PoolingHikariCP7.0.2
Commons Lang33.19.0
Guava33.5.0-jre
Postgresql Driver42.7.8
Hibernate Validator8.0.2.Final
Jgit7.4.0.202509020913-r
Commons Codec1.18.0
Commons IO2.19.0
Commons Text1.13.1
Antisamy1.7.7
Freemarker2.3.34
Apache Tika3.2.3
Mariadb JDBC Driver3.5.2
Mongodb Driver5.6.1 -> 5.6.2
Jakarta Validation Api3.1.1
commons-validator1.10.0
json-smart2.5.2

Web

Runtime Environment

DescriptionVersion
JDK21.0.6
WebSphere Liberty23.0.0.9+
JBoss Wildfly27+
Tomcat10.1.39

This is the default Tomcat runtime support. Apps can be deployed to any standard Java Web Server running on JDK 11. For more information, see here.

Angular Web

DescriptionVersion
Java21.0.6
Node22.18.0
Maven3.9.11 -> 3.9.12
npm10.9.3
Ant1.10.11

For more information about building projects with Maven, see here.

Mobile (React Native)

Environment Setup

DescriptionVersion
Java17
Node22.11.0
Maven3.9.9
npm10.9.0
Android StudioMeerkat 2024.3.1 to Narwhal 4 Feature Drop 2025.1.4
Xcode16.2 to 26
SDK Build Tools36.0.0
wm-reactnative-cli1.9.3 -> 1.9.5
Android Gradle Plugin (AGP)8.14.3

SDK Update

DescriptionVersion
Expo54.0.12
React Native0.81.4