React project requirements
Your app MUST use SCSS for styling.To install the npm libraries provided by FlowX.AI you will need to obtain access to the private FlowX.AI Nexus registry. Please consult with your project DevOps.
The library requires React 19, npm β₯ 11.0.0 and node β₯ 24.0.0.
Installing the library
Use the following command to install the renderer library and its required dependencies:Installing
react and react-dom can be skipped if you already have them installed in your project.Initial setup
Once installed,FlxProcessRenderer will be imported from the @flowx/react-sdk package.
Theming
Component theming is done through the@flowx/react-theme library. The theme id is a required input for the renderer SDK component and is used to fetch the theme configuration. The id can be obtained from the admin panel in the themes section.

Authorization
Itβs the responsibility of the client app to implement the authorization flow (using the OpenID Connect standard). The renderer SDK will expect the authToken to be passed to the
FlxProcessRenderer as an input.FlxProcessRenderer component is required in the app module where the process will be rendered. The component accepts a props where you can pass extra config info, register a custom component or custom validators.
Custom components will be referenced by name when creating the template config for a user task.
Custom validators will be referenced by name (customValidator) in the template config panel in the validators section of each generated form field.
<FlxProcessRenderer /> component. A list of accepted inputs is found below:
projectInfo shape
Interceptor types
Analytics
The SDK provides a mechanism for collecting analytics events through a unified
CustomEvent system. These events can be used to track screens and action events.Emitting analytics events
Analytics events are dispatched using thepushAnalyticsData(payload: AnalyticsData) method. The SDK defines two event types:
The value property represents the identifier set in the process definition.For ACTION type events there are some additional properties provided:
- component - The type of component triggering the action
- label - The label of the component
- screen - The identifier of the screen containing the component, if set
Listening for analytics events
You can subscribe to analytics events using the standard CustomEvent API: Ensure that you remove the event listener on component destruction to avoid memory leaks.
Custom payload
This allows you to capture and send custom data alongside standard analytics events. When analytics custom payload is configured in FlowX Designer, the renderer automatically processes variable substitution and includes the resulting data in analytics events.1
Receive custom payload configuration
The renderer receives the analytics configuration as a JSON string with variable placeholders:
2
Process variable substitution
The SDK replaces variables with actual values from the process data store:
3
Add to analytics event
The processed payload is included in the analytics event under the
customPayload property:Starting a process
Prerequisites
- Process Name: You need to know the name of the process you want to start. This name is used to identify the process in the system.
- FlowX Project UUID: You need the UUID of the FlowX Project that contains the process you want to start. This UUID is used to identify the project in the system.
- Locale: You can specify the locale of the process to apply date, currency, and number formatting to data model values.
- Language: You can specify the language used to localize the enumerations inside the app.
Getting the project UUID
The project UUID can be obtained from the FlowX Dashboard. Navigate to the Projects section and select the project you want to start a process in. The UUID can be copied from the project actions popover.
Getting the process identifier
Open the FlowX Designer, navigate to the process, and copy the process name from the breadcrumbs. Use this value asprocessName.
Initializing the process renderer
To start a process, you need to initialize theFlxProcessRenderer component in your app. The component accepts various props that define the process to start, the theme to use, and other configuration options.
Custom components
Custom components receive aninput prop of type FlxCustomComponentData and are registered through the components parameter of <FlxProcessRenderer />.
Process data mapped through
inputKeys is available on input.data. The value is whatever lives at the configured path in the process model - it can be an object or a primitive.Process actions are available on
input.actionsFn, keyed by action name.
The properties that can be configured are as follows:
- Identifier - This enables the custom component to be displayed within the component hierarchy and determines the actions available for the component.
- Input keys - These are used to specify the pathway to the process data that components will utilize to receive their information.
- Event Handlers - actions defined here will be made available to the custom component

Prerequisites (before creation)
- React Knowledge: You should have a good understanding of React, as custom components are created and imported using React.
- Development Environment: Set up a development environment for React development, including Node.js and npm (Node Package Manager).
- Component Identifier: You need a unique identifier for your custom component. This identifier is used for referencing the component within the app.
Creating a custom component
To create a Custom Component in React, follow these steps:- Create a new React component.
- Implement the necessary HTML structure, TypeScript logic, and SCSS styling to define the appearance and behavior of your custom component.
Importing the component
After creating the Custom Component, you need to import it into your app. In your<FlxProcessRenderer /> component, add the following property:
Using the custom component
Once your Custom Component is declared, you can use it for configuration within your app.
Data input and actions
The Custom Component accepts input data from processes and can also include actions extracted from a process. These inputs and actions allow you to configure and interact with the component dynamically.
Extracting data from processes
There are multiple ways to extract data from processes to use within your Custom Component. You can utilize the data provided by the process or map actions from the BPMN process to React actions within your component.
Styling with CSS
To apply CSS classes to UI elements within your Custom Component, you first need to identify the UI element identifiers within your componentβs HTML structure. Once identified, you can apply defined CSS classes to style these elements as desired. Example:
Additional considerations
- Naming Conventions: Be consistent with naming conventions for components, identifiers, and actions. Ensure that React action names match the names of process actions.
- Component Hierarchy: Understand how the component fits into the overall component hierarchy of your app. This will help determine where the component is displayed and what actions are available for it.
- Documentation and Testing: Document your custom component thoroughly for future reference. Additionally, testing is crucial to ensure that the component behaves as expected in various scenarios.
- Security: If your custom component interacts with sensitive data or performs critical actions, consider security measures to protect the app from potential vulnerabilities.
- Integration with FlowX Designer: Ensure that your custom component integrates with FlowX Designer, as it is part of the appβs process modeling capabilities.
Custom validators
You may also define custom validators in your FlowX processes and pass their implementation through thevalidators prop of the <FlxProcessRenderer /> component.
The validators are processed through a custom validation layer backed by Valtio state management, taking into account how the error messages are defined in your process.
A validator must have the following type:
Process end handling
The SDK provides a mechanism for container applications to handle process completion events through theonProcessEnded callback. This allows you to implement custom logic when a main process reaches an end state, such as redirecting users or triggering cleanup operations.
The onProcessEnded callback is triggered when the main process (not subprocesses) reaches any terminal state:
FINISHED- Process completed successfullyFAILED- Process encountered an errorABORTED- Process was manually terminated- Other terminal states
Only the main process triggers this callback. Subprocess completions do not trigger the callback to avoid unnecessary interruptions during complex process flows.
Implementation
To handle process end events, pass a function to theonProcessEnded prop of the <FlxProcessRenderer /> component:
Custom loader
The SDK provides a mechanism for container applications to customize the loader UI displayed during process execution. This allows you to replace the default FlowX loader with your own custom implementation based on different loading scenarios.Configuration
To configure custom loaders, pass them through thecustomLoader prop of the <FlxProcessRenderer /> component:
API specification
ThecustomLoader prop accepts an object of type CustomLoader:
Loader types
startProcess- Displayed when starting or resuming a processreloadProcess- Displayed when reloading a processdefaultAction- Default loader for actions whenloaderTypeis'action'. Used when no specific action loader is found in theactionsrecorddefaultUpload- Default loader for file uploads whenloaderTypeis'upload'actions- Record mapping specific action identifiers to custom loaders. When an action is executed, the SDK will first check for a matching entry in this record before falling back todefaultAction
Fallback behavior
If no custom loader is provided for a specific type, the SDK will automatically fall back to the built-in FlowX loader. This ensures your app continues to function even with partial custom loader configuration.
Chat component
To use theFlxChatRenderer component, import the module in your project:
Usage
Include the component in your template:chatConfig parameters
ThechatConfig object accepts the following properties:
Task management component
To use theFlxTaskManager component, import the module in your project:
Usage
Include the component in your template:Task management public API
The React SDK provides a comprehensive public API for building custom task management interfaces. This API allows you to fetch tasks, manage comments, handle task actions, and interact with task data programmatically.Importing the API
To use the task management public API, import the functions and types from@flowx/react-sdk:
Initialization
Before using the task management API, you need to initialize the task manager resources. This fetches the view configuration, enumerations, and filter operators.
Returns: Promise resolving to an object containing:
view: The view configuration objectenumerations: Available enumeration options for filtersfilterOperators: Available filter operators for each column
Fetching tasks
fetchViewTasks
Fetches tasks for a specific view with support for sorting, filtering, pagination, and search.
Returns: Promise resolving to a paginated response containing:
content: Array ofViewTaskobjectstotalElements: Total number of taskstotalPages: Total number of pages- Other pagination metadata
fetchView
Fetches a specific view configuration by ID.
Task details
fetchTaskComments
Fetches all comments for a specific task.
Returns: Promise resolving to an array of
TaskComment objects.
Example:
fetchTaskHistory
Fetches the history/audit trail for a specific task.
Returns: Promise resolving to an array of
TaskHistory objects.
Example:
fetchTaskAssignees
Fetches available assignees for a task, with optional search filtering.
Returns: Promise resolving to an array of
Assignees objects.
Example:
fetchBulkAssignees
Fetches available assignees for multiple tasks in bulk.
Returns: Promise resolving to an array of
Assignees objects.
Task actions
updateTaskAction
Executes an action on a specific task (e.g., assign, complete, cancel).
Available Actions:
TaskActions.ASSIGN- Assign task to a userTaskActions.COMPLETE- Mark task as completeTaskActions.CANCEL- Cancel the taskTaskActions.CHANGE_PRIORITY- Change task priorityTaskActions.VIEW- View task details
updateBulkTaskAction
Applies an action to multiple tasks at once.
Example:
updateTaskPriority
Updates the priority of a specific task.
Example:
Comments management
saveComment
Adds a new comment to a task.
Example:
removeComment
Removes a comment from a task.
Example:
Enumerations
getEnumerationOptions
Retrieves enumeration options for a specific enumeration name.
Returns: Promise resolving to an array of
TaskManagerEnumeration objects.
Real-time updates (SSE)
initSseConnection
Initializes a Server-Sent Events (SSE) connection for real-time task updates.
Returns:
SseConnection object with a close() method.
Example:
UI Flow renderer
FlxUiFlowRenderer renders a full UI Flow (multi-view navigation, breadcrumbs, embedded processes, and an optional chat widget) from a single component.
Usage
Parameters
Starting a UI Flow
Prerequisites
- UI Flow name: You need the name of the UI Flow to start, passed as
uiFlowName. - FlowX Project UUID: The
appInfo.appIdvalue, which identifies which project the UI Flow belongs to. Obtain it the same way as for processes: FlowX Dashboard β Projects β copy UUID from the project actions popover. - Process API path: The
processApiPathsubpath used by the embedded process renderer when the UI Flow navigates into a full-screen process.
Getting the UI Flow name
Open the FlowX Designer and navigate to UI Flows. The flow name displayed in the list is the value to pass asuiFlowName.
Initializing the UI Flow renderer
Minimal working example:Passing initial parameters: startParams
Use startParams to inject query-string key/value pairs into the UI Flow at startup. The values are available inside the flow as URL query parameters.
startParams is read once at initialization. To trigger a full re-initialization, change one of the primitive props such as uiFlowName.Utility API
These functions and hooks are exported from@flowx/react-sdk and can be used independently of the renderer components.
useEnumeration
React hook that fetches enumeration values reactively. Re-fetches whenever name or parentName changes.
getEnumeration
Async function to fetch enumeration values imperatively.
getStaticAsset
Resolves a static asset URL by its key.
getSubstitutionTag
Resolves a substitution tag value by its key.
Custom CSS
The renderer SDK allows you to pass custom CSS classes on any component inside the process. These classes are then applied to the componentβs root element. To add a CSS custom class to a component, you need to define the class in the process designer by navigating to the styles tab of the component, expanding the Advanced accordion and writing down the CSS class.

