## Introduction
### Goal
Use the Bloomreach UI Extension JavaScript Client Library to develop your own custom integrations.
### Background
Communication between a [custom integration](🔗) and the Content SaaS UI is handled by a JavaScript library provided by Bloomreach. The library hides the complexity of the `window.postMessage
` communication with the Content SaaS UI and provides a stable public API.
## Include Client Library
The client library is available as an [NPM package](🔗):
The library can be used in two ways.
As a JavaScript module:
Or as a standalone ES5 script:

There may be a more recent version of the `
ui-extension-saas
` package, check <https://www.npmjs.com/package/@bloomreach/ui-extension-saas> for the most up to date information.
The latter creates a global object `window.UiExtension
`.
## Register Extension
The `UiExtension
` object needs to be registered first:
The code snippet above registers the extension with the Content SaaS application, so the latter knows the extension is ready for communication. The `register()
` method returns a `Promise
` that resolves with a `ui
` object. The `ui
` object can be used to access information about the Content SaaS environment and interact with the Content SaaS UI.
## API
### Static Properties
The `ui
` object contains the following properties:
Property | Description | Example value |
`ui.baseUrl ` | The URL of the Content SaaS environment that hosts the custom integration. | "<https://cms.example.com>" |
`ui.extension.config ` | The value of the custom integration's _Configuration_ field. | "{ apiKey: '1234' }" |
`ui.locale ` | The locale of the Content SaaS user as selected on the login page. | "nl" |
`ui.styling ` | The styling of the user interface in which the extension is shown. For page tools this is always "material" for AngularJS Material. | "material" |
`ui.timeZone ` | The time zone of the Content SaaS user as selected on the login page. | "Europe/Amsterdam" |
`ui.user.id ` | The username of the Content SaaS user. | "admin" |
`ui.user.firstName ` | The first name of the Content SaaS user. | "Suzanna" |
`ui.user.lastName ` | The last name of the Content SaaS user. | "Doe" |
`ui.user.displayName ` | Concatenation of the first and last name of the Content SaaS user, or the username if both are blank. | "Suzanna Doe" or "admin" |
`ui.version ` | The version of the Content SaaS environment. |  |
### Extension-Specific Properties, Functions, and Events
The `ui
` object provides several other properties, functions, and events which are specific to a type of extension and are described on the relevant pages:
[Develop a Document Field Integration](🔗)
[Use Dialogs Within Custom Integrations](🔗)