docs

Migration Information for Upgrading the Manifest File

Information how to add new attributes of manifest (also known as descriptor) versions higher than V2 (OpenUI5 1.30) to the manifest file.

</tr> </tr> </tr> </table> \* Available as of manifest version \(OpenUI5 version\)
Version \(UI5 Version\) Attribute Description
2.0.0 \(1.136\) Root View and Routing Configuration Synchronous root view creation and routing configuration are no longer supported. The `async` flag for both the `rootview` and the `routing` configuration is now implicitly set to`true` and no longer needs to be specified.
2.0.0 \(1.136\) Deprecated Manifest Entries Deprecated manifest entries managed by the OpenUI5 framework cannot be used anymore and will cause errors. This has the following consequences: - Arbitrary JavaScript resources can no longer be loaded via `sap.ui5/resources/js`. Please use dedicated modules as eager dependencies instead, such as within your `Component.js` - The routing properties `ViewId`, `viewName`, `viewPath` and `viewLevel` can no longer be used. Please use the documented alternatives by replacing them with the properties `id`, `name`, `path` and `level`, respectively along with adding the `type: "view"`. For more information, See [Routing Configuration](https://github.wdf.sap.corp/uics-innersource/ui5-docs/blob/manifestmigr/docs/04_Essentials/routing-configuration-9023130.md). - Supported themes can no longer be specified via the `sap.ui/supportedThemes` section.
2.0.0 \(1.136\) Error Validation Manifest Version 2 also enables a stricter error handling for views and fragments. Syntactical errors \(e.g. broken binding strings\) will now lead to errors being thrown. Programmatically created views will reject the factory promise accordingly.
2.0.0 \(1.136\) `IAsyncContentCreation` While the Manifest Version 2 behavior regarding root view and routing configuration is similar to the behavior of the [`sap.ui.core.IAsyncContentCreation`](https://ui5.sap.com/#/api/sap.ui.core.IAsyncContentCreation) interface, they are not interchangeable. For compatibility reasons, the Manifest Version 2 does **not** enforce the implementation of this interface. In order to use an asynchronous `sap/ui/core/UIComponent#createContent` implementation in your subclasses, the `sap.ui.core.IAsyncContentCreation` interface must be implemented explicitly. Please also be aware that the implementation of the `sap.ui.core.IAsyncContentCreation` interface changes the aggregation behavior of the root view. When the root view is loaded asynchronously and the Component implements `sap.ui.core.IAsyncContentCreation`, the root view controller's [`onInit`](https://ui5.sap.com/#/api/sap.ui.core.mvc.Controller%23methods/onInit) hook no longer has access to Component models through the view instance. To retrieve model instances, we recommend using the [`sap/ui/core/mvc/Controller#getOwnerComponent`](https://ui5.sap.com/#/api/sap.ui.core.mvc.Controller%23methods/getOwnerComponent) API on the controller instance. We recommend any Component or UIComponent to implement the `sap.ui.core.IAsyncContentCreation` interface whenever possible.
1.63.0 \(1.124\) `sap.ui5/dependencies/minUI5Version` The attribute `minUI5Version` can now be an array of versions where each major version can only be included once. If you specify an array that contains more than one version, and if version 1 is included, it must be at least 1.136.x.
1.50.0 \(1.110\) `sap.fiori/cloudDevAdaptationStatus` Release status for the developer adaptation in SAP S/4HANA Cloud Public Edition and SAP BTP, ABAP environment \(SAP-internal\). Supported types: - `released` - `deprecated` - `obsolete` - No value means not released . For more information, see [Releasing an SAP Fiori Application to Be Extensible in Adaptation Projects on SAP S/4HANA Cloud and SAP BTP, ABAP Environment](https://help.sap.com/docs/bas/developing-sap-fiori-app-in-sap-business-application-studio/releasing-sap-fiori-application-to-be-extensible-in-adaptation-projects-on-sap-s-4hana-cloud).
1.136.0 \(1.94\) `sap.ui5/resources/js` \(deprecated\) Since 1.94 the usage of `js` resources is deprecated. Please use regular dependencies instead.
1.21.0 \(1.77\) `sap.ui5/models//settings/supportedLocales` `sap.ui5/models//settings/fallbackLocale` `sap.ui5/models//settings/terminologies` </td> The `supportedLocales` and `fallbackLocale` settings can be specified with a list of supported locales and a fallback locale to define a language fallback chain and optimize the loading performance of resource bundles. Additional resource bundles can be made available by defining `terminologies`. ``` { ... "models": { "i18n": { "type": "sap.ui.model.resource.ResourceModel", "settings": { "bundleName": "myapp.i18n.i18n", "supportedLocales": ["de", "en"], "fallbackLocale": "de", "terminologies": { "sports": { "bundleUrl": "i18n/terminologies/sports/i18n.terminologies.sports.properties", "bundleUrlRelativeTo": "manifest", "supportedLocales": ["en", "de"] }, "travel": { "bundleUrl": "i18n/terminologies/travel/i18n.terminologies.travel.properties", "bundleUrlRelativeTo": "manifest", "supportedLocales": ["en", "de"] }, "services": { "bundleUrl": "i18n/terminologies/services/i18n.terminologies.services.properties", "bundleUrlRelativeTo": "manifest", "supportedLocales": ["en", "de"] } } } } } ... } ```
1.19.0 \(1.75\) `sap.ui5/routing/propagateTitle` The `propagateTitle` property can be set to forward title information from a nested component to the router in the root component. ``` { ... "componentUsages": { "myreuse": { "name": "reuse.component", ... } }, "routing": { "config": { ... }, "routes": [{ "name": "home", "pattern": "", "target": { "name": "attachment", "prefix": "atch", "propagateTitle": true } }], "targets": { "attachment": { "type": "Component", "usage": "myreuse", "options": { ... }, ... } } } ... } ```
1.16.0 \(1.70\) `sap.ui5/commands` Specifies provided commands with a unique key/alias. ``` { ... "commands": { "Save": { "shortcut": "Ctrl+S" } }, ... } ```
1.15.0 \(1.66\) sap.ui5/routing/routes/targets/<targetName>/usage A component can be configured as a routing target by defining it in the `componentUsages` section and providing its key to a target via the `usage` property. ``` { ... "componentUsages": { "myreuse": { "name": "reuse.component", "settings": {}, "componentData": {}, "lazy": false } }, "routing": { "config": { ... }, "routes": [{ "name": "home", "pattern": "", "target": { "name": "attachment", "prefix": "atch" } }], "targets": { "attachment": { "type": "Component", "usage": "myreuse", "options": { // optional // define the additional parameter for // instantiating the component instance }, "containerOptions": { // optional // define the additional parameter for // instantiating the component container // which enables the component to be rendered // in the parent control }, "controlId": "page", "controlAggregation": "content" } } } ... } ```
1.14.0 \(1.62\) sap.ui5/routing/routes/targets/<targetName>/type sap.ui5/routing/routes/targets/<targetName>/path sap.ui5/routing/routes/targets/<targetName>/name sap.ui5/routing/routes/targets/<targetName>/id A routing target can load either a view or a component. With the `type` option set to "Component", the `Component.js` which is available under the namespace generated by combining `path` and `name` is loaded and instantiated. ``` { "routing": { "config": { ... }, "routes": [ ... ], "targets": { "/attachment/": { "type": "Component", "path": "reuse.component", "name": "attachment", "options": { ... }, "containerOptions": { ... }, "controlId": "page", "controlAggregation": "content" } } } } ```
1.11.0 \(1.56\) `sap.ui5/models//settings/enhanceWith` </td> The attribute `enhanceWith` can be specified with `bundleUrl`, `bundleUrlRelativeTo` \(either component \(default\) or manifest\) or `bundleName` to provide a list of additional resource bundle configurations to enhance the resource model with. Additional attributes can be found in [Terminologies](/docs/04_Essentials/terminologies-eba8d25.html). ``` { ... "models": { "i18n": { "type": "sap.ui.model.resource.ResourceModel", "uri": "i18n/i18n.properties", "settings": { "enhanceWith": [{ "bundleUrl": "i18n/i18n.properties", "bundleUrlRelativeTo": "manifest" }] } }, ... }, ... } ```
1.11.0 \(1.56\) `sap.ui5/componentUsages/lazy` Indicates whether the component usage should be lazily loaded. Default value: `true` For more information, see: [Component Instantiation Guide](/docs/04_Essentials/component-instantiation-guide-346599f.html). ``` { ... "componentUsages": { "myusage": { "name": "my.used", "settings": {}, "componentData": {}, "lazy": false } }, ... } ```
1.9.0 \(1.52\) `sap.ui5/library/i18n` Determines whether the library contains an i18n resource. The value can be either a boolean, a string, or \(since 1.78\) an object. A string value represents a bundle URL. Relative URLs are always resolved to the library origin. If no value is set, the default `messagebundle.properties` file is loaded. An object can contain additional resource bundle configuration, e.g. terminologies and supported locales. For the supported features and for sample definitions, see the respective entries at [Terminologies](/docs/04_Essentials/terminologies-eba8d25.html) \(without `bundleUrlRelativeTo`\) and [Supported Locales and Fallback Chain](/docs/04_Essentials/supported-locales-and-fallback-chain-ec753bc.html) . > ### Note: > This attribute is beneficial if the name of the main resource bundle \(properties file\) used by your UI5 library differs from the default name `messagebundle.properties` ``` { ... "library": { "i18n": true }, ... } ```
1.7.0 \(1.48\) `sap.ui5/componentUsages` Specifies the used components with the a unique key/alias. Contains the following: - `name`: Mandatory name of the reuse component - `settings`: Settings of the component - `componentData`: Component data of the component For more information see:[Component Instantiation Guide](/docs/04_Essentials/component-instantiation-guide-346599f.html) ``` { ... "componentUsages": { "myusage": { "name": "my.used", "settings": {}, "componentData": {} } }, ... } ```
1.5.0 \(1.42\) `sap.ui5/routing/routes/target` Allows to define titles declaratively in the configuration \(`title` under `targets/` and `titleTarget` under `routes/`\), see [Routing and Navigation](/docs/04_Essentials/routing-and-navigation-3d18f20.html) ``` { ..., "routes": [{ "pattern": "product/{id}/parts", "name": "ProductParts", "target": ["product", "productParts"], "titleTarget": "productParts" }], "targets": { "product": { "type": "View", "path": "shop.products", "name": "Product", "title": "Product" }, "productParts": { "type": "View", "path": "shop.products", "name": "Product", "title": "Product Parts" } }, ... } ``` </td> </tr>
1.4.0 \(1.38\) `sap.ui5/models/preload` Defines whether or not the model is initialized \(preloaded\) before the component instance is created and while loading the component preload and its dependencies ``` "equipment": { "preload": true, "dataSource": "equipment", ... } ```
1.3.0 \(1.34\) `sap.ui5/routing/config/async` General setting for routing that indicates how the views are loaded; if set to `true`, the views are loaded asynchronously \(default is `false`\) For performance reasons, we recommend to always use the `async` setting. This recommendation implies that you have followed the OpenUI5 programming model in general and do **not** rely on any sync-execution depending event-orders. ``` "sap.ui5": { "_version": "1.2.0", ... "routing": { "config": { "viewType": "XML", "async": true ... }, ... ```
1.3.0 \(1.34\) `sap.ui5/dependencies/components//lazy` and `dependencies/libs//lazy` </td> If `dependencies/components//lazy` and `dependencies/libs//lazy` are set to `true`, the attribute indicates in an SAP Fiori app that a dependency shall be lazy loaded \(default is `false`\), see the example for `manifest.json` for the SAP Fiori app. Example for `manifest.json` for the SAP Fiori app: ``` "sap.ui5": { "_version": "1.2.0", ... "dependencies": { "minUI5Version": "1.34.0", "libs": { "sap.m": { "minVersion": "1.34.0" }, "sap.ui.commons": { "minVersion": "1.34.0", "lazy": true } }, "components": { "sap.ui.app.other": { "minVersion": "1.1.0" "lazy": true } } }, ``` </td> </tr>
1.3.0 \(1.34\) `sap.app/crossNavigation/inbounds//subTitle` </td> Used to overwrite the `subTitle` attribute per inbound; use the `` syntax to add the attribute to the `manifest.json` file > ### Note: > Text symbols must be part of the properties file which is defined in `sap.app/i18n` \(default `"i18n/i18n.properties"`\). ``` "sap.app": { "_version": "1.3.0", ... "crossNavigation": { "inbounds": { "contactCreate": { "semanticObject": "Contact", "action": "create", "icon": "sap-icon://add-contact", "title": "", "subTitle": "", ```
1.3.0 \(1.34\) `sap.app/subTitle` Added to the `manifest.json` file by using the `` syntax > ### Note: > Text symbols must be part of the properties file which is defined in `sap.app/i18n` \(default `"i18n/i18n.properties"`\). ``` "sap.app": { "_version": "1.3.0", ... "title": "", "subTitle": "", ```
1.2.0 \(1.32\) `sap.app/crossNavigation` Contains navigation information and is a mandatory attribute in the `manifest.json` file for SAP Fiori apps; the attribute contains two sections: - `sap.app/crossNavigation/inbounds` - Contains inbound intents and signature information - `sap.app/crossNavigation/outbounds` - Contains required intents that are called explicitely by the app, for example, if a business process is split among different apps A and B. If A calls B, A has outbound the intent to address B.
1.2.0 \(1.32\) `_version` Needs to be updated in the `manifest.json` file when migrating to a new manifest version: - `_version` for V3 is 1.2.0 - `_version` for V4 is 1.3.0 - `_version` for V5 is 1.4.0 \(see example\) ``` { "_version": "1.4.0", "sap.app": { ... ```