<seam-supported-devices /> (preview)
Supported Devices shows the device models that work with Seam, grouped by manufacturer. A manufacturer can put it on a product page to show which of its models work with Seam, and an app can put it on an integrations page to show which devices its customers can connect. Each manufacturer section shows the manufacturer’s logo and its device models. Each model shows:- A compact row with a device image, model name, and supported capabilities.
- Green checks for capabilities with no additional requirements listed, and amber information icons for capabilities that require additional setup.
- Pills summarizing accessory, subscription, legal, or other requirements.
Add Supported Devices to Your Page
Pre-render Supported Devices
With@seamapi/react 5.4.0 or newer, you can include the populated device catalog in your page’s HTML. Crawlers and visitors without JavaScript can read device names, model numbers, capabilities, provider requirements, and accessory links. Search, filters, and galleries become interactive when React hydrates the page.
The prefetchSupportedDevices loader has no Next.js dependency. Run it on your server or during a static build, then pass its result to EcosystemProvider as dehydratedState when rendering the native React component. Load @seamapi/react/index.css in the page so the initial HTML is styled before JavaScript runs.
Pre-render Supported Devices in Next.js
Import the stylesheet in your App Router layout, then callprefetchSupportedDevices in a Server Component. Pass its result to EcosystemProvider as dehydratedState:
https://your-site.example with your page origin and include that origin in your embed key’s allowed origins. The server loader sends the origin to Ecosystem for validation. Keep the embed key, endpoint, and filters identical between the loader and the rendered component. An embed key is public browser configuration; use the same Ecosystem embed key you would supply to a client-rendered component.
The loader fetches the records needed for the complete initial view and applies the embed key’s exclusions before serializing the data. Each call uses its own cache. Failed requests or incomplete pagination throw an error so your application can handle the failure instead of generating an empty catalog.
This example revalidates the page and server fetches hourly. Adjust the interval to your catalog’s freshness needs. Next.js applications using Cache Components should use their corresponding cache APIs. If you cache complete loader results yourself, include the endpoint, embed key, page origin, and filters in the cache identity, and choose a lifetime that accounts for changes to key permissions and exclusions. Hydrated browser queries become eligible for background refresh one minute after their fetch time.
To verify the result, inspect the page’s HTML response and reload with JavaScript disabled. Device names and requirement text should be HTML elements, and native device disclosures and links should still work. An unscoped list retains the five-model preview per manufacturer; its Show all button requires JavaScript.
See the working Next.js example for setup and production-build verification. This approach renders the React component directly in your Next.js page. An iframe keeps its contents in a separate document and does not add device content to the parent page’s HTML.
Other Web Frameworks
You can use the same loader and native React component with other rendering setups:
The Next.js recipe above is the complete framework integration we have verified. The loader and native component also have direct React server-rendering tests; the other framework setups describe integration approaches rather than tested examples.
Nuxt/Vue, SvelteKit, and Angular also support server rendering, but the native component uses React. To put the catalog directly in those pages’ HTML, you need a React rendering adapter or your own server-rendered template using Ecosystem API data. Our browser web component and iframe do not automatically gain server rendering from the host framework. A browser-only React app also needs a server or build-time rendering step to produce populated HTML.
How Your Embed Key Changes the List
With a manufacturer key, Supported Devices defaults to your brand. You can omitmanufacturer entirely, and the title reads “Supported Brand devices”:
manufacturer attribute always wins over the key’s default. To read the same device models from your servers, use the Manufacturer API.
With an app (partner) key, Supported Devices hides what you have told Seam you do not support: excluded manufacturers and device types, and providers you do not support. When you also set capability, it hides the combinations you have excluded for that capability. To change what is excluded, email support@getseam.com.
Attributes
In React, pass the same options as camel-cased props on
SupportedDevices, for example deviceType, hideFilters, and hideSearch.
Supported Devices also accepts the shared attributes: embed-key, class-name, disable-css-injection, disable-font-injection, and ecosystem-endpoint.
Capabilities
Supported Devices lists these capabilities with a check or an information icon. They are the same capability flags the Seam API reports on a device, so you can also setcapability to any of them.
An information icon means a supported capability has additional requirements. Expand the device row to read those requirements for each provider. In the provider table, a green check means the capability is supported, while a dash in the requirements column means no additional requirement is listed. On mobile, requirement pills stack within their column.
Examples
Show one manufacturer’s devices
Show every supported thermostat
Show devices that support mobile keys
Build a compact list
Hide the title and filters but keep the search field. Use this when your page already has its own heading.Dark Mode
Settheme="dark" to always use the dark theme, or theme="auto" to follow the visitor’s color scheme. Manufacturers that provide a logo for dark backgrounds show it in the dark theme.
Empty States
For embed key and loading errors, see Troubleshooting.
Supported Devices and the Supported Device Table
Seam also offers the Supported Device Table, a separate widget (<device-list-by-capability>) loaded from a different CDN. It shows a support status for each device and capability, including devices that are not supported, and can display labels in French and Portuguese. Supported Devices is part of Seam Components: it lists the devices that work with Seam, defaults to your brand with a manufacturer key, and shares its setup with Compatible Apps.
Next Steps
- Show the apps that work with your devices with Compatible Apps.
- Set up your embed key, framework, and Content Security Policy in Ecosystem Components.
- Try the component with sample data in the interactive component library.