> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Angular SDK

> Migrate the FlowX Angular renderer SDK from 5.9.x to 6.0.0.

## Angular SDK migration guide

6.0 moves the Angular renderer to Angular 22 and aligns the SDK's names with the iOS and Android SDKs. Update your app to the new input and function names. The framework upgrade, the custom component input, and the removed `logSink` and `logCategories` inputs need code changes.

### Framework upgrade: Angular 21 → 22

Upgrade your host app **before** you bump the FlowX SDK. Follow the official [Angular update guide](https://angular.dev/update-guide) from `21.0` to `22.0`.

| Requirement | 5.9 | 6.0 |
| - | - | - |
| Angular CLI and `@angular/*` | \~21 | **\~22** |
| Node | ≥ 24.0.0 | **≥ 26.0.0** |
| npm | ≥ 11.0.0 | ≥ 11.0.0 |
| TypeScript | ≥ 5.9, \< 6.1 | **≥ 6.0, \< 6.1** |

The FlowX Angular packages declare `@angular/*` ≥ 22.0.0 as peer dependencies, so `npm install` fails on an Angular 21 app.

### FlowX SDK changes

#### Renamed inputs and functions

Replace each 5.9 name with its 6.0 name. The 5.9 names still work in 6.0, but they are deprecated.

| 5.9 | 6.0 |
| - | - |
| `apiUrl` input | `baseUrl` |
| `processApiPath` input | `enginePath` (the leading slash is optional) |
| `staticAssetsPath` input | `assetsBaseUrl` |
| `authToken` input | `accessToken` |
| `withConfig({ customLoader })` | `customLoaderProvider` (same shape) |
| `getEnumeration(name, parentName?)` | `getEnumerationItems(name, parentName?)` |
| `getStaticAsset(key)` | `getMediaItemUrl(key)` |
| `getMediaItemURL(mediaItemId)` (async) | `getMediaItemUrl(key)` (sync, once the process has loaded its media) |
| `getSubstitutionTag(code)` | `getSubstitutionTagContent(key)` |

`baseUrl` and `assetsBaseUrl` apply to the process, UI Flow, chat and task management renderers. `enginePath` applies to the process, UI Flow and chat renderers.

```diff theme={"dark"}
 <flx-process-renderer
-  [apiUrl]="baseUrl"
-  [processApiPath]="'onboarding'"
-  [staticAssetsPath]="mediaLibraryUrl"
-  [authToken]="token"
+  [baseUrl]="baseUrl"
+  [enginePath]="'onboarding'"
+  [assetsBaseUrl]="mediaLibraryUrl"
+  [accessToken]="token"
   ...
 />
```

#### Custom components: `data$` → `input` signal

Custom components receive their data through an `input` signal input instead of the `data$` Observable. The process data moves under `input().data`, and actions run through `runAction` and the new `runUploadAction`. Both return an Observable.

| 5.9 | 6.0 |
| - | - |
| `data$` input (Observable) | `input` signal input |
| Data fields read from the top level (`data.<field>`) | `input().data.<field>` |
| `data.actionsFn.<name>(params)` | `input().runAction(name, params?)` |
| None | `input().runUploadAction(name, file, params?)` |

```typescript theme={"dark"}
import { Component, computed, input } from '@angular/core';
import { FlxCustomComponentData } from '@flowx/angular-sdk';

@Component({
  selector: 'my-custom-component',
  templateUrl: './custom-component.component.html',
})
export class CustomComponentComponent {
  input = input<FlxCustomComponentData>()
  client = computed(() => this.input()?.data.client)

  submit(file: Blob) {
    this.input()?.runAction('action_one', { amount: 3 }).subscribe();
    this.input()?.runUploadAction('upload_document', file, { side: 'front' }).subscribe();
  }
}
```

#### `logSink` and `logCategories` inputs removed

The `[logSink]` and `[logCategories]` inputs on `<flx-process-renderer>` and the UI Flow renderer are removed. Subscribe a log sink once at app start with `logSink()` from `@flowx/core-sdk` instead. It takes the same sinks and categories and returns a function that stops logging.

```diff theme={"dark"}
- [logSink]="formattedLogger"
- [logCategories]="['rest', 'sse']"
```

```typescript theme={"dark"}
import { formattedLogger, logSink } from '@flowx/core-sdk';

const stopLogging = logSink(formattedLogger, { categories: ['rest', 'sse'] });
```

`@flowx/angular-sdk` no longer re-exports `formattedLogger`, `createFormattedLogger` or the log types (`FlxLogCategory`, `FlxLogEvent`, `FlxLogSink`, `FlxLogSinkOptions`, `FormattedLoggerOptions`). Import them from `@flowx/core-sdk`.

#### Inputs removed or deprecated without replacement

| Input | Status in 6.0 |
| - | - |
| `legacyHttpVersion` | Deprecated, no replacement. Still honored. |
| `debugLogs` | Removed. It never had any effect. Use `logSink()` from `@flowx/core-sdk`. |

#### Behavior changes

* `baseUrl` is required on the process, UI Flow, chat and task management renderers, and `assetsBaseUrl` on the process, UI Flow and chat renderers. Without them, the renderer throws ``[FlowX] `baseUrl` is required.`` (or `` `assetsBaseUrl` ``) at start. The template compiler doesn't report a missing value.
* Links and URLs now carry only `?processInstanceUuid=`, including task management links. Links with `?processUuid=` still resume. An app on a 5.9 SDK reads only `?processUuid=`, so it can't resume from links a 6.0 app writes: upgrade every app that opens these links together.

## Related resources

> [card] [Angular SDK reference](https://docs.flowx.ai/6.x/sdks/angular-renderer.md)
>
> Angular renderer SDK documentation

> [card] [Migration overview](https://docs.flowx.ai/release-notes/v6.x/v6.0.0-october-2026/migrating-from-v5.9-to-v6.0/migration-overview.md)
>
> Full 5.9.x → 6.0.0 container app upgrade guide


## Related topics

- [Angular SDK](https://docs.flowx.ai/6.x/sdks/angular-renderer.md)
- [Renderer SDKs](https://docs.flowx.ai/release-notes/v4.x/v4.6.x/v4.6.0-january-2025/migrating-from-v4.1.x-to-v4.6.0/renderers.md)
- [SDKs overview](https://docs.flowx.ai/6.x/sdks/sdks-overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.