Loading...
Loading...
UiPath Coded Apps — scaffold, build, run, and deploy Coded Web Apps and Coded Action Apps: React/TypeScript apps that call UiPath Cloud APIs via the `@uipath/uipath-typescript` SDK and ship to Automation Cloud (push/pull to Studio Web, pack, publish, deploy, OAuth-PKCE). Also generates live analytics & governance dashboards from a plain-language request, wired to tenant data via the Insights real-time API, with edit and deploy flows. For RPA→uipath-rpa, Python agents→uipath-agents, Maestro flows→uipath-maestro-flow, solution packaging→uipath-solution.
npx skill4agent add uipath/skills uipath-coded-appsuip codedapp@uipath/uipath-typescriptuip codedapp.uipath/app.config.jsonaction-schema.json@uipath/uipath-typescript| Type | Description | Key Difference |
|---|---|---|
| Coded Web App | React/Vue/other frontend hosted on UiPath CDN | User-facing app accessed via a URL |
| Coded Action App | React form wired to UiPath Action Center | Rendered inside human task reviews in Maestro/Agent workflows |
Two lifecycles, two scaffolding entry points.
- Standalone coded app: scaffold with
(see create-web-app.md / create-action-app.md). Nonpx create-vite@latest/project.uiproj— those are solution-membership artefacts and standalone apps don't need them. Deploy viawebAppManifest.json→uip codedapp pack(uip codedapp publishfor action apps) →-t Action. This is the classic single-app lifecycle covered by the rest of this skill.uip codedapp deploy- In-solution coded app: run
from inside auip codedapp initsolution. Init writes.uipx(project.uiproj) +ProjectType: "AppV2", nests runtime + build artefacts underwebAppManifest.json, auto-registers the project assource/dist/in theType: "AppV2", and emits.uipx. From then on the app is part of the solution —resources/solution_folder/app/{Coded,CodedAction}/bundles itsuip solution packand.nupkgprovisions it in the deployment folder. Do not runuip solution deploy run/uip codedapp pack/publishon a coded app that's already registered indeploy— that bypasses the solution's deploy config (external client ID, routing name, action schema) and double-registers the package..uipx/uip solution projects addregister existing AppV2 folders too, readinguip solution projects importto pick thewebAppManifest.config.isActionApp/CodedsubType. For the solution-side lifecycle see /uipath:uipath-solution.CodedActionis for solutions only. It is not the scaffolding entry point for a standalone coded app — useuip codedapp initfor that.create-vite
uip login status --output jsonuip loginnpm run buildpackpushdist/dist/-t Actionuip codedapp publish -t ActionWebuip loginuip codedapphttps://api.uipath.comhttps://cloud.uipath.comvite.config.tsbase: './'import logo from './assets/logo.png'public//getAppBase()@uipath/uipath-typescriptsrcfetch/base: './'uip codedapp deploy--folder-key <GUID>UIPATH_FOLDER_KEY=<GUID>uip or folders list --all --name "<name>" --output jsonNameKey--name--all--alluip or folders list --output jsonType == "Personal"uip or folders create "<NAME>" --output jsonData.Keyuip or ...uip tools install @uipath/orchestrator-tooluip tools listuip df entities get <ENTITY_ID> --output jsonentities.getById(<id>)getAllgetAllRecordsqueryRecordsByIdgetFileMetaDatagetAll()pageSizeNonPaginatedResponsewhile (page.hasNextPage) { page = await getAll({ cursor: page.nextCursor }) }itemsresult.items.lengthscopeuipath.jsonJobs.stopTasks.completeProcessInstances.cancel401403node_modules/@uipath/uipath-typescript/docs/oauth-scopes.mdsdk.initialize()new UiPath()src/uipath.tsreferences/dashboards/plugins/build/impl.mdnode_modules/@uipath/uipath-typescript/dist/<subpath>/index.d.ts.d.tsnode_modulesreferences/sdk/*.md.d.tsdist/*.mjs*.jsweb appaction appcodedappapp.config.jsonaction-schema.jsonscaffold appdeploy apppackpublishpushpulldebug appdashboardanalyticsKPImetricsInsightsobservabilityadmin consolereportcharttrendgovernance reportagent metrics| Option | Description |
|---|---|
| Build or modify a Web App / Action App | Scaffold a UI, form, or app that deploys to Automation Cloud |
| Generate a dashboard | Analytics or admin view from a natural-language description |
| I want to... | Read this |
|---|---|
| Create a new Coded Web App | references/create-web-app.md |
| Create a new Coded Action App | references/create-action-app.md |
| Debug auth or config issues | references/debug.md |
| Push/pull code to Studio Web | references/file-sync.md |
| Package and deploy | references/pack-publish-deploy.md |
| Full CLI command reference | references/commands-reference.md |
| Embed the DU Validation Station widget | references/widgets/validation-station.md |
| Embed the Conversational Agent chat widget | references/widgets/conversational-agent-chat.md |
| Embed the Data Fabric DataTable widget | references/widgets/datatable.md |
| Embed the multi-file bucket upload widget | references/widgets/multi-file-upload.md |
| Embed the PDF viewer widget | references/widgets/pdf-viewer.md |
| Add external IdP sign-in buttons (Google/SAML) | references/widgets/external-auth.md |
| OAuth scopes for SDK services | references/oauth-scopes.md |
| SDK: Import paths & subpath exports | references/sdk/imports.md |
| SDK: Assets, Queues, Buckets, Processes, Jobs, Attachments | references/sdk/orchestrator.md |
| SDK: Data Fabric (Entities, ChoiceSets) | references/sdk/data-fabric.md |
| SDK: Maestro (Processes, Cases) | references/sdk/maestro.md |
| SDK: Action Center (Tasks) | references/sdk/action-center.md |
| SDK: Conversational Agent | references/sdk/conversational-agent.md |
| SDK: Agent Feedback | references/sdk/feedback.md |
| SDK: Pagination | references/sdk/pagination.md |
| SDK: Agents & Agent Memory (Insights RTM) | references/sdk/agents.md |
| SDK: Agent Traces (Insights RTM) | references/sdk/traces.md |
| SDK: Governance — policy evaluations (Insights API) | references/sdk/governance.md |
| SDK: Agent Governance Decisions — runtime compliance (Insights RTM) | references/sdk/governance-traces.md |
| UI Patterns (polling, BPMN, HITL, text overflow, table pagination) | references/patterns.md |
| Generate an admin dashboard from NLP | references/dashboards/CAPABILITY.md |
# Install the UiPath CLI (run once)
npm install -g @uipath/cli
# Install the coded apps tool
uip tools install @uipath/codedapp-tool
# Install the Orchestrator tool (needed to resolve folder name → key for deploy)
uip tools install @uipath/orchestrator-tool
# Verify both are installed
uip tools list
# Resolve uip if not on PATH
UIP=$(command -v uip 2>/dev/null || npm root -g 2>/dev/null | sed 's|/node_modules$||')/bin/uip
$UIP --versionuip login status --output json # check if logged in
uip login # interactive OAuth (opens browser)
uip login --authority https://alpha.uipath.com # non-production environments
# Client-credentials (headless/CI) — scope MUST name one Orchestrator scope AND
# the two Apps-service scopes. Neither set covers the other:
# OR.Default → Orchestrator
# Apps.Read Apps.Write → Apps-service registration in `uip codedapp publish`
# Do NOT substitute granular Orchestrator scopes (OR.Folders/OR.Execution/
# OR.Administration) for OR.Default.
uip login \
--client-id <id> \
--client-secret <secret> \
--organization <org> \
--tenant <tenant> \
--scope "OR.Default Apps.Read Apps.Write" \
--authority https://alpha.uipath.com # omit --authority for productionThesession scope is separate from the app's runtime OAuth scopes. The scopes inuip loginare what the deployed app requests at runtime (see oauth-scopes.md). Theuipath.jsonon--scopeabove is what the CLI session needs to call the Apps registration API duringuip login.uip codedapp publishdoes two things: uploads the package (needsuip codedapp publish) and registers the coded app (needsOR.Default). For what each failure looks like, see debug.md.Apps.Read Apps.Write
new UiPath()clientIdscopeorgNametenantNamebaseUrlredirectUri<meta name="uipath:*">@uipath/coded-apps-devuipath.jsonclientIdscopeorgNametenantNamebaseUrlredirectUriuipath.json| Variable | Used By | Description |
|---|---|---|
| | Studio Web project ID |
| Environment | Correct Base URL |
|---|---|
| Production (cloud) | |
| Staging | |
| Alpha | |
uip login status --output jsonuip login--scope "OR.Default Apps.Read Apps.Write"OR.DefaultApps.ReadApps.Writeuip codedapp publishApps.ReadApps.WriteOR.Default--scopenpm run buildls dist/uip codedapp pack dist -n <name> --version <version>.uipath/<name>.<version>.nupkguip codedapp publish-t Actioncat .uipath/app.config.jsonuip codedapp deploy -n <name> --folder-key <GUID>Type == "Personal"uip or folders createuip or folders list --output json--tagsls node_modules/@uipath/uipath-typescript/dist/.uipath/app.config.jsonpublishdeployappNamesystemNameappTypedeploymentIdappUrl.uipath/action-schema.jsoninputsoutputsinOutsoutcomes| Error | Cause | Fix |
|---|---|---|
| No valid session | Run |
| App not built | Run |
| Same name+version already published (registration rejects duplicates) | Bump |
| Missing folder for CLI deploy | Resolve folder name → key via |
| No | Run |
| Login fails / redirect error | OAuth misconfiguration | See debug.md |
| API calls fail with 401/CORS | Wrong base URL | Use |
Folder identifier names differ across CLI and SDK. The CLI uses/UIPATH_FOLDER_KEY(string) and applies only to--folder-key. SDK methods use different parameters: Maestro services (uip codedapp deploy,MaestroProcesses,ProcessInstances) takeCases(string GUID), Orchestrator services (folderKey,Assets,Queues,Buckets) takeProcesses(number). Do not pass the CLI env var into SDK calls. To bridge from a MaestrofolderIdto an OrchestratorfolderKey, see sdk/maestro.md — and neverfolderId, the GUID is not numeric.parseInt(folderKey)
dist/npm run build.uipath/<name>.<version>.nupkgpack.uipath/app.config.jsondeploymentIdpublishappUrlapp.config.jsondeploycd <app-name> && npm run devuip codedapp packuip codedapp deploypublish@uipath/uipath-typescript/assetssdk.entities.getAll()new Entities(sdk).uipath/publishdeploydeployapp.config.jsonpublish