{"ref":"artifact:abap2ui5-embed-control","page":"/artifacts/abap2ui5-embed-control","json":"/artifacts/abap2ui5-embed-control.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap2ui5-embed-control","name":"@abap2ui5/embed-control","artifact_type":"package","ecosystem":"ui5","serves_ecosystems":["abap"],"flavors":[{"key":"freestyle","source":{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"`freestyle/` - a UI5 freestyle app with three controls"}},{"key":"fiori-elements","source":{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"`fiori-elements/` - a Fiori elements app with the control in a **custom section of its object page**: the abap2UI5 app gets the key of the object on the page as a parameter"}}],"domain":"ui-and-frontend-bridge","origin_ring":"community-org","use_as":"dependency","description":{"one_line":"A UI5 custom control that runs an [abap2UI5](artifact:abap2ui5-abap2ui5) app inside a host UI5 app, with the abap2UI5 frontend loaded from the backend the app talks to.","short":"UI5 custom control that runs an abap2UI5 app inside a host app","what_it_solves":"`z2ui5.embed.Container` puts an [abap2UI5](artifact:abap2ui5-abap2ui5) app, an ABAP class implementing `z2ui5_if_app`, into a host UI5 app as an ordinary control, written in an XML view or created in code, with the ABAP class, the service path and the parameters as its properties. The package carries the control alone: the abap2UI5 frontend it wraps comes from the installation the app talks to, so the host app never ships a copy of it and the frontend always matches that backend. Setting it up is an npm install, an `includeDependency` entry in `ui5.yaml` and a `resourceRoots` entry in `manifest.json`; nothing is deployed to the ABAP system, because the control is a plain module with no component and no library. Every control is its own abap2UI5 session, and a change of `app`, `endpoint` or `params`, or a call to `restart()`, ends the running session and starts a new one.","when_not_to_use":"The page and the [abap2UI5](artifact:abap2ui5-abap2ui5) service have to share an origin: an `endpoint` that resolves to another origin is refused, and abap2UI5 rejects a POST whose `Origin` names another host. A host that routes by the URL hash, such as a Fiori elements app or an app with a UI5 router, needs abap2UI5 1.146.0 or later, because 1.145.0 clears the host's hash after every roundtrip. One frontend per page: the first control that starts decides which endpoint the frontend comes from.","to_build_on_it":"The control is kept thin, and a change it needs from the frontend goes to [abap2UI5](artifact:abap2ui5-abap2ui5) as a pull request rather than into the control. What is still open is tracked there as the embed-as-reuse-component backlog item, an embedded mode of the frontend that leaves page-wide things to the host app. The control's own tests run its module in Node with stubs for UI5, and the browser examples that exercise it live in the separate repository abap2UI5/samples-embed-control."},"links":{"repo":"https://github.com/abap2UI5/embed-control","npm":"https://www.npmjs.com/package/@abap2ui5/embed-control"},"type_properties":{"placement":{"value":"in-host","sources":[{"url":"https://github.com/abap2UI5/embed-control","title":"@abap2ui5/embed-control — README","checked":"2026-10-18","quote":"Run [abap2UI5](https://github.com/abap2UI5/abap2UI5) apps inside any UI5 app."}]},"distribution":{"value":["npm","abapgit"],"sources":[{"url":"https://github.com/abap2UI5/embed-control","title":"@abap2ui5/embed-control — README","checked":"2026-10-18","quote":"npm install @abap2ui5/embed-control"},{"url":"https://github.com/abap2UI5/embed-control","title":"@abap2ui5/embed-control — README","checked":"2026-10-18","quote":"`Z2UI5_HOST` to try it on a system with a plain abapGit pull"}]}},"maintainers":["actor:abap2ui5","actor:oblomov-dev"],"provides":[{"capability":"capability:ui5-custom-controls","what_it_does":"Publishes one UI5 custom control, `z2ui5.embed.Container`, on npm as a UI5 CLI project of type module: the host app adds it as a dependency and registers the namespace `z2ui5.embed` under `thirdparty/`, and places the control in an XML view or creates it in code.","sources":[{"url":"https://github.com/abap2ui5/embed-control","title":"abap2UI5/embed-control — repository","checked":"2026-10-17","quote":"UI5 custom control that runs any abap2UI5 app inside your own UI5 app, Fiori elements page or Work Zone card."},{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"The package is the control and nothing else."},{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"| `src/Container.js` | The control, `z2ui5.embed.Container` |"}]}],"requires":[{"ref":"artifact:abap2ui5-abap2ui5","for":"The abap2UI5 installation the embedded app runs on: its HTTP service serves the frontend the control loads and answers the roundtrips. 1.145.0 is the floor the package records.","requirement":"required","basis":"binding","role":"framework","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"The control needs **abap2UI5 1.145.0 or later**, whose service answers `?z2ui5-bundle`"}]},{"ref":"artifact:sap-ui5-cli","for":"The host app's tooling reads the package's `ui5.yaml`, serves the control and copies it into the build.","requirement":"required","basis":"binding","role":"build-tooling","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"Your app's tooling: UI5 CLI 3 or 4 - the package's `ui5.yaml` is specVersion 3.0, and every release is built with both."}]}],"connects":[{"ref":"artifact:abap2ui5-abap2ui5","kind":"data","direction":"outbound","style":"sync","for":"Loads the abap2UI5 frontend once per page from the endpoint and sends each control's roundtrips to it, one session per control.","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/embed-control/main/packages/embed-control/README.md","title":"@abap2ui5/embed-control — README","checked":"2026-10-17","quote":"The frontend is loaded from it, the roundtrips go to it."}]}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"contributors":["actor:oblomov-dev"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"released this month"},{"label":"Continuity","tier":"good","evidence":"3 contributors, 1 publisher, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Maintainer's CI","tier":"good","evidence":"ci green, 2026-10-14"}],"practice":[{"label":"Tests","tier":"good","evidence":"1 test file"},{"label":"Docs","tier":"good","evidence":"README 15 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":207,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","latest_version":"0.3.0","majors":{"0.1":{"version":"0.1.0","date":"2026-09-29"},"0.3":{"version":"0.3.0","date":"2026-10-14"}},"license":"MIT","first_release":"2026-09-29","last_release":"2026-10-14","releases":3,"cadence_days":14,"maintainers":1,"repository":"git+https://github.com/abap2UI5/embed-control.git","repository_directory":"packages/embed-control","peer_cds":null,"dependencies":0,"node_engine":null,"test_script":false,"types":false,"downloads_weekly":207,"downloads_monthly":1304,"stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-10-14","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2026-09-24T11:59:26Z","open_prs":0,"tree_truncated":false,"test_files":1,"workflows":2,"other_ci":false,"readme_bytes":15183,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-09-28","last_commit":"2026-10-14","commits":26,"contributors":3,"ci_status":"success","ci_run_at":"2026-10-14","ci_workflow":"ci","ci_event":"push","readme_path":"packages/embed-control/README.md","readme_sha":"b65529680ca8a8c9080cd9a27ef019b5e9f9a396","months_since_release":0,"dormant":false,"repo_read":"2026-10-24"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"npm","path":"CHANGELOG.md","version":"0.3.0","url":"https://github.com/abap2UI5/embed-control/blob/main/packages/embed-control/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.3.0","date":"2026-10-14","date_source":"registry","heading":"0.3.0","url":"https://github.com/abap2UI5/embed-control/blob/main/packages/embed-control/CHANGELOG.md#030","sections":[{"kind":"other","heading":null,"items":3}],"hash":"1e2ee83dff317382"},{"version":"0.2.0","heading":"0.2.0","url":"https://github.com/abap2UI5/embed-control/blob/main/packages/embed-control/CHANGELOG.md#020","sections":[{"kind":"other","heading":null,"items":22}],"hash":"c4a8878408955eb0"},{"version":"0.1.1","date":"2026-09-30","date_source":"registry","heading":"0.1.1","url":"https://github.com/abap2UI5/embed-control/blob/main/packages/embed-control/CHANGELOG.md#011","sections":[{"kind":"other","heading":null,"items":11}],"hash":"a9e4d715249706a3"},{"version":"0.1.0","date":"2026-09-29","date_source":"registry","heading":"0.1.0","url":"https://github.com/abap2UI5/embed-control/blob/main/packages/embed-control/CHANGELOG.md#010","sections":[{"kind":"other","heading":null,"items":4}],"hash":"a4106714261d8977"}],"versions":[{"version":"0.3.0","date":"2026-10-14"},{"version":"0.1.1","date":"2026-09-30"},{"version":"0.1.0","date":"2026-09-29"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:abap2ui5","name":"abap2UI5","json":"/actors/abap2ui5.json"},{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"contributors":[{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_on_to":{"ref":"artifact:abap2ui5-abap2ui5","name":"abap2UI5","json":"/artifacts/abap2ui5-abap2ui5.json"},"add_ons":[],"answered_through_parts":[]}}