Release Notes ​
See Deprecations for what is superseded but still shipping, and for the full removal list with migration notes.
1.146.0 ​
2026-09-29
- Embedded mode: a component loaded through
?z2ui5-bundle(z2ui5.embed.Containerof abap2UI5/embed-control), or givencomponentData.embedded = trueby a host'sComponentContainer, leaves the URL to its host - it neither reads nor writes the hash. A Fiori elements object page keeps its route across roundtrips - Embedded mode: an app no longer takes the focus from the host page, leaves no
z2ui5global behind, and its developer tools no longer capture the host's console and errors. Restart in the error dialog restarts the app in place instead of reloading the host's page - Page transitions:
view_display( transition = ... )animates the new main view (slide,baseSlide,fade,flip,show);nav_app_leave( ), the browser Back button andtransition_back = abap_trueplay it reversed. Try them with the sampleZ2UI5_CL_SMP_APP_531 cs_event-start_timertakes`X`as its third argument to keep the busy indicator down for a tick- Security: the default CSP allows
'wasm-unsafe-eval'for scripts, so the WebAssembly barcode scanners (sap.ndc.BarcodeScannerButton, the BarcodeScanner of abap2UI5-addons) work;'unsafe-eval'stays out - New on npm:
@abap2ui5/bsp- a UI5 app as an abapGit BSP and back (npx @abap2ui5/bsp app2bsp webapp --name ZMYAPP,bsp2app,check) @abap2ui5/node-runtime: responses are compressed with gzip, a roundtrip with a large table is linear again, express 4 works next to express 5, own app classes that extend something load, and the test appsZCL_TST_*are no longer in the package
1.145.0 ​
2026-09-26
- Security: the default Content Security Policy no longer allows
'unsafe-inline'or'unsafe-eval'for scripts. The page's one inline script runs by its SHA-256 hash, and the default namesimg-srcandmedia-srcexplicitly - an exit that needs a cross-origin icon or sound host adds it there. On UI5 1.71 to 1.82, only a module a popup names in a binding type orcore:requirestill needs'unsafe-eval'; switch it on inz2ui5_if_ui5_exit - Several
z2ui5.Componentinstances can run side by side on one page - a launchpad in keep-alive mode or a host that creates the component twice no longer corrupts the first one. A host app that embeds the component names its backend withcomponentData.endpoint - Added
GET <node>?z2ui5-bundle: the frontend as a script of its own, for a UI5 app that embeds the z2ui5 component instead of opening the page. Without the parameter a GET is the page, as before - Node hosting: every release publishes
@abap2ui5/node-runtimeon npm - abap2UI5 transpiled to JavaScript, withserve( )and the downported ABAP sources for your own app classes - The frontend's diagnostics also go to the browser console with
sap-ui-logLevel=WARNING, and a keyboard shortcut can bind the+key ("Ctrl++") - An app class in a namespace (
/NS/CL_X) survives reload, bookmark and Back/Forward through hash routing; URL parameters in front of the launchpad'ssap-startup-paramsare kept - The app start checks that a class named by the URL, the hash or the launchpad implements
z2ui5_if_appbefore it is created styles_cssfrom the user exit applies again- Fixes in navigation (
nav_app_leave( )two levels up and after an expired draft), in the model (a cleared table reference, empty date and time fields, negative UTC offsets), in popups during Back/Forward, in the CSRF check behind a proxy on :443, and in the 7.02 branch's test classes - The view builder raises
VIEW_BUILDER_ERRORon an attribute or element name that is no XML name, instead of producing a view the browser refuses - The framework's own views and popups get component-prefixed ids (
<component>---mainView); ids an app declares are unchanged. Only CSS or scripts that match the full rendered DOM id need a look
Removed
- BREAKING: the global
z2ui5object - nowindow.z2ui5any more; the frontend keeps its state per component - BREAKING:
cs_event-z2ui5and the obsolete popupz2ui5_cl_pop_js_loader→ a custom control inz2ui5_ccc - BREAKING: raw JavaScript in
follow_up_action( )→cs_event-control_global,cs_event-control_by_id,cs_event-hash_back, or a custom control inz2ui5_ccc - BREAKING:
custom_jsandtitlein the user exit's HTTP config → a custom control inz2ui5_ccc;cs_event-set_title - BREAKING: the
z2ui5.Utilandz2ui5.Formatterglobals and thez2ui5/Utilmodule →core:requireofz2ui5/model/formatter
See Deprecations for the migration of each.
1.144.1 ​
2026-09-22
- Added app-owned hash routing:
client->hash_set( )/hash_replace( )write the URL fragment (a pushed or a replaced history entry),cs_event-hash_backsteps back with an optional fallback hash,cs_event-hash_attach_changedraises a backend event on a hash change the app did not make, andcs_event-hash_routingsets the routing mode.app_state_set_active( )keeps the id of the current app state in the URL, andapp_state_get_href( )hands that share link to ABAP - Added
s_ctrl-check_queue_laston_event( ): an event fired while a round-trip is in flight is kept and sent after it, the last one wins — the flag for a live wire such as a search field.s_ctrl-check_no_busykeeps the busy overlay down on such a wire, so it no longer flashes over the field being typed into - Added
a( t = … )on the view builder: text passed astrenders literally, a brace or a backslash in it is shown instead of parsed as a binding. Use it for data and user input in a view attribute;vkeeps the binding vocabulary message_box_display( )shows any data, not only messages — a table, a nested structure, a tree, an object, a number — and a box with details shows them open instead of behind a Show details link. Messages (BAPIRET2, T100, RAP, exceptions, …) are still recognized first and set severity and titleSTORE_DATAreads a model-path payload, so a handler can write browser storage too, not only a view wireCONTROL_BY_IDresolves the argument ofsetCurrentStepto a control, so aWizardstep can be set by id- A misused view builder chain raises an exception the app can catch, instead of producing a broken view
- Performance: the view builder concatenates once per render, a conditional GET of the shell page is answered before the page is built, the XML templating preprocessor runs only for a view that uses templating, and several things the engine computed on every request are computed once
- The default response headers no longer include
Cross-Origin-Opener-Policy— on a plain-HTTP system the browser ignored it and logged a console error on every start - Hosting outside an SAP system: seams for the draft store and the environment, and the transpiled framework is packaged for npm (published as
@abap2ui5/node-runtimefrom the next release on); every release carries the backend already built (backend-<version>.tar.gz) - The start page no longer loses its second roundtrip, and the OData model is loaded only when an app uses it
- Many smaller fixes from code reviews of the ABAP and the frontend core
Removed
- BREAKING: the
viewparameter of_bind( )/_bind_edit( )— it had done nothing for a long time; delete it - BREAKING:
set_push_state( )/cs_event-set_push_state,set_app_state_active( )/cs_event-set_app_state_activeandcs_event-set_nav_routing— renamed tohash_set( ),app_state_set_active( )andcs_event-hash_routingabove; the wire values are unchanged - BREAKING:
cs_event-clipboard_app_state→app_state_get_href( )+cs_event-clipboard_copy - BREAKING:
cs_event-wizard_set_next_step→ twocontrol_by_idcalls - BREAKING:
cs_event-keyboard_set_mode→ the boundinputModeproperty ofz2ui5.cc.InputExt, which survives a re-render - BREAKING:
cs_event-nav_container_toand itsnest_/nest2_/popup_/popover_variants →cs_event-control_by_idwith methodto - BREAKING:
cs_event-image_editor_popup_close - BREAKING:
_event( s_ctrl-check_allow_multi_req )→s_ctrl-check_queue_last - BREAKING: the pure UI5 options of
message_toast_display( )andmessage_box_display( )(width, docking, animation and the like) — set them on the control throughcs_event-control_global - BREAKING: the released DDIC structure
Z2UI5_T_02— name a type your own system has
See Deprecations for the migration of each.
1.144.0 ​
2026-08-30
- Added
client->_event( arg = … ), the one-value spelling oft_arg.arg = xis exactlyt_arg = VALUE #( ( x ) )— the client folds it into the same table, so the wire andget_event_arg( )are unchanged — and it exists because most event wires carry a single value (a row key, a${$source>/…}, one event parameter), where the table constructor is longer than the value inside it. Passing both appendsargbehind thet_argrows. From two values on,t_argstays the right parameter: there is deliberately noarg2/arg3 - Added
client->_bind_path( val ), the path form of_bind( )under a name of its own — what a bound aggregation, abinding_callfilter/sorter andbindElementneed. It is_bind( val = … path = abap_true ), byte for byte, and takes one parameter; combinepathwithtab/tab_index,omit_initial,jsonorswitch_default_modeland_bind( )is still the call.pathstays on_bind( )and is not deprecated - Frontend actions:
expandSelected/collapseSelectedon a tree table,setBadgeMinValue/setBadgeMaxValue,IconPool.registerFontfor a custom icon font (sap.tnt's SAP-icons-TNT is the common one — without the registration such an icon renders no glyph and logs nothing), andaddCustomCurrencies, which MERGES codes rather than replacing the whole registration the waysetCustomCurrenciesdoes NavContainerto( )takes a typed page id plus an optional transition name, andbackToPage( )no longer silently does nothing when handed a plain page id- Event arguments: an empty string arrives as an empty string, and a date-valued argument travels as the LOCAL date instead of shifting a day west of the system's timezone
client->get( )-t_model_skippednames the cells a model delta could not convert, instead of dropping them without a trace- The page-location block is latched when its request is confirmed rather than when it is built, so an aborted first request no longer suppresses it for the rest of the session
- 7.02 / 7.31: a built-in function in a table-expression key no longer takes the whole class pool down at compile time (report #2664)
MultiInputExtgained the suggestion-row half ofaddValidator- Developer Tools: the cross-tab search moved onto a tab of its own
Renamed — the old name still ships
z2ui5_if_exitis nowz2ui5_if_ui5_exit. The old interface still ships and is still looked up and called, so every existing exit keeps working; rename at your leisure
Removed
- BREAKING:
z2ui5_if_typesis retired tosrc/99— every type it held now sits on the object that uses it (ty_s_get/ty_s_event_control/ty_s_name_value/ty_t_name_value/cs_deviceonz2ui5_if_client, the three HTTP config types onz2ui5_if_ui5_exit,ty_s_draftonz2ui5_cl_ui5_srv_draft). Nothing is deleted or reshaped: the interface ships unchanged from the frozen package, soz2ui5_if_types=>…still compiles, and every moved type is identical field for field
1.143.0 ​
2026-08-16
- Added
z2ui5_cl_ui5_view_builder, the view builder this documentation is written against:factory( )/ele( )/tag( )/a( )/end( )/stringify( ), with every UI5 control and property reachable because the builder knows none of them by name.z2ui5_cl_xml_viewis frozen, not removed — it ships unchanged and keeps working - The model is pushed automatically when an event roundtrip changed it. The framework compares the model before and after
main( )and sends it to every open view slot when it differs, so a handler can no longer render stale by forgetting a call. An unchanged model sends no payload at all - Error output: a 500 now carries the full diagnostic — the message chain, one block per exception (class, text, source position, kernel error id, public attributes) and the app / event / draft / url / system context. The error popup shows the messages only, with the detail one click away behind Details and in Copy
- The HTTP handler asks ICF to gzip its responses where the client accepts it — 70–85% less transfer on installations whose ICM profile does not compress already
- Added
_bind( json = abap_true ): a bound string that already contains JSON is spliced into the model as a JSON node, for control properties that must receive an object (asap.ui.integrationCard manifest, whose keys are not valid ABAP field names) - Control-valued event arguments now reach the backend as data —
ViewSettingsDialog.confirm,SinglePlanningCalendar.selectedDatesChangeand the like used to break serialization entirely - Added
setP13nDatatoCONTROL_METHODS, so seeding asap.m.p13npanel no longer needs hand-written JavaScript message_toast_display( )/message_box_display( )queue follow-up actions: several calls in one roundtrip all show, in call order, after the view rendered- The startup page was rebuilt — the five quickstart steps top to bottom, then one row per sample repository with its install status, and the system information as a popup
- Developer Tools: the POPUP/POPOVER tabs now follow a dialog closed without a roundtrip; empty tabs gray out instead of opening blank; the NEST/NEST2 and System tabs are gone
- The wire got leaner throughout (internal): action lists travel as real JSON arrays, session-constant browser data travels once per page load, a display action implies the slot teardown, and the routing mode is only re-sent when the frontend may not hold it
- Fixes: a pending backend timer no longer fires into a destroyed controller; an app switch clears the previous app's keyboard shortcuts; a nested view re-displayed without its MAIN view gets the model too;
cc/Storagecompares by value, so a structure can be stored and read back; theMessageToastPopup.Dockwarning is gone; the default CSP no longer namesframe-ancestorsin the<meta>tag src/99test classes are back in CI: all 27 restored, the two disabledxml_viewsuites re-enabled, and the freeze now covers production code only
Obsolete — still compiles, still works
view_model_update( ),popup_model_update( ),popover_model_update( )and the two nested variants now do nothing. The push is automatic; delete the calls when you next touch the app_event_client( )→follow_up_action( ), which is the same call in the same position_bind( custom_mapper = … custom_filter = … )→omit_initial/omit_initial_paths/json, or shape it in ABAPcs_event-wizard_set_next_step→ twocontrol_by_idcalls, which additionally reachgoToStep
Removed
set_nav_back( )andset_nav_routing( )fromz2ui5_if_client. Routing isfollow_up_action( val = cs_event-set_nav_routing t_arg = ( mode ) )now;set_push_state( )andset_app_state_active( )stay and delegate to the eventscs_event-nav_to_route→nav_app_call( ), which is the real navigation and pushes the same route history entry when routing is oncs_event-history_back→follow_up_action( |history.back()| ), ornav_app_leave( )to return through the app stackVIEWNAMEfromz2ui5_if_types=>ty_s_get. The framework never filled it — an app readingclient->get( )-viewnamehas to drop the readz2ui5_if_app~check_sticky/check_initializedmoved to the framework's own app wrapper. Both attributes stay and are kept in sync, so a read still sees the truth; a direct write is no longer honored — useset_session_stateful( )andcheck_on_init( )- Curated formatter:
round2DP,dimensions,stockStatusState,stockStatusIcon,deliveryStatusState. Rounding, joining and status-to-ValueStatemapping are things ABAP finishes — bind the result. The date helpers andexpandInlineIconsremain render_documentation( ),render_system_popup( )andrender_contribution( )fromz2ui5_cl_ui5_app_start, withcs_event-open_info,cs_event-closeandcs_event-open_debug— internals of the framework's own start page
1.142.0 ​
2026-07-20
- Added frontend action functions:
control_by_id,binding_call - Added new frontend events, e.g.
SYSTEM_LOGOUTandKEYBOARD_SET_MODE - Extended the Debug Tool with error/log tabs and export (renamed to Developer Tools)
- Performance: introduced delta data transfer — only changed fields/rows are sent to the backend
- Compatibility: UI5 1.71 / UI5 2.x fixes (lazy module loading, lifecycle, aggregation escaping)
- Security: error message sanitization, security response headers, fatal-error overlay
- Samples repository fully reworked
- Various small improvements and bug fixes
Removed
z2ui5_cl_util_apiand its environment-specific variantsz2ui5_cl_util_api_c/z2ui5_cl_util_api_s. The methods were kept:bal_*,tr_*,conv_get_itab_by_xlsx/conv_get_xlsx_by_itabandsource_get_methodare now onz2ui5_cl_util_ext, the remaining ones onz2ui5_cl_util. Replace thez2ui5_cl_util_api=>prefix with the class that now holds the methodz2ui5_cl_pop_bal(BAL message popup) — removed without a replacement. The other built-in popups were not removed; they moved into the frozen package and keep working unchanged
1.141.0 ​
2025-12-14
- Added Image Editor popup for image manipulation
- Added Camera Selector control with facing mode support
- Added Camera Picture control with configurable height/width
- Implemented security headers in HTTP response handling
- Added experimental
check_on_eventmethod for improved event handling (since adopted as a fully supported dispatch API alongsideCASE client->get( )-event) - Added experimental
_event_nav_app_leavemethod for navigation - Improved error handling with enhanced error popup
- Updated ajson library to latest version
- Code quality improvements: refactoring, formatting, and ABAP Cloud ATC findings
- Various bug fixes and performance improvements
1.140.0 ​
2025-09-15
- New User Exit Logic with greater customization options
- Added Data Binding with References
- Optimized Data Binding Logic for faster performance
- ABAP Cloud Compatibility Adjustments
- Bug fixes for Data Loss Protection
- Bug fixes for Stateful Functionality
- Various bug fixes and performance improvements
1.139.0 ​
2025-06-26
- Improved documentation
- Added multiple new control properties
- Fixed Launchpad compatibility issues
- Various bug fixes and performance improvements
1.138.0 ​
2025-03-31
- Introduced a Copy to Clipboard feature for improved usability
- Enhanced the BAL message popup with multiple improvements
- Resolved serialization issues for numeric values
- Fixed Launchpad compatibility problems with older UI5 versions
- Updated the bundled ajson library to the latest version
1.137.0 ​
2025-01-26
- Introduced App State feature
- Added App State Persistence for Navigation
- Fixed long string bugs for older releases
- Resolved popup get value issues
- Ensured Launchpad compatibility with OpenUI5 2.x
- Multiple bug fixes and new properties added
1.136.0 ​
2024-12-15
- Extended Model Handling with OData Support
- UI5 2.x Compatibility
- New Documentation
- Navigation Container in Popover
- New UI Controls: AvatarGroup, Viz Charts, and more
- SetMaxWidth for Launchpads
- Multiple bug fixes and new properties added
1.135.0 ​
2024-10-27
- Stateful Session Handling
- Object List Item now supports "type" attribute
- Message Strip with formatted text options
- Customizable Icons for Links, Expandable Text with class attributes
- Improved Frontend File Organization
- Various bug fixes for Launchpad compatibility
1.134.0 ​
2024-09-22
- Added Tile Controls
- Added Color Control
- Added Multiselect Feature for Popup to Select
- Added Data Loss Feature
- Separated Custom Controls & Layouts from abap2UI5 Core
- Multiple bug fixes and new properties added
1.133.0 ​
2024-08-24
- Added Controls & Properties for Splitter, Grid, Generic Tag, Content Areas, Step Input, News Content, Numeric Content, etc.
- Added Shell Bar Properties & Events
- Added Side Navigation Properties & Events
- Added Color Picker Properties
- Updated Layout Management of Table Popups
- Fixed Low Release Compatibility of Method to Read Fix Values
- Multiple bug fixes and new properties added
1.132.0 ​
2024-07-28
- Added Properties for Multi Input, Slider, Search Field, etc.
- Added Date Range Selection Control, etc.
- Fixed Generic Tile & Avatar Control
- Fixed Binding with Custom Mapper
- Fixed Downport Functionality
- Fixed ABAP 750 Syntax
- Multiple bug fixes and new properties added
1.131.0 ​
2024-07-03
- Added Radio Button, Radio Button Group, Date Range Selector
- Added Popup Layout V2
- Fixed Launchpad Title
- Fixed Syntax for 7.50
1.130.0 ​
2024-06-13
- Added Wizard Control, Wizard Steps
- Added Frontend Info CC with Device Information
- Fixed Binding Logic, bind_clear replaced
- Fixed Multiple Issues for Focus CC
- Added Message Strip Visible Property
1.129.0 ​
2024-06-01
- Added New Attributes for FilterGroupItem Control
- Added New Attributes for VariantManagement Control
- Fixed Issues with Data Model & Binding Logic
- Addressed Fixes for SAP Fiori Launchpad Integration
1.128.0 ​
2024-05-20
- Fixed Popover and Message Toast Adjustments
- Fixed Launchpad Compatibility
- Fixed Data Binding with Generic Data References
- Added New Properties for the XML View
1.127.0 ​
2024-05-05
- Added New Properties for Range Slider and Status Indicator
- Added Message Toast & Message Box Improvements
- Added Support for Automatic Renaming
- Bug fixes and small improvements
1.126.0 ​
2024-04-17
- Fixed XML View Extensions
- Improved Support for Attributes created with RTTI
- Updated Spreadsheet CC for OpenUI5 Compatibility
1.125.0 ​
2024-04-06
- Fixed Binding for Attributes created with RTTI
- Added XML View Extensions
- Replaced Magic Numbers and Fixed Auto Renaming
- Added Download base64 Files
- Added Features for Interactive Charts
1.124.0 ​
2024-04-01
- Data Binding Improvements
- Fixed Popup Handling
- Fixed App in App Handling
- Added New XML Properties for MultiInput and Table
- Added Table with Column Menu
1.123.0 ​
2024-03-20
- Added Card Control
- Fixed Nested View Data Binding
- Fixed Boolean Type Conversion
- Added Popover in Popup
- Added New Control Properties
1.122.0 ​
2024-03-11
- Added New Control Properties
- Improved F4-Dialog with Description
- Fixed JSON Handling for Type P
- Fixed Launchpad Compatibility for BTP and Title Handling
1.121.0 ​
2024-03-01
- Fixed Launchpad Compatibility
- Added Custom Control Message Manager
- Fixed Issues for low UI5 releases
1.120.0 ​
2024-02-25
- Added Templating
- Added Popup & Layout Functionality
- Fixed Debugging Tools XML Output
- Fixed Messaging
1.119.0 ​
2024-02-16
- Added Source Code View for Debugging Tools
- Added New Parameters for the UI5 Tree Control
- Changed Design for Start Page
1.118.0 ​
2024-02-08
- Replaced /ui2/cl_json with ajson
- Fixed Compatibility for Low Releases
1.117.0 ​
2024-02-02
- Added NavContainer in Popups
- Added New Properties to XML View
- Improved POPUP_TO_SELECT (title, sorting, descriptions)
- Fixed Issues for ABAP for Cloud Readiness
1.116.0 ​
2024-01-26
- Added StartUp App with Value Help
- Added Popup Error, Popup Range, Popup Table
- Added Custom Control Chart.js
- Fixed Popup Model Handling
- Bug fixes
1.115.0 ​
2024-01-19
- Fixed Binding Logic
- Added Popups (Confirm, Inform, Select Entry, PDF View, Message View)
1.114.0 ​
2024-01-12
- Fixed Cross App Navigation
- Fixed Table Output
- Changed Debugger Tools
1.113.0 ​
2024-01-03
- Added New Debugging Tools
- Changed UI5 Module Loading
Edit this page on GitHub ↗
Last updated: