This guide helps you modernize your OpenUI5 applications by providing a consolidated overview of all deprecated APIs, controls, themes, libraries, and patterns, along with their modern replacements.
Each of the following sections groups topics by library, listing the deprecated API, its modern replacement, and guidance on how to modernize your code. For detailed steps, follow the links to the dedicated pages.
Tip:
Use UI5 linter to detect deprecated API usage in your projects. UI5 linter is a static code analysis tool that checks your JavaScript, TypeScript, XML, and JSON files for issues. UI5 linter also provides autofixes for a selected number of issues. For more information, see Scope of Autofix.
For practical, hands-on guidance on migrating your OpenUI5 application to modern APIs, check out this SAP Community blog post, which covers step-by-step migration workflows and how UI5 linter can help automate parts of the process.
On this page:
All deprecated themes have been removed as of OpenUI5 1.136 or earlier. The recommended target theme is sap_horizon.
| Deprecated Theme | Deprecated as of | Removed as of | Replacement |
|---|---|---|---|
| `sap_belize` | 1.120 | 1.136 | `sap_horizon` |
| `sap_hcb` | 1.46 | 1.136 | `sap_horizon_hcb` |
| `sap_bluecrystal` | 1.40 | 1.136 | `sap_horizon` |
| `sap_ux` | 1.40 | 1.48 | `sap_horizon` |
| `sap_platinum` | 1.40 | 1.48 | `sap_horizon` |
| `sap_goldreflection` | 1.40 | 1.48 | `sap_horizon` |
The following libraries have been deprecated and/or removed entirely:
| Library | Deprecated as of | Replacement |
|---|---|---|
| `sap.ui.webc.common` `sap.ui.webc.fiori` `sap.ui.webc.main` | 1.120 | No direct replacement. Removed as of 1.147. For native web component usage in OpenUI5, see [Using Web Components](/docs/04_Essentials/using-web-components-1c80793.html). See also the removal [blog post](https://community.sap.com/t5/frontend-ui5-sap-fiori-blog-posts/removal-of-legacy-sap-ui-webc-web-component-ui-libraries-from-sapui5/ba-p/14358564). |
| `sap.ui.suite` | 1.108 | No replacement |
| `sap.ui.commons` | 1.38 | Replaced by `sap.m`, `sap.ui.unified`, and `sap.tnt` controls |
| `sap.ui.ux3` | 1.38 | Replaced by `sap.uxap` and `sap.ui.layout` controls |
sap.ui.core)The central sap.ui.getCore() singleton and the sap.ui.core.Configuration class have been deprecated and replaced by focused, modular facades. The following key pattern applies:
sap.ui.getCore() or sap.ui.getCore().getConfiguration()sap.ui.require / sap.ui.definesap.ui.core.Core)The sap.ui.core.Core API facade has been deprecated as of OpenUI5 version 1.119. Most of its 52 methods have been replaced by standalone modules. For the complete list of all 52 deprecated Core methods and their replacements, see Deprecated Core API.
sap.ui.core.Configuration)The sap.ui.core.Configuration class and its FormatSettings have been deprecated as of OpenUI5 version 1.120. The 55 methods have been replaced by focused modules. For the complete mapping of all 55 methods, see Deprecated Configuration API.
For deprecated bootstrap configuration options (e.g. animation, binding-syntax, manifest-first, preload), see Deprecated Configuration Options.
All legacy synchronous global view-, fragment-, controller- and component-factory functions have been deprecated. The modern replacements are asynchronous and return Promises. For the complete list, see Deprecated Factories Replacement.
jQuery.sap Module MigrationThe jQuery.sap.* API namespace has been deprecated. All utilities have been moved to dedicated ES modules under sap/base/* and sap/ui/*. For the complete mapping of all ~110 deprecated jQuery APIs, see Replacement of Deprecated jQuery APIs.
Future OpenUI5 versions will not support jQuery 2. Only jQuery 3 and above will be supported.
Additionally, the OpenUI5-jQuery migration compatibility layer (previously shipping as a customized jquery-migrate integration) will be removed in future OpenUI5 versions. Any JQMIGRATE log warnings that appear at runtime are indicators of jQuery 2-to-3 incompatibilities that must now be resolved. For migration instructions, see the official jQuery upgrade guide.
As of OpenUI5 version 1.120, XML View and Typed View are the only recommended view types. All other view types and related patterns are deprecated. Refer to the table below for recommendations when to use which replacement view type.
| Deprecated Pattern | Deprecated as of | Replacement | Details |
|---|---|---|---|
| **JSON View** \(`sap.ui.core.mvc.JSONView`\) | 1.120 | [XML View](/docs/04_Essentials/xml-view-91f2928.html) | [JSON View \(deprecated\)](/docs/04_Essentials/json-view-deprecated-91f2852.html) |
| **Declarative Support** \(`sap.ui.core.plugin.DeclarativeSupport`\) | 1.120 | [XML View](/docs/04_Essentials/xml-view-91f2928.html) | [Declarative Support \(deprecated\)](/docs/04_Essentials/declarative-support-deprecated-91f1301.html) |
| **View Cloning** | 1.120 | Call the view factory function again | [View Cloning \(deprecated\)](/docs/04_Essentials/view-cloning-deprecated-a575619.html) |
| **Native HTML in XML Views** | 1.120 | `sap.ui.core.HTML` control or custom control | [Using Native HTML in XML Views \(deprecated\)](/docs/04_Essentials/using-native-html-in-xml-views-deprecated-be54950.html) |
| **CSS in XML Views** | 1.120 | External CSS file | [Using CSS Style Sheets in XML Views \(deprecated\)](/docs/04_Essentials/using-css-style-sheets-in-xml-views-deprecated-b564935.html) |
| **HTML View** \(`sap.ui.core.mvc.HTMLView`\) | 1.108 | [XML View](/docs/04_Essentials/xml-view-91f2928.html) | No more known usages as HTML syntax brings no advantages over XML |
| **JS View** \(`sap.ui.core.mvc.JSView`\) | 1.90 | [Typed View](/docs/04_Essentials/typed-view-e6bb33d.html) via `View.extend()` | Define view class in JavaScript using `sap.ui.core.mvc.View.extend()` |
| **XML Composite Controls** \(`sap.ui.core.XMLComposite`\) | 1.88 | [Standard Composite Controls](/docs/07_Developing_Controls/standard-composite-controls-c1512f6.html) | [XML Composite Controls (deprecated)](https://help.sap.com/viewer/c442e2a74263451f845549bdbcdebe7b/1.149_SAPUI5_Internal/en-US/b83a4dcb7d0e46969027345b8d32fd44.html "An XML composite control allows you to define a composite control that clearly separates the behavior of the control from the visual part.") :arrow_upper_right: |
| **Template View** \(`sap.ui.core.mvc.TemplateView`\) | 1.56 | [XML View](/docs/04_Essentials/xml-view-91f2928.html) or [Typed View](/docs/04_Essentials/typed-view-e6bb33d.html) | Include Handlebars template support |
This section lists high-impact control deprecations that must be replaced. The containing libraries are not deprecated.
sap.m| Deprecated Control | Deprecated as of | Replacement | Details |
|---|---|---|---|
| `sap.m.upload.UploadSet`, `UploadSetItem`, `UploadSetToolbarPlaceholder`, `Uploader` | 1.129 | `sap.m.plugins.UploadSetwithTable`, `sap.m.upload.UploadItem`, `sap.m.upload.ActionsPlaceholder`, `sap.m.upload.UploaderTableItem` | Intermediate replacement between `UploadCollection` \(1.88\) and `UploadSetwithTable` |
| `sap.m.P13nFilterPanel`, `sap.m.P13nConditionPanel` | 1.124 | `sap.m.p13n` artifacts | All remaining `sap.m.P13n*` items, helpers, and panels deprecated since 1.120-1.124 \(16+ P13n classes in total\) |
| `sap.m.MultiEditField` | 1.120 | No replacement | |
| `sap.m.TablePersoController`, `sap.m.TablePersoDialog`, `sap.m.TablePersoProvider` | 1.115 | `sap.m.p13n.Engine`, `sap.m.p13n.Popup` | [Table Personalization \(deprecated\)](/docs/08_More_About_Controls/table-personalization-deprecated-1c60212.html) |
| `sap.m.MessagePage` | 1.112 | `sap.m.IllustratedMessage` | |
| `sap.m.ActionSelect` | 1.111 | No replacement \(concept discarded\) | |
| `sap.m.P13nDialog` | 1.98 | `sap.m.p13n.Popup` | Part of the old P13n framework; the entire `sap.m.P13n*` class family is deprecated |
| `sap.m.P13nColumnsPanel` | 1.98 | `sap.m.p13n.SelectionPanel` | |
| `sap.m.P13nSortPanel` | 1.98 | `sap.m.p13n.SortPanel` | |
| `sap.m.P13nGroupPanel` | 1.98 | `sap.m.p13n.GroupPanel` | |
| `sap.m.UploadCollection` | 1.88 | `sap.m.plugins.UploadSetwithTable` | [Upload Collection \(deprecated\)](/docs/08_More_About_Controls/upload-collection-deprecated-124ee13.html). The original replacement `sap.m.upload.UploadSet` is itself deprecated since 1.129; use `sap.m.plugins.UploadSetwithTable` directly. |
| `sap.m.Tile`, `sap.m.StandardTile`, `sap.m.CustomTile`, `sap.m.TileContainer` | 1.50 | `sap.m.GenericTile` | |
| `sap.m.routing.RouteMatchedHandler` | 1.28 | `sap.m.routing.Router` or `sap.m.routing.Targets` | Functionality is built into the router itself |
sap.f| Deprecated Control | Deprecated as of | Replacement |
|---|---|---|
| `sap.f.IllustratedMessage` | 1.98 | `sap.m.IllustratedMessage` |
| `sap.f.Illustration` | 1.98 | `sap.m.Illustration` |
| `sap.f.Avatar` | 1.73 | `sap.m.Avatar` |
sap.ui.table| Deprecated Control | Deprecated as of | Replacement |
|---|---|---|
| `sap.ui.table.Table` row-mode properties \(`visibleRowCount`, `visibleRowCountMode`, `fixedRowCount`, `fixedBottomRowCount`, `minAutoRowCount`, `rowHeight`\) and enum `VisibleRowCountMode` | 1.119 | `rowMode` aggregation with `sap.ui.table.rowmodes.Auto`, `.Fixed`, `.Interactive` |
| `sap.ui.table.ColumnMenu` | 1.117 | `sap.m.table.columnmenu.Menu` |
| `sap.ui.table.AnalyticalColumnMenu` | 1.117 | `sap.m.table.columnmenu.Menu` |
| `sap.ui.table.TablePersoController` | 1.115 | `sap.m.p13n.Engine` |
sap.ui.unified| Deprecated Control | Deprecated as of | Replacement |
|---|---|---|
| `sap.ui.unified.Shell`, `ShellLayout`, `ShellOverlay`, `ShellHeadItem`, `ShellHeadUserItem` | 1.44 | No replacement \(concept discarded\). Use `sap.f.ShellBar` or `sap.tnt.ToolPage` for app shell patterns. |
| `sap.ui.unified.ContentSwitcher` | 1.44 | No replacement |
| `sap.ui.unified.SplitContainer` | 1.44 | No replacement |
sap.ui.layout| Deprecated Control | Deprecated as of | Replacement |
|---|---|---|
| `sap.ui.layout.form.ResponsiveLayout` | 1.93 | `sap.ui.layout.form.ColumnLayout` or `sap.ui.layout.form.ResponsiveGridLayout` |
| `sap.ui.layout.form.GridLayout`, `GridContainerData`, `GridElementData` | 1.67 | `sap.ui.layout.form.ColumnLayout` or `sap.ui.layout.form.ResponsiveGridLayout` |
sap.ui.mdc| Deprecated | Deprecated as of | Replacement |
|---|---|---|
| `sap.ui.mdc.filterbar.aligned.FilterContainer` | 1.144 | `sap.ui.mdc.filterbar.FilterContainer` |
| `sap.ui.mdc.filterbar.vh.FilterBar` | 1.124 | `sap.ui.mdc.valuehelp.FilterBar` |
| `sap.ui.mdc.filterbar.vh.CollectiveSearchSelect` | 1.124 | `sap.ui.mdc.valuehelp.CollectiveSearchSelect` |
| `sap.ui.mdc.flp.FlpLinkDelegate` | 1.120 | `sap/ui/mdc/ushell/LinkDelegate` |
| `sap.ui.mdc.link.SemanticObjectMapping` | 1.120 | `sap.ui.mdc.ushell.SemanticObjectMapping` |
| `sap.ui.mdc.link.SemanticObjectMappingItem` | 1.120 | `sap.ui.mdc.ushell.SemanticObjectMappingItem` |
| `sap.ui.mdc.link.SemanticObjectUnavailableAction` | 1.120 | `sap.ui.mdc.ushell.SemanticObjectUnavailableAction` |
| `sap.ui.mdc.enum.*` \(14 enums\) | 1.115 | `sap.ui.mdc.enums.*` \(renamed namespace\) |
The following sap.ui.core classes have been deprecated entirely:
| Deprecated Class | Deprecated as of | Replacement |
|---|---|---|
| `sap.ui.core.Message` | 1.120 | `sap.ui.core.message.Message` |
| `sap.ui.core.search.SearchProvider`, `OpenSearchProvider` | 1.120 | No replacement |
| `sap.ui.core.LocalBusyIndicator` | 1.120 | No replacement. Superseded by `sap.ui.core.Control` native busy indication \(refer to `Control#setBusy`\). |
| `sap.ui.core.CalendarType` | 1.120 | `sap/base/i18n/date/CalendarType` |
| `sap.ui.core.date.CalendarWeekNumbering` | 1.120 | `sap/base/i18n/date/CalendarWeekNumbering` |
| `sap.ui.core.MessageType` | 1.120 | `sap/ui/core/message/MessageType` |
| `sap.ui.core.message.MessageManager` | 1.118 | `sap/ui/core/Messaging` |
| `sap.ui.core.format.DateFormatTimezoneDisplay` | 1.101 | `DateFormat.getDateTimeWithTimezoneInstance()` with `showDate`, `showTime`, `showTimezone` options |
| `sap.ui.core.util.Export`, `ExportCell`, `ExportColumn`, `ExportRow`, `ExportType`, `ExportTypeCSV` | 1.73 | No replacement. Migrate to a third-party export solution. |
| `sap.ui.core.tmpl.Template`, `HandlebarsTemplate`, `DOMElement`, `DOMAttribute`, `TemplateControl` | 1.56 | XML View or Typed View. Refer to [Deprecated View Types and Patterns](/docs/04_Essentials/deprecated-view-types-and-patterns-ea87c42.html). |
| `sap.ui.core.ScrollBar` | 1.56 | No replacement |
| Deprecated Pattern | Deprecated as of | Replacement |
|---|---|---|
| Consuming OData V2 Services with the OData V4 Model | 1.143 | Migrate to a native OData V4 service |
| `sap.ui.model.analytics.AnalyticalBinding`, `AnalyticalTreeBindingAdapter`, `ODataModelAdapter`, `odata4analytics`, `BatchResponseCollector` | 1.138 | No direct replacement within OData V2. Migrate the back-end service to OData V4 first, then use the OData V4 Model's data aggregation feature. See [Transition from OData V2 to OData V4](/docs/04_Essentials/upgrading-your-odata-model-cda632b.html#loiocda632b01c1e4a988ccecab759d19380__section_OD2OD4) and [Data Aggregation](/docs/04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.html). |
| `sap.ui.model.odata.ODataTreeBindingAdapter` | 1.138 | No direct replacement within OData V2. Migrate the back-end service to OData V4 first, then use the OData V4 Model's recursive hierarchy feature. See [Transition from OData V2 to OData V4](/docs/04_Essentials/upgrading-your-odata-model-cda632b.html#loiocda632b01c1e4a988ccecab759d19380__section_OD2OD4) and [Recursive Hierarchy](/docs/04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.html#loio7d914317c0b64c23824bf932cc8a4ae1__section_RCH). |
| `sap.ui.model.odata.ODataModel` | 1.48 | `sap.ui.model.odata.v2.ODataModel`. For a full modernization, migrate the back-end service to OData V4 and use the `sap.ui.model.odata.v4.ODataModel`. See [Transition from OData V2 to OData V4](/docs/04_Essentials/upgrading-your-odata-model-cda632b.html#loiocda632b01c1e4a988ccecab759d19380__section_OD2OD4). |
| `sap.ui.model.odata.Filter` | 1.22 | `sap.ui.model.Filter` |
| Topic | Description | Details |
|---|---|---|
| Component metadata to manifest | Migrate legacy `Component.js` metadata properties \(version, config, dependencies, customizing, includes, rootView, routing\) to their `manifest.json` equivalents. | [Migrating from Component Metadata to Manifest](/docs/04_Essentials/migrating-from-component-metadata-to-manifest-e282db2.html) |
| Manifest file upgrade | Upgrade `manifest.json` to the latest version format. Manifest V2.0.0 \(OpenUI5 1.136\) introduces breaking changes to the routing configuration: `viewName` → `name`, `viewId` → `id`, `viewPath` → `path`, `viewLevel` → `level`. | [Migration Information for Upgrading the Manifest File](/docs/04_Essentials/migration-information-for-upgrading-the-manifest-file-a110f76.html) |
The following guides cover breaking changes that require attention when upgrading across specific version boundaries:
| Version Boundary | Key Changes | Details |
|---|---|---|
| Below 1.89 | IE11 polyfill removal, jQuery upgrade to 3.6.0 | [Upgrading from a Version Below 1.89](/docs/02_Read-Me-First/upgrading-from-a-version-below-1-89-89b14ce.html) |
| Below 1.82 | jQuery upgrade from 2.x to 3.5.1 with compatibility layer | [Upgrading from a Version Below 1.82](/docs/02_Read-Me-First/upgrading-from-a-version-below-1-82-147eef9.html) |
| Below 1.40 | Only one jQuery version bundled \(2.2.3\) | [Upgrading from a Version Below 1.40](/docs/02_Read-Me-First/upgrading-from-a-version-below-1-40-278a8e5.html) |
| Below 1.38 | jQuery upgrade from 1.x to 2.2.3, manifest descriptor introduction | [Upgrading from a Version Below 1.38](/docs/02_Read-Me-First/upgrading-from-a-version-below-1-38-c1025c2.html) |
For general upgrade guidance, see Upgrading.
The hybrid web container approach for mobile applications has been deprecated as of OpenUI5 version 1.147. It relies on Apache Cordova/PhoneGap, which is no longer maintained. For more information, see Development for Hybrid Web Containers (deprecated).
Related Information