Skip to main content
Ecosystem Components are two Seam Components that show data from the Seam Ecosystem on your own website: the apps that work with Seam, and the device models that Seam supports. Use them on a manufacturer’s product page to list the apps a lock works with, or on an app’s integrations page to list the devices its customers can connect.

Compatible Apps

<seam-compatible-apps> lists the apps that work with a device category, manufacturer, provider, or capability through Seam.

Supported Devices

<seam-supported-devices> lists the device models that work with Seam, with capability badges, search, and filters.
Unlike the other Seam Components, Ecosystem Components do not need a publishable key, a client session token, or a Seam workspace. They read public data only, and they authenticate with an embed key. Both components ship in @seamapi/react 5.1.0 and later. Try them with sample data in the interactive component library.

Before You Begin

To embed the components, you need an embed key from Seam. Embed keys start with eco_live_. Email support@getseam.com and include:
  • Your company, and whether you are a device manufacturer or an app that integrates with Seam.
  • Every origin you plan to embed the components on.
Seam creates the key for you and replies with it. This is a manual step on Seam’s side, so request your key before you need it.
Send full origins, including the scheme and any non-default port, not bare hostnames. Seam matches them against the browser’s Origin header, so example.com matches nothing while https://example.com matches. Include every environment you embed on:
Wildcards are supported, so https://*.preview.example.com covers your preview subdomains. Seam adds http://localhost and http://127.0.0.1 on any port to every key, so the components also work on your development server.

How the Embed Key Works

An embed key is not a Seam API key and carries no account access. It identifies your embed, and it only works on the origins registered for it.
  • A request from a registered origin succeeds.
  • A request from any other origin fails with 403 origin_not_allowed.
  • Matching is on the whole origin, scheme included. https://example.com and http://example.com are different origins, and so are https://example.com and https://www.example.com.
Because of this, the key is safe to include in your page’s HTML, where anyone can read it. Someone who copies it cannot use it on their own site. What the key does also depends on who it belongs to:
  • Manufacturer key: Supported Devices defaults to your brand’s devices, so you can drop it on a product page without any other attributes.
  • App (partner) key: Supported Devices hides the manufacturers, device types, and providers you have told Seam you do not support.
To add or remove origins later, email support@getseam.com.

Add the Components to Your Site

Load ecosystem.js from the Seam CDN, then place the elements anywhere on the page.
ecosystem.js contains only the two Ecosystem Components, without the Seam API client, so it stays small (about 66 kB gzipped). If your page already loads elements.js for other Seam Components, it defines these elements too, so you do not need both.Pin an explicit version in production so a new release cannot change your page unexpectedly. To upgrade, change the version in the URL. See the releases for available versions.Boolean attributes work with or without a value: hide-search and hide-search="true" are equivalent, and hide-search="false" turns the option off.

Shared Attributes

Both components accept these attributes in addition to their own. In React, use the camel-cased prop name on EcosystemProvider (or SeamProvider), except for className, which goes on the component itself.

Dark Mode

Set theme on each component:
  • light (default) always renders the light theme.
  • dark always renders the dark theme.
  • auto follows the visitor’s operating system or browser color scheme (prefers-color-scheme).
If your site has its own theme toggle, set theme to light or dark from it instead of using auto. The components use a light-on-dark logo variant in the dark theme when one is available.

Styles and Fonts

By default, each component adds two stylesheets to the page’s <head>: the Seam Components CSS from https://react.seam.co and the Source Sans Pro font from Google Fonts. The components fall back to your system sans-serif font if the font does not load. To host the CSS yourself, set disable-css-injection and either import it with your bundler or link to it, matching the version you load:
The components render in your page’s DOM, not in a shadow root, and their class names start with seam-. Use class-name to add your own class to a component’s container. The seam- class names themselves are not a stable API and may change between releases.

Content Security Policy

If your site sets a Content Security Policy (CSP), allow the following sources: For example, with the default settings:

Troubleshooting

When a request fails, the component shows a message in place of the list. The Seam Ecosystem API returns an error type that you can see in your browser’s network tab.
The API returned 401 embed_key_required. The component has no embed-key, and the page is not on a Seam-owned domain. Add embed-key to the element, or embedKey to the provider in React.
The API returned 401 invalid_embed_key. Check for a truncated or misquoted value, and confirm you are using the eco_live_ embed key Seam sent you rather than a Seam publishable key or API key. If the key was revoked, email support@getseam.com for a new one.
The API returned 403 origin_not_allowed. The origin serving the page is not registered for your key. Check the scheme, the www. prefix, and the port, then email support@getseam.com with the exact origin to have it added.
Confirm that the script tag includes type="module" and that the CDN URL loads. Custom elements upgrade once their definition loads, so a blocked or misspelled script URL leaves the element on the page with nothing inside it. If your site sets a CSP, check the browser console for blocked requests and see Content Security Policy.
The stylesheet from https://react.seam.co did not load. Allow it in your CSP’s style-src, or set disable-css-injection and load the CSS yourself.
The components show live data from the Seam Ecosystem. To report a missing app or device, or incorrect details, email support@getseam.com.

Next Steps

If you have questions or want to report an issue, email support@getseam.com.