Article

8 Embeddable Alternatives for React SaaS Analytics (2026)

Embeddable alternatives for React SaaS embedded analytics: 8 tools compared on iframe vs in-page rendering, tenant isolation, embedded AI, and pricing shape.

QueryPanel Team
18 min read
Embeddable alternativesembedded analyticsReactSaaScustomer-facing analyticsmulti-tenant analyticscomparisoniframe
8 Embeddable Alternatives for React SaaS Analytics (2026)

For a React SaaS product on Postgres with many tenants, QueryPanel is the strongest of the Embeddable alternatives because it ships a finished dashboard workspace with an AI assistant as a React component, so your customers can ask questions and reshape their own dashboards before your developers write a single chart.

Published October 19, 2026. Embeddable facts below come from docs.embeddable.com and the Embeddable pricing page, per the vendor's public docs and pricing pages as indexed October 2026. Every other vendor fact links to that vendor's own docs or pricing page, checked the same way. "Embeddable" here means the embedded analytics vendor at embeddable.com, not the generic word. Prices change; check the linked pages before you budget.


Short answer: Embeddable is a good developer toolkit: no iframe, charts you own in code, a no-code builder on top, and Custom Canvas for customer self-serve. Look at alternatives when you don't want to build the component library before customers see anything, when AI questions are a launch requirement, or when session-based tiers don't fit your traffic. Pick QueryPanel for a headful React workspace where tenants customize dashboards with an AI assistant, plus a headless Node SDK when credentials and query results must stay on your servers. Pick Luzmo for a hosted editor with in-page view embeds. Pick Cube or GoodData.UI when a semantic layer should own your metrics. Pick the Metabase SDK if you already run Metabase. Pick Sisense Compose SDK if you already license Sisense. Pick DataBrain or Qrvey for flat-priced suites with a builder.

For the direct two-vendor decision, see QueryPanel vs Embeddable. If you're choosing between Embeddable and Luzmo, read Embeddable vs Luzmo.

Key takeaways

  • Embeddable does not use iframes. Dashboards mount as an <em-beddable> web component in your DOM. Every tool on this list except one AI surface and one editor also renders in-page, so "no iframe" alone no longer separates vendors.
  • With Embeddable, your developers build the charts. Each chart is a React component registered with defineComponent before it appears in the builder. That is the product's main strength and its main cost.
  • Embeddable's AI is built on Custom Canvas. Its AI endpoints require Custom Canvas on the dashboard and only query datasets enabled for it. Test that flow on your schema.
  • Pricing is flat but not published. The pricing page sells one quoted monthly subscription with unlimited usage and white-labelling included; there is no free tier or list price to compare against.
  • The real split among Embeddable alternatives is who builds the UI: your engineers (Embeddable, Cube SDK, Sisense Compose), the vendor's builder (Luzmo, DataBrain, Qrvey), or a finished workspace your customers edit (QueryPanel).

Embeddable alternatives at a glance

Facts per each vendor's public docs and pricing pages as indexed October 2026. "Renders in iframe?" refers to the default customer-facing embed.

ToolRenders in iframe?React integrationTenant isolationAI inside the embedPricing shape
QueryPanelNo@querypanel/react-sdk (QuerypanelEmbedded); headless @querypanel/node-sdkServer-minted RS256 tenant JWT; tenant filter applied at SQL generation and checked before executionNL to SQL and charts; AI assistant edits dashboardsCounts tenants per month, not seats; free tier
EmbeddableNo (web component)Custom element in JSX; you write chart componentsSecurity context in server token; SQL-based RLS or access policies; per-customer databasesAI chatbot and AI endpoints on Custom Canvas datasetsFlat monthly subscription, quoted; unlimited usage
LuzmoNo for view mode; editor still iframe@luzmo/react-embedEmbed token with parameter filters; connection overridesLuzmo IQFrom €1,995/mo billed annually, plus usage
CubeNo with React SDK (preview); iframe option; Analytics Chat is iframe@cube-dev/embed-sdkSession userAttributes and security contextAnalytics ChatPer seat plus compute
GoodData.UINo@gooddata/sdk-ui-ext, @gooddata/sdk-ui-gen-aiWorkspace per tenantGenAIAssistant componentPer workspace (Professional); quoted
Metabase SDKNo (SDK); full-app embed is iframe@metabase/embedding-sdk-reactJWT SSO, tenants, row and column securityMetabot (builds questions)Pro $575/mo for 10 users, +$12/user
Sisense Compose SDKNo (SDK); classic embeds are iframe@sisense/sdk-uiWeb Access TokensChatbot and NLQ componentsNot public
DataBrainNo (web components)<dbn-dashboard> custom elementGuest token plus SQL policy per tableAI chat modeGrowth $999/mo, Pro $1,995/mo, unlimited seats
QrveyNo (web components)<qrvey-dashboard> custom elementBackend token; record and column securityAI chart builderFlat rate, quoted

Use the table to cut the list to two or three, then run the evaluation plan near the end of this post.

What Embeddable does well

Embeddable is often the first name that comes up for "embedded analytics in React without iframes," and that is earned. Be fair to it before you replace it.

It is genuinely in-page. The embedding docs mount an <em-beddable> element directly in your DOM. In React you render it with React.createElement('em-beddable', ...) or straight in JSX. Your server calls the Tokens API with an API key that never reaches the browser and gets back a short-lived, scoped token. That token picks the dashboard and carries the row-level security context.

Your team owns the charts. Components are plain React. A companion .emb.ts file calls defineComponent to declare inputs (dataset, dimension, measure) and to call loadData. Once published, product people arrange those components in Embeddable's no-code builder. If your design system is strict, this is the closest you get to "our charts, their plumbing."

Tenant isolation has several models. You can encode tenant logic in SQL with a security context, move it into access policies on the data models, or give each customer a separate database through environments.

Customers can build dashboards. Custom Canvas turns a dashboard into a guided space where end users add charts from the datasets and chart types you allow, with personal or shared dashboards and edit or read-only access.

The price does not grow per viewer. Embeddable's pricing page is headlined "unlimited usage for a fixed price," and every tier includes unlimited end users.

When Embeddable is still the right choice

Keep Embeddable, or pick it, when:

  • You have frontend engineers who want every chart to be a component in your repo, built with your chart library and tested in your CI.
  • Your dashboards are designed by your team, and customer self-serve is a guided add-on, not the main experience.
  • You already model metrics in Cube-style data models, or you want dashboards as code.
  • Predictable, non-seat pricing matters more than having AI questions at launch.

A team in that position should not switch because a competitor has a newer AI demo.

Where teams hit limits with Embeddable

These are documented trade-offs, not complaints. Each one matters only if it collides with your roadmap.

Developers build components before customers see anything

Embeddable's model is "bring your components." The first-component guide and the custom chart tutorial show the pattern: an index.tsx React component plus an .emb.ts definition that maps builder inputs to props and loads data. That is a good pattern for a design-system team. It is also a sprint or two of chart work, theming, empty states, loading states, and data formatting before a customer opens anything.

The question to ask is simple: is chart-component authoring the work you want your engineers doing? If yes, Embeddable fits. If you would rather ship a working analytics area this quarter and customize later, a finished workspace gets you there faster.

Custom Canvas UI is fixed

Custom Canvas is the self-serve layer, and its own docs say the panels, forms, buttons, and cards are built on Remarkable UI and "currently fixed": you can restyle them with CSS variables, but you can't swap them out or change their behavior. If self-serve is your core product surface rather than an add-on, check that limit early.

AI is scoped to Custom Canvas datasets

The docs list "Add an AI chatbot" as a common task, and the AI endpoints page documents /ai/v1/* APIs that let an agent query data models, read a user's canvas, and add charts. The prerequisites are specific: Custom Canvas must be enabled on the dashboard, at least one dataset must be enabled for it, and the agent "will only be able to query datasets that are enabled for Custom Canvas." As indexed in October 2026, the same page notes that it is not yet documented how the frontend is notified when the agent changes the canvas.

None of that is a red flag. It does mean "customers ask a question and pin the answer" depends on Custom Canvas setup, and you should test the full loop, not a chat demo.

Pricing is quoted, not published

The pricing page, as checked October 19, 2026, lists no tiers or prices. Embeddable sells a flat monthly subscription with unlimited usage, every feature, and white-labelling by default, and quotes it after a short scoping call. Its FAQ says pricing is based mainly on project scope, and that MAUs, dashboard views, and query volume are not the primary driver. Startup, scale-up, and enterprise packages differ in governance, SLAs, and rollout support rather than in features.

Flat and unmetered is good for budgeting, but with no list price you can't model cost before talking to sales. Get the quote in writing, ask what triggers a move to a larger package, and check what changes at renewal.

Smaller integration details

  • No dedicated React package. You render the custom element and pass JSON through a client-context attribute.
  • Tokens are standard JWTs with a default 7-day expiry in the Tokens API. Set a shorter expiry yourself.
  • SQL-based RLS recompiles the model for each new security context; access policies avoid that. Pick one early.
  • The embedding docs warn about z-index conflicts when several dashboards share a page.

1. QueryPanel: best for React + Postgres SaaS where tenants customize dashboards with AI

Choose QueryPanel when: you want customers inside a working analytics workspace on day one, with an AI assistant that writes SQL against your schema and edits their dashboards, and you don't want to build a chart library first.

QueryPanel's primary product is its headful React SDK with a Notion-like dashboard management system and AI assistant for tenant customization. QueryPanel also offers a headless Node SDK for custom UI implementations with zero-trust architecture, where customer data never leaves customer servers.

How it differs from Embeddable in practice:

  • Finished UI first, not components first. Render QuerypanelEmbedded on a route and customers get dashboards, a question box, SQL-backed charts, and an assistant that reshapes dashboards. Each tenant can fork a shared dashboard and customize its own copy. See the React embed guide.
  • AI is the main path, not an add-on. Customers ask in plain language. QueryPanel generates SQL for your schema, renders a chart, and the result can go straight onto a dashboard. Accuracy improves through trainable knowledge: gold SQL queries, database annotations, a glossary, and tenant-level definitions.
  • Tenant identity comes from your server. Your backend mints a short-lived RS256 token with createJwt() from @querypanel/node-sdk (JWT docs). You declare the tenant column when you attach the database, the tenant filter is part of SQL generation, and generated SQL is checked for it before it runs.
  • A zero-trust headless path. Call ask() from your API routes with the tenant from your auth. QueryPanel returns SQL and a chart spec; your callback runs the query, so database credentials and result rows stay on your servers.
  • Pricing counts tenants. Plans count unique tenants per billing month, not end-user seats or sessions. AI chart generation is metered separately, and a free tier exists. See pricing.

Supported databases: PostgreSQL, ClickHouse, BigQuery, and MySQL.

Watch for: QueryPanel is not a full enterprise BI suite or a semantic-layer product, and it is a smaller vendor than most names here. The headful SDK is React-only. It doesn't focus on pixel-perfect reports or scheduled PDFs. Evaluate NL-to-SQL accuracy on your own schema, not on a demo database. If you want every chart to be your own React component, Embeddable's model gives you more control.

Best proof: attach one real Postgres schema, create two tenants with uneven data, ask the same five questions as each, and check the SQL. For a step-by-step version, see the tenant-safe React + Postgres tutorial and the wider Postgres + React embedded analytics shortlist.

2. Luzmo: best for a hosted editor across frameworks

Choose Luzmo when: you want vendor-built dashboards and an editor your customers can use, without writing chart components.

Luzmo's October 2026 release made in-page rendering the default for its embed libraries; you can opt back into embedMode: "iframe". The developer docs note that when editMode is anything other than view, the embedded dashboard editor still renders in an iframe. The new mode needs wss:// access to Luzmo's API host. Tenant data is scoped with parameter filters in the embed token, and Luzmo IQ adds AI questions. Pricing starts at €1,995 per month billed annually, with usage charges on top.

Watch for: if your customers edit dashboards, the editing surface is still an iframe. Some contracts scale on monthly active users. More in Luzmo alternatives.

3. Cube: best when the semantic layer comes first

Choose Cube when: governed metrics, caching, and APIs are the real project, and the embed is one consumer of them.

Embeddable's data models already resemble Cube's, so Cube is the natural move for teams who like that layer and want more control. Cube offers iframe, React SDK, and headless embedding. Its React Embed SDK talks to Cube's APIs directly rather than through an iframe, but it is in public preview, and Analytics Chat still embeds as an iframe. Tenant rules come from userAttributes passed to the session API and enforced by access policies. The pricing page lists Premium at $80 per developer per month and Viewer seats at $20 per user per month; Cube's own blog describes embedded analytics as compute-priced, so get the embedded quote in writing.

Watch for: you're adopting infrastructure, not a finished customer UI. See Cube alternatives.

4. GoodData.UI: best for a governed model with per-tenant workspaces

Choose GoodData when: you want a mature semantic platform, React components, and a clean one-workspace-per-customer model.

GoodData.UI renders visualizations and dashboards as React components, and GenAIAssistant from @gooddata/sdk-ui-gen-ai adds an AI assistant (a gd-ai-assistant web component exists for non-React hosts). GoodData's release notes mark a September 2026 change to sdk-ui-gen-ai (React SDK 11.55+) as breaking, so pin versions. The pricing page shows a Professional tier priced per workspace and a custom Enterprise tier.

Watch for: workspace-per-tenant is clean but adds provisioning work, and fast SDK changes mean upgrade time. See GoodData alternatives.

5. Metabase Modular Embedding SDK: best if you already run Metabase

Choose the Metabase SDK when: internal analysts already live in Metabase and you want the same content inside your React app.

@metabase/embedding-sdk-react renders questions, dashboards, and Metabot as React components, not iframes. It needs Pro or Enterprise. Pricing lists Pro at $575/month with 10 users and $12 per extra user, and every customer who signs in through an SSO or SDK embed counts as a user. Metabase's embedded AI chat builds questions but doesn't write SQL or edit dashboards.

Watch for: per-seat cost at SaaS scale. We ran the numbers in Metabase alternatives.

6. Sisense Compose SDK: best for teams already licensed on Sisense

Choose Sisense Compose SDK when: you have a Sisense deployment and want to move its customer embeds off iframes.

@sisense/sdk-ui exposes charts, dashboards, and generative AI components such as <Chatbot /> as React components (AI quickstart). The AI components need @sisense/sdk-ui 2.0.0+ and Sisense Fusion L2025.2 or later with generative AI enabled. Production auth uses Web Access Tokens, which the auth docs say require special licensing.

Watch for: Compose SDK is a front end for a Sisense server you still license and run; pricing isn't public. See Sisense alternatives.

7. DataBrain: best for a flat-priced builder with a semantic layer

Choose DataBrain when: you want a hosted builder and metrics layer at a published flat price.

DataBrain embeds through web components such as <dbn-dashboard> (embedding tutorial) and scopes tenants with a guest token plus per-table SQL policies. Pricing lists Growth at $999/month and Pro at $1,995/month, both with unlimited seats and tenants. Compared with Embeddable, the difference is who builds charts: DataBrain's builder versus your developers' components.

Watch for: Growth includes one data source. See DataBrain alternatives.

8. Qrvey: best for self-hosted, flat-rate tenant self-service

Choose Qrvey when: you want the platform deployed in your own cloud with deep tenant self-service.

Qrvey mounts dashboards as custom elements like <qrvey-dashboard> with a token fetched from your backend (quickstart). Its pricing page describes flat-rate pricing with unlimited tenants, users, and dashboards, quoted by sales.

Watch for: self-hosting means you run the platform. No React package. Compare on /compare/qrvey.

How to evaluate Embeddable alternatives without iframes

Every finalist here claims "no iframe." Run the same plan on each, with your schema and two real-shaped tenants. Budget about a week.

  1. Inspect the DOM. Open DevTools on the embed page and search for <iframe. Then open every mode: view, edit, AI chat, export. Luzmo's editor and Cube's Analytics Chat are examples where one surface still uses an iframe.
  2. Count the work before first value. Time from npm install to a tenant seeing a real chart on your data. Note how many components your team had to write.
  3. Tenant from the server only. The tenant must come from a server-minted token. Try to change it from the browser: edit client-context, props, or filter values. Nothing should widen the scope.
  4. Broad questions fail closed. As tenant A, ask "show all orders" through dashboards, exports, and the AI. You should see only tenant A's rows. Read the generated SQL where the tool exposes it.
  5. The AI loop end to end. Ask five real customer questions. Record whether the AI writes new queries or only recombines saved content, and whether an answer can land on the customer's dashboard.
  6. Customer edits stay isolated. Have tenant A change a shared dashboard. Tenant B's copy must not change.
  7. Price at 1x, 2x, and 5x. Model tenants, end users, and monthly dashboard sessions. Ask each vendor which unit is billed: seat, session, monthly active user, workspace, tenant, or flat.
  8. Your React app's realities. Two embeds on one route, your router, dark mode, SSR or Next.js App Router, and token refresh without a reload.

For a deeper rendering comparison, see iframe vs native React embedded analytics. For a full-UI versus build-your-own decision, see headful vs headless embedded analytics SDKs.

FAQ

What are the best Embeddable alternatives for embedded analytics?

QueryPanel for React SaaS teams that want a finished dashboard workspace with an AI assistant and tenant customization, plus a zero-trust headless option; Luzmo for a hosted editor; Cube or GoodData.UI when a semantic layer owns metrics; the Metabase SDK or Sisense Compose SDK if you already run those platforms; DataBrain or Qrvey for flat-priced suites with a builder.

Does Embeddable use iframes?

No. Embeddable renders dashboards through an <em-beddable> web component placed directly in your DOM, authorized by a short-lived token your server requests from its Tokens API.

How much does Embeddable cost?

Embeddable does not publish prices. As checked October 19, 2026, its pricing page offers one flat monthly subscription, quoted after a short scoping call, with unlimited usage, every feature, and white-labelling included. Its FAQ says pricing is based mainly on project scope, not on MAUs, dashboard views, or query volume. Ask for the quote in writing and check what changes at renewal.

Do I have to build my own charts with Embeddable?

Largely, yes. Embeddable's model is that developers write React chart components and register them with defineComponent so they appear in the no-code builder. Custom Canvas then lets end users build dashboards from the components and datasets you enable.

Embeddable vs QueryPanel: what's the main difference?

Embeddable gives your developers a toolkit to build and own every chart component. QueryPanel gives your customers a finished React dashboard workspace with an AI assistant that writes SQL and edits their dashboards, and prices by tenant rather than by session. Pick Embeddable for maximum chart control; pick QueryPanel for faster time to a working, AI-first analytics area.

Which Embeddable alternative keeps data on our servers?

QueryPanel's headless Node SDK: QueryPanel generates SQL and a chart spec, your backend runs the query through a callback, and credentials and result rows never reach QueryPanel. Self-hosting Qrvey in your cloud also keeps data in your infrastructure, but you then operate the platform.

Is there an Embeddable alternative with a real React package?

Yes. QueryPanel (@querypanel/react-sdk), Luzmo (@luzmo/react-embed), Cube (@cube-dev/embed-sdk, in preview), GoodData.UI, Metabase (@metabase/embedding-sdk-react), and Sisense (@sisense/sdk-ui) all ship React packages. Embeddable, DataBrain, and Qrvey use custom elements you render in JSX.


Compare QueryPanel and Embeddable directly, see Embeddable vs Luzmo, or start with the React embed guide and a free tier on pricing.