{"ref":"capability:ui5-dev-server","page":"/capabilities/ui5-dev-server","json":"/capabilities/ui5-dev-server.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"ui5-dev-server","name":"Integrated frontend dev server","domain":"ui-and-frontend-bridge","ecosystems":["cap","ui5"],"universal":false,"description":"Serving a frontend and its backend services together during development, so they can be reached through one local origin. Serving prebuilt files and integrating a frontend toolchain that assembles resources on demand are different requirements.","short":"Serving a frontend and its backend services from one local origin","core_coverage":{"state":"core-and-community","assessed_at":"2026-09-27","relationship":"unassessed","what_core_does":"The CDS server serves a folder as static content, `./app` by default, and links every SAP Fiori app it finds there on the generic index page, which development gets and production does not. For an entity exposed as OData V4 the index also carries a Fiori preview, a list page the server renders from the annotations with no UI project in the folder at all.","where_it_stops":"At the files in the folder and the preview page the server renders itself. A UI5 CLI project, whose framework resources, middlewares and transpiled sources the UI5 tooling assembles rather than leaving in the folder, is not what a static handler serves.","community_adds":"[cds-plugin-ui5](artifact:ui5-community-cds-plugin-ui5) runs the UI5 CLI express middlewares inside the CDS server, so a UI5 CLI project in `app/`, in the folder `cds.env.folders.app` names, or added as a dependency is served beside the services. capire lists it among the CAP plugins and says it serves dynamic UI5 resources, TypeScript implementations of UI5 controls included, which it transpiles.","sources":[{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — capire, the app folder","checked":"2026-09-27","quote":"SAP Fiori apps should be added as subfolders of the `app/` directory in a CAP project."},{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — capire, links on the index page","checked":"2026-09-27","quote":"Links to Fiori applications created in the `app/` folder are automatically added to the index page of your CAP application for local development."},{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — capire, Fiori preview","checked":"2026-09-27","quote":"It dynamically serves an SAP Fiori elements list page that allows you to quickly see the effect of annotation changes without having to create a UI application first."},{"url":"https://cap.cloud.sap/docs/node.js/cds-server","title":"cds.server — capire, the built-in server.js","checked":"2026-09-27","quote":"app.use (express.static (o.static))"},{"url":"https://cap.cloud.sap/docs/node.js/cds-server","title":"cds.server — capire, Toggle Generic Index Page","checked":"2026-09-27","quote":"The default generic _index.html_ page is not served if `NODE_ENV` is set to `production`."},{"url":"https://cap.cloud.sap/docs/plugins/","title":"CAP Plugins — capire, UI5 Dev Server","checked":"2026-09-27","quote":"The UI5 Dev Server is a CDS server plugin that enables the integration of UI5 (UI5 freestyle or Fiori elements) tooling-based projects into the CDS server via the UI5 tooling express middlewares."},{"url":"https://cap.cloud.sap/docs/plugins/","title":"CAP Plugins — capire, UI5 Dev Server on dynamic resources","checked":"2026-09-27","quote":"It allows to serve dynamic UI5 resources, including TypeScript implementations for UI5 controls, which get transpiled to JavaScript by the plugin automatically."}]},"facets":[{"key":"ui5_project_layout","label":"Where the app sits","kind":"text","ecosystems":["cap"]},{"key":"ui5_resources","label":"What serves the resources","kind":"text","ecosystems":["cap"]}],"history":[{"date":"2026-09-27","field":"core_coverage.state","from":"community-only","to":"core-and-community","reason":"capire documents the CDS server serving a folder as static content, ./app by default, linking the SAP Fiori apps it finds there on the generic index page, and rendering a Fiori preview list page for an OData V4 entity without a UI project at all. The core is present for this concern; where it stops is the UI5 tooling, not the serving."},{"date":"2026-09-27","field":"core_coverage.relationship","from":null,"to":"unassessed","reason":"Who is present is now assessed and sourced; why both are is not. capire naming the community plugin in a curated plugin list is not the core ceding the area, and nothing read says the static handler is a deliberate subset, so neither community-owns-it nor narrow-by-design can be evidenced yet."},{"date":"2026-09-27","field":"description","from":"Serving a UI5 application from the CDS server during development, so the UI and the service run as one process with live reload.","to":"Serving a UI5 application from the CDS server while developing, so the UI and the services it calls answer on one port. A folder of files and a UI5 CLI project whose resources the UI5 tooling assembles per request are two different asks of that server, and which of the two a project has is what decides the answer here.","reason":"The sentence asserted live reload, which nothing read for this assessment states. The difference that actually decides the concern, a folder of files against a UI5 CLI project, was not in the description at all."},{"date":"2026-09-27","field":"facets","from":null,"to":"ui5_project_layout, ui5_resources","reason":"The two facts that separate the answers here: where a project has to sit to be served, and what serves its resources once it is found. Both are stated by each option's own documentation, and both are text until the answers are numerous enough to have a vocabulary."},{"date":"2026-10-17","field":"name","from":"UI5 dev server","to":"Integrated frontend dev server","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.cap. Maintainer-requested scope audit."},{"date":"2026-10-17","field":"description","from":"Serving a UI5 application from the CDS server while developing, so the UI and the services it calls answer on one port. A folder of files and a UI5 CLI project whose resources the UI5 tooling assembles per request are two different asks of that server, and which of the two a project has is what decides the answer here.","to":"Serving a frontend and its backend services together during development, so they can be reached through one local origin. Serving prebuilt files and integrating a frontend toolchain that assembles resources on demand are different requirements.","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.cap. Maintainer-requested scope audit."},{"date":"2026-10-19","field":"ecosystems","from":"cap","to":"cap, ui5","reason":"The UI5 dev middlewares staged in intake-20261019-bestofui5 that forward the app's backend paths (ui5-middleware-route-proxy, ui5-middleware-destination) could only be placed under ui5-build-tooling, whose own boundary leaves proxying to a backend to middlewares. The two facets stay on CAP, where they were asked. The UI5 reading comes from the UI5 CLI Server page and SAP's backend-proxy-middleware README."},{"date":"2026-10-26","field":"coverage_by_ecosystem.ui5.state, coverage_by_ecosystem.ui5.relationship, coverage_by_ecosystem.ui5.community_adds","from":"core-and-community, relationship unassessed; community_adds: ui5-middleware-cap embeds the CDS server's middlewares in the UI5 dev server, the reverse of cds-plugin-ui5. ui5-middleware-simpleproxy, ui5-middleware-route-proxy ...","to":"core-only; relationship and community_adds removed","reason":"Reassessed against the graph (check:capabilities): the only provider of the capability that counts is cds-plugin-ui5, which sits on the CAP door and does not serve the UI5 door, so no provider of another origin counts there. The core stays present on the sourced what_core_does. The middlewares the removed sentence named are not providers of this capability."}],"drafted_with_ai":true,"framing_by_ecosystem":{"cap":{"description":"Serving a UI5 application from the CDS server while developing, so the UI and the services it calls answer on one port. A folder of files and a UI5 CLI project whose resources the UI5 tooling assembles per request are two different asks of that server, and which of the two a project has is what decides the answer here.","name":"UI5 dev server"},"ui5":{"name":"Backend on the dev server","description":"On the UI5 door the dev server is already the UI5 CLI's, and what has to join it is the backend the app calls: forwarded to over the network, or run inside the dev server, so the app and its service answer on one origin. Live reload, transpiling and the rest of the dev server's middleware are [UI5 build tooling](capability:ui5-build-tooling)."}},"coverage_by_ecosystem":{"ui5":{"state":"core-only","assessed_at":"2026-10-19","what_core_does":"The UI5 CLI's server serves a UI5 project for local development and takes custom middleware. SAP's [backend-proxy-middleware](https://github.com/SAP/open-ux-tools/tree/main/packages/backend-proxy-middleware) is one: it forwards every request under a configured path, `/sap` in its examples, to a backend URL or a destination, so the app and the service it calls answer on the dev server's origin.","where_it_stops":"At forwarding to a backend that already runs somewhere: one URL or destination per path, reached over the network. Running the services inside the dev server is left to custom middleware.","sources":[{"url":"https://github.com/UI5/cli/blob/main/internal/documentation/docs/pages/Server.md","title":"UI5 CLI documentation — UI5 Server","checked":"2026-10-19","quote":"provides server capabilities for local development of UI5 projects."},{"url":"https://github.com/SAP/open-ux-tools/tree/main/packages/backend-proxy-middleware","title":"SAP/open-ux-tools — @sap-ux/backend-proxy-middleware README","checked":"2026-10-19","quote":"for proxying requests to backend servers."},{"url":"https://www.npmjs.com/package/ui5-middleware-cap","title":"ui5-middleware-cap — npm","checked":"2026-10-19","quote":"UI5 CLI middleware embedding the CDS server middlewares (CAP)"},{"url":"https://www.npmjs.com/package/ui5-middleware-approuter","title":"ui5-middleware-approuter — npm","checked":"2026-10-19","quote":"UI5 middleware using the @sap/approuter to connect against Cloud Foundry or XS Advanced destinations"}]}}},"sap_delivery":{"door":"cap","all":null,"by_flavor":{"node":null,"java":null}},"edges":{"use_cases":[{"id":"reach-every-ui5-app-of-a-cap-project-from-one-page","name":"Reach every UI app of a CAP project from one page while developing","capability":"capability:ui5-dev-server","ecosystem":"cap","flavors":["node"],"outcome":"A project with more than one UI app gives a developer one page that links all of them, instead of a URL per app to keep and to type.","boundary":"Covers finding and opening the apps. Whether each app is then served correctly is the other task on this capability, and what a deployed launchpad shows is not this outcome at all.","origin":"Editorial hypothesis, drafted for the request to assess the UI5 dev server slice of CAP on 2026-09-27. The shape comes from the layout capire prescribes: one subfolder of app/ per application.","requirement_dimensions":["How many UI apps the project has, and whether they all sit under app/","Whether the page has to look like a launchpad or only has to link the apps","Whether the plugin serving the apps is configured to load lazily"],"contributions":[{"ref":"artifact:sap-cds","role":"core runtime","state":"documented","description":"The generic index page of the CDS server carries a link to every SAP Fiori app created under `app/`, added without configuration, and it is a development page: it is not served once NODE_ENV is production.","remaining_work":"Nothing for the links themselves. A page that has to look like a launchpad, with tiles, groups or a shell around the apps, is not what the index page is.","sources":[{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — capire, links on the index page","quote":"Links to Fiori applications created in the `app/` folder are automatically added to the index page of your CAP application for local development.","checked":"2026-09-27"},{"url":"https://cap.cloud.sap/docs/node.js/cds-server","title":"cds.server — capire, Toggle Generic Index Page","quote":"The default generic _index.html_ page is not served if `NODE_ENV` is set to `production`.","checked":"2026-09-27"}]},{"ref":"artifact:ui5-community-cds-plugin-ui5","role":"dev-server integration","state":"conditional","version_scope":"README of packages/cds-plugin-ui5 in ui5-community/ui5-ecosystem-showcase, main branch, read 2026-09-27.","description":"Each UI5 module it serves is mounted under its own path, and the app pages it knows about are injected into the welcome page. The README states only the case in which that does not happen, the lazy loading option; that the pages are injected otherwise is the reading of that sentence rather than a second statement.","remaining_work":"Leave lazy loading off where the welcome page has to list the apps, or accept that the apps are reached by their mount paths instead.","conditions":["Lazy loading is off: the README states that with the lazy loading option the app pages cannot be retrieved and injected"],"sources":[{"url":"https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/cds-plugin-ui5/README.md","title":"cds-plugin-ui5 — README, lazy loading and app pages","quote":"The app pages cannot be retrieved and injected when using the lazy loading option.","checked":"2026-09-27"},{"url":"https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/cds-plugin-ui5/README.md","title":"cds-plugin-ui5 — README, mount path","quote":"It is by default derived from the `metadata/name` of the `ui5.yaml`:","checked":"2026-09-27"}]},{"ref":"artifact:geert-janklaps-cds-launchpad-plugin","role":"sandbox launchpad","state":"unknown","description":"A cds-plugin that serves a launchpad from the CDS server for demo, development and testing. How it finds the applications it lists is not stated in the README read here, so whether it answers this outcome for a project's own apps without further configuration is not established.","remaining_work":"Read the plugin's configuration options, `appConfigPath` among them, before treating a project's apps as listed by it. Its edge in the graph points at capability:testing rather than at this capability, and that placement has not been examined either.","sources":[{"url":"https://github.com/geert-janklaps/cds-launchpad-plugin","title":"cds-launchpad-plugin — README","quote":"Launchpad Plugin for demo / development / testing SAP Cloud Application Programming Model-based projects","checked":"2026-09-27"}]}],"unknowns":["Whether the index page lists an app that sits outside app/, in the folder cds.env.folders.app names or in a dependency, is not stated by the pages read here: the tip about the links names the app/ folder only.","cds-launchpad-plugin's own discovery of applications is undocumented in its README, so its role here stays unknown rather than absent."],"assessed_at":"2026-09-27","drafted_with_ai":true,"readings":[],"omitted_contributions":0,"assessment_kind":"documented-contributions"},{"id":"serve-a-ui5-cli-project-from-the-cap-server","name":"Serve a UI5 CLI project from the CAP server while developing","ecosystem":"cap","outcome":"A UI5 app that is a UI5 CLI project, its framework resources resolved and its middlewares configured by ui5.yaml, is reachable on the CDS server's own port while the services are running, with no second server and no proxy in front.","boundary":"Covers the app being served by the CDS server while developing. What serves it after a deployment, and how it is built for one, is not this outcome. Neither is what the browser then does with the resources.","capability":"capability:ui5-dev-server","origin":"curated","assessed_at":"2026-10-18","drafted_with_ai":true,"contributions":[{"ref":"artifact:ui5-community-cds-plugin-ui5","role":"dev-server integration","state":"conditional","version_scope":"README of packages/cds-plugin-ui5 in ui5-community/ui5-ecosystem-showcase, main branch, read 2026-09-27.","description":"Runs the UI5 CLI express middlewares inside the CDS server, so the project's resources are served from the same port as the services. It takes the project from the `app` folder, from the folder `cds.env.folders.app` names, or from a dependency of the CDS server, and mounts it under a path derived from the `metadata/name` of its `ui5.yaml`.","remaining_work":"Decide the mount path where the derived one is not wanted, in the `ui5.yaml`, in the CDS server's `package.json` or through `CDS_PLUGIN_UI5_MODULES`. The middlewares the project runs are the ones its own `ui5.yaml` configures, so that file stays the project's to maintain.","remaining_kinds":["configuration"],"conditions":["@sap/cds is at 6.8.2 or higher","The app is a UI5 CLI based project, so a ui5.yaml exists to configure the middlewares and name the module"],"sources":[{"url":"https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/cds-plugin-ui5/README.md","title":"cds-plugin-ui5 — README","quote":"The `cds-plugin-ui5` is a CDS server `cds-plugin` for the node runtime of the SAP Cloud Application Programming Model (CAP) which enables the integration of UI5 CLI based (UI5 freestyle or Fiori elements) projects into the CDS server via the UI5 CLI express middlewares.","checked":"2026-09-27"},{"url":"https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/cds-plugin-ui5/README.md","title":"cds-plugin-ui5 — README, where the projects sit","quote":"The UI5 or Fiori elements projects just need to be located in the `app` folder of the CDS server, or via the `cds.env.folders.app` variable, or be a dependency of the CDS server.","checked":"2026-09-27"},{"url":"https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/cds-plugin-ui5/README.md","title":"cds-plugin-ui5 — README, the @sap/cds floor","quote":"The plugin requires [`@sap/cds`](https://www.npmjs.com/package/@sap/cds) `>=6.8.2`.","checked":"2026-09-27"},{"url":"https://raw.githubusercontent.com/ui5-community/ui5-ecosystem-showcase/main/packages/cds-plugin-ui5/README.md","title":"cds-plugin-ui5 — README, mount path","quote":"It is by default derived from the `metadata/name` of the `ui5.yaml`:","checked":"2026-09-27"},{"url":"https://cap.cloud.sap/docs/plugins/","title":"CAP Plugins — capire, UI5 Dev Server","quote":"It allows to serve dynamic UI5 resources, including TypeScript implementations for UI5 controls, which get transpiled to JavaScript by the plugin automatically.","checked":"2026-09-27"}]},{"ref":"artifact:sap-cds","role":"core runtime","state":"unknown","description":"The CDS server serves one folder of the project as static content, `./app` by default, and links the SAP Fiori apps it finds there on its generic index page. Whether a UI5 CLI project, whose resources the UI5 tooling assembles rather than leaving in the folder, is served by that handler is not established by the pages read here: they describe the folder and the index page and say nothing about running the UI5 tooling.","remaining_work":"An app served this way has to be a set of files the server can hand over as they are, which for a UI5 CLI project means building it or resolving its framework resources some other way. Neither page read here says how.","sources":[{"url":"https://cap.cloud.sap/docs/node.js/cds-server","title":"cds.server — capire, the built-in server.js","quote":"if ( o . static ) app . use ( express . static ( o . static )) //> defaults to ./app","checked":"2026-09-27"},{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — capire, the app folder","quote":"SAP Fiori apps should be added as subfolders of the `app/` directory in a CAP project.","checked":"2026-09-27"}]},{"ref":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","role":"worked example","state":"conditional","version_scope":"Repository lemaiwo/ui5-cap-serverside-rendering-demo, main branch, read 2026-10-18: @sap/cds ^8 with cds-plugin-ui5 ^0.11.1.","description":"A CAP project with the UI5 CLI app as an npm workspace under `app/*` and cds-plugin-ui5 as a devDependency. Its app README gives the address as `http://localhost:4004/be.wl.serversiderendering/index.html` after starting the CAP project, and `be.wl.serversiderendering` is the `metadata/name` in that project's `ui5.yaml`, so the mount path the plugin derives is visible in a running setup.","remaining_work":"Nothing in the repository sets the mount path or the middleware list beyond what the app's own `ui5.yaml` configures, and the pair of versions above is the one it pins.","conditions":["The CAP project is started first and the app is opened on its port, as the app README instructs"],"sources":[{"url":"https://raw.githubusercontent.com/lemaiwo/ui5-cap-serverside-rendering-demo/main/package.json","title":"ui5-cap-serverside-rendering-demo — package.json, devDependencies and workspaces","quote":"\"cds-plugin-ui5\": \"^0.11.1\"","checked":"2026-10-18"},{"url":"https://raw.githubusercontent.com/lemaiwo/ui5-cap-serverside-rendering-demo/main/app/serverside-rendering/README.md","title":"ui5-cap-serverside-rendering-demo — app README, starting the app","quote":"This app has been generated using the SAP Fiori tools - App Generator, as part of the SAP Fiori tools suite.  In order to launch the generated app, simply start your CAP project and navigate to the following location in your browser:","checked":"2026-10-18"},{"url":"https://raw.githubusercontent.com/lemaiwo/ui5-cap-serverside-rendering-demo/main/app/serverside-rendering/ui5.yaml","title":"ui5-cap-serverside-rendering-demo — app ui5.yaml, metadata name","quote":"name: be.wl.serversiderendering","checked":"2026-10-18"}]}],"readings":[],"omitted_contributions":0,"assessment_kind":"documented-contributions"}],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:ui5-community-cds-plugin-ui5","name":"cds-plugin-ui5","json":"/artifacts/ui5-community-cds-plugin-ui5.json","ecosystem":"cap","origin_ring":"community-org"}],"samples":[{"ref":"artifact:ui5-community-showcase-cds-bookshop","name":"cds-bookshop","json":"/artifacts/ui5-community-showcase-cds-bookshop.json"}],"explained_by":[],"normative_context":[]}}