Custom Cards [beta]

Published on January 21st, 2026

Introduction

Custom cards is a beta feature for generating UI components to be used within the Roadie IDP.

Custom cards can be created by Admins, entirely within the Roadie UI, for Entity pages or the Home Page to render data in whatever form you would like.

Each card is made up of:

  • One or more Data Fetchers to grab data to populate the card from either internal Roadie APIs or proxies.
  • Code to render the output of the returned data (MDX in this case)
  • A set of Roadie components that help ensure the rendered card is in keeping with the rest of the user interface

Creating a card

To create a card you can use the editor on either an Entity page using CustomCard or on the Home page using CustomHomepageCard.

The editor comprises of:

  • Data fetcher configuration
  • An editor so you can see the generated code
  • A live preview of the rendered output
  • And an AI agent to help generate and modify the cards themselves.

Custom Card Editor

Using the AI agent

An AI agent is available to both generate cards and to tweak generated output.

Simply articulate in natural language what you would like to do and the agent will make changes.

Custom Card Agent

Available components

The Custom Card has access to over 200 Roadie React components - Table, Button etc.

This allows visual uniformity of created custom cards and keeps the UI consistent.

The AI agent will automatically use these components, so there's no manual intervention required (unless you want to deviate from the components).

Available context

Various contextual data objects are available in the Custom Cards.

Users

Some user information is also available for use in the card. Logged in user and Backstage Identity information can be used either in the rendered output or in the API calls that the Data Fetchers make.

ini
type UserInformation = {
  profile: ProfileInfo;
  displayName: string;
  userId?: string;
  identity?: BackstageUserIdentity;
};

type ProfileInfo = {
    email?: string;
    displayName?: string;
    picture?: string;
};

type BackstageUserIdentity = {
    userEntityRef: string;
    ownershipEntityRefs: string[];
};

For example, to retrieve a valid Backstage User Identity ref for a user could write something like {props.user?.identity?.userEntityRef} in the body of your card or {{ user.identity.userEntityRef }} as part of a templated Data Fetcher.

Entities

Using the /catalog plugin, entity information can be accessed.

Several /catalog endpoints are available.

More info about the endpoints themselves can be found in Backstage docs .

For example, if you wanted to pull information from the /entities Catalog API and use information about a user to retrieve only Group information pertinent to the logged in user, you could use the templated URL /entities/by-query?filter=kind=Group,relations.hasMember={{ user.identity.userEntityRef }}.

One potential output of that kind of card is something like this:

My Groups Card

Data from Proxies

Third party data is also available via configured proxies.

For example, data from PagerDuty could be accessed to retrieve data about an On Call rotation and parsed via a card. One potential output of that kind of card is something like this:

PagerDuty Custom Card