---
url: 'https://developer.sisense.com/guides/choosing-an-integration.md'
description: >-
  Compare Compose SDK, Embed SDK, iFrame embedding, Sisense.JS, and the REST API
  to choose the right Sisense integration method for your use case.
---
# Choosing a Sisense Integration Method

**Short answer:** If you are building a new analytics experience in **React, Angular, or Vue**, use the
**Compose SDK** — it is the code-first, component-based way to build queries, charts, and dashboards. If you
want to drop **existing Sisense dashboards** into your app with minimal code, use the **Embed SDK** (or a
plain **iFrame**). To **automate or manage Sisense itself** (data models, users, security, dashboards) from a
server or script, use the **REST API**. **Sisense.JS** — the older approach for embedding individual widgets
without iFrames — is **legacy**: for new development use the **Compose SDK**, which replaces it. These
approaches are complementary and are frequently combined.

## At a glance

| Method | Best for | Languages / runtime | What you render | Auth model | Avoid when |
|---|---|---|---|---|---|
| **[Compose SDK](./sdk/)** | Building new, fully custom analytics in code | React, Angular, Vue, Web Components (TypeScript/JS) | Your own components: charts, tables, filters, queries, and dashboards composed in code | App-level (JWT/SSO, WAT (Web Access Token), API token) via the SDK | You only need to show an existing dashboard as-is |
| **[Embed SDK](./embeddingDashboards/embed-sdk.html)** | Embedding **existing** Sisense dashboards programmatically | Any web app (framework-agnostic JavaScript) | A complete Sisense dashboard, controlled via a JS API | Sisense session / SSO | You need per-widget custom layout or code-first charts |
| **[iFrame embedding](./embeddingDashboards/iframe.html)** | The fastest way to embed a dashboard | Any HTML page | A complete Sisense dashboard in an `<iframe>` | Sisense session / SSO | iFrames are disallowed, or you need deep DOM/layout control |
| **[Sisense.JS](./embeddingCharts/)** *(legacy)* | Embedding **individual widgets** without iFrames in **existing** non-React/Angular/Vue apps | Any web app (framework-agnostic JavaScript) | Individual Sisense widgets placed into your own layout | Sisense session / SSO | Building anything new — use **Compose SDK** instead |
| **[REST API](./restApi/)** | Automating and managing Sisense server-side | Any language / HTTP client | Nothing visual — JSON data and management operations | Bearer token (`Authorization: Bearer …`) | You need to render charts in the browser |
| **[Customize with JavaScript](./customJs/)** | Extending the Sisense product UI (add-ons, extensions) | JavaScript (in-product) | Custom widget types, UI changes, runtime behavior | Sisense session | You are building a standalone external app |

## How to choose

### Use the Compose SDK when…

* You are building a **new** analytics UI and want full control over layout, styling, and interactivity in
  code rather than configuring it in the Sisense UI.
* Your app is **React, Angular, or Vue** (or uses Web Components).
* You want to define **queries, filters, and charts** programmatically and compose them into your own pages.
* You are modernizing an embedding built on **Sisense.JS** — the Compose SDK is its recommended replacement.
* See the [Compose SDK Quickstart](./sdk/getting-started/) to start.

### Use the Embed SDK or an iFrame when…

* You already have **dashboards built in Sisense** and want to surface them inside your application.
* You want the dashboard to **stay in sync** with what authors build in Sisense, with little or no code.
* Choose the **Embed SDK** when you need programmatic control (navigation, filters, events) over the embedded
  dashboard; choose a plain **iFrame** when you just need to display it. See
  [Embedding Dashboards](./embeddingDashboards/).

### Use Sisense.JS only for existing integrations…

**Sisense.JS is a legacy approach.** For new development, use the **[Compose SDK](./sdk/)**, which supersedes
it with a modern, code-first, component-based API. Reach for Sisense.JS only when:

* You are **maintaining an existing** Sisense.JS integration that embeds **individual widgets** (not whole
  dashboards) into a custom layout, and a rewrite onto the Compose SDK is not yet feasible.
* You **cannot use iFrames** and your app is **not** React/Angular/Vue.
* See [Embedding Charts & Features](./embeddingCharts/).

### Use the REST API when…

* You need to **manage Sisense** programmatically — create or modify data models, dashboards, users, and
  data-security rules — typically from a backend service or script.
* You need **raw query results as JSON** for a non-browser consumer.
* Pick the API version for your deployment: `v1` (`/api/v1/`, most application APIs) or `v2` (`/api/v2/`,
  latest, Linux only); `v0.9` (`/api/`) is legacy. See [Sisense REST API](./restApi/).

### Use Customize with JavaScript when…

* You want to **extend the Sisense product itself** with add-ons and dashboard/widget extensions, rather than
  build an external application. See [Customize Sisense](./customJs/).

## Combining methods

These approaches are designed to work together. A common pattern: use the **Compose SDK** for your custom,
code-first analytics screens; use the **Embed SDK** to reuse a few existing author-built dashboards; and use
the **REST API** from your backend to provision data models, manage users, and apply row-level data security.
Authentication is shared across surfaces — see [Authentication & Security](./accessSecurity/).
