Getting Started
For architecture and schema details, see Technical Reference. For the full catalog of integration points, see Extension Points.
Quick Start
To onboard and test an extension quickly:
- Build your extension (React component or JavaScript module)
- Host it on a publicly accessible HTTPS URL
- Register the extension using the Extensions API
- Enable it for your FI (
institutionId) - Reload the application and verify it in the UI
Once registered, the platform automatically loads your extension at runtime when the corresponding extension point is invoked.
Prerequisites
Before onboarding an extension, ensure the following:
- Access to Extension APIs (authentication and authorization configured)
- Required permissions to register extensions
- Ability to host JavaScript bundles on a publicly accessible HTTPS URL (for example, an FI-hosted CDN)
- Allowed domains configured to avoid CORS issues when loading remote modules
- Extension bundle correctly built and exposing the expected entry point
- Bundle URL versioned or cache-safe so updates are reflected
- Extension compatible with the platform runtime (for example, supported React version, no conflicting dependencies)
- Basic error handling implemented so the extension does not impact the host application
If any of the above are not set up, the extension may fail to load, render incorrectly, or not reflect updates.
Step 1: Build Your Extension
Develop your extension as a JavaScript module (for example, a React component for UI extensions) that adheres to the contract defined by the target extension point.
export default function MyExtension(props: ExtensionProps) {
return (
<div>
Custom FI Extension — Account: {props.accountId}
</div>
);
}
Contract Definition
ExtensionPropsrepresents the contract defined by the extension point- It contains all contextual data passed to the extension at runtime (for example, account, transaction, or user data)
- The structure of
ExtensionPropsis specific to each extension point and is documented as part of the extension point schema
For data provider extensions:
- The platform defines an interface (contract) that the extension must implement
- The extension is expected to return data in the format defined by this interface
- The returned data is consumed by the platform to drive UI rendering or behavior
Requirements
- The module must export a default entry point
- The implementation must conform to the contract defined by the extension point
- The extension should handle missing or optional data gracefully
Step 2: Host Your Extension
Host the compiled extension bundle on a publicly accessible HTTPS endpoint.
Extensions are typically hosted on the platform's GCP Cloud Storage (via CDN). The URL structure often follows this pattern:
https://<prod-url>/widgets/nextgen/<extension-name>/latest
Requirements
- The hosted bundle must be publicly accessible (no authentication required)
- The URL must be reachable from the target environment (Stage / Production)
- The hosting domain must be whitelisted in the allowed domains list
- HTTPS must be used for all hosted resources
- Ensure the correct entry file (for example,
remoteEntry.js) is accessible
Step 3: Register and Enable the Extension
Register the extension using the Extension API. Once registered, the extension is automatically enabled for the associated FI.
API Endpoint
POST /extensions
Sample Request
{
"extensionId": "com.fi.custom.account-extension.00516",
"extensionPointId": "com.dbk.platform.olb.extension-point.pages.account-history.account-detail",
"remote": {
"url": "https://your-domain.com/extensions/my-extension.js",
"name": "account-extension",
"entry": "MyExtension",
"category": "ModuleFederation"
}
}
Extension Metadata
| Field | Description |
|---|---|
extensionId | Unique identifier for the extension (must be globally unique) |
extensionPointId | Identifier of the target extension point |
remote.url | URL where the extension bundle is hosted |
remote.name | Module Federation container name |
remote.entry | Exported module or component to be loaded |
remote.category | Loader category (for example, ModuleFederation) |
FI Enablement and Naming Convention
- The
extensionIdmust be globally unique across the platform - It is recommended to suffix the
extensionIdwith the FI'sinstitutionId
Example:
com.fi.custom.account-extension-00516
This convention helps:
- Avoid naming conflicts across different FIs
- Clearly identify ownership of the extension
- Automatically associate the extension with the intended FI
Once the extension is registered with the appropriate FI-specific identifier, it is considered enabled for that FI in the given environment.
Notes
- Ensure the
extensionPointIdmatches a valid and supported integration point — see Extension Points - Any mismatch in metadata (for example, incorrect
entry, invalid URL) may prevent the extension from loading - Changes to the extension require updating the hosted bundle (and versioning, if applicable)
Step 4: Verify Integration
After registering the extension, verify that it is correctly loaded and functioning as expected.
Validation Steps
- Navigate to the target page or flow where the extension point is invoked
- Confirm that the extension is loaded and rendered at the expected location in the UI
- Validate the behavior using relevant contextual data (for example, account or transaction data)
- Ensure the extension responds correctly to different data scenarios (if applicable)
Debugging Tips
Use browser Developer Tools (Network and Console tabs) to:
- Verify that the extension bundle (for example,
remoteEntry.js) is successfully loaded - Check for any runtime errors or warnings
Also confirm that:
- The
extensionPointIdandextensionIdare correctly configured - The hosted URL is accessible and not blocked (for example, due to CORS or network restrictions)
Extensions are loaded dynamically at runtime when the corresponding extension point is triggered. If the extension is not visible, it is typically due to configuration issues — incorrect metadata, an invalid entry point, or an inaccessible bundle.
General Guidelines
These guidelines apply to all point-based extensions.
Performance
- Avoid heavy synchronous logic
- Use lazy loading where applicable
- Keep UI components lightweight
Data Handling
- Always handle partial or missing data
UI Constraints
- Respect container size (cards, slide-overs)
- Follow platform styling conventions
Safety
- Do not mutate host application state
- Ensure error isolation (no UI break)
Next Steps
- Extension Points — Choose the right integration point for your use case
- Technical Reference — Architecture, schema, and contextual data contracts
- Capabilities — Extension forms and types supported by the platform