Last modified: August 22, 2025
You can create a React-based app card for projects on the latest version (2025.2
) of the developer platform. App cards work similarly to existing cards you may have built for legacy apps, with some minor modifications to your configuration files.
This guide walks you through how to create a boilerplate app card in an existing app, along with how to upload and preview your card in HubSpot. You’ll then upload all these files to your project, where you can preview the card in a developer test account where you’ve installed your app.
Prerequisites
- Ensure you’ve installed the latest beta version of the HubSpot CLI.
- If you haven’t done so yet, create an app.
- It’s recommended to create a configurable test account so that you can build and test in an isolated environment.
Create an app card
1
Add a card component to your project
To add a new app card component to your project, use the terminal to navigate into your local project directory, then run the following command:Then, when prompted to select a component to add, select Card.
If your project doesn’t contain any app cards yet, a Learn more about these files in the app cards reference documentation.

cards/
directory will be created for you in the app/
directory. The cards/
directory will contain:- A JSON card configuration file (
*-hsmeta.json
) - A React component file (
.jsx
) - A
package.json
file
cards/
directory (excluding package.json
if it already exists).2
Upload to HubSpot
To upload the new card to your HubSpot account:
- Run
hs project install-deps
to install the dependencies needed for the app card. This will update thecards/
directory with the necessary Node modules and apackage-lock.json
file, which will speed up the build of the uploaded app card extension and ensure that any dependencies in your local development environment and production match. - Then, run
hs project upload
to upload the project to your default account. - To specify a different account (such as a separate test account), include the
--account
flag and specify the HubID of the account. For examplehs project upload --account 123456
. - If the project hasn’t been uploaded before, you’ll be prompted to confirm that you want to create the project in your account. Otherwise, the terminal will display the build and deploy status, then confirm once the project has been successfully uploaded.
View the card in HubSpot
After uploading the project, you can view it in HubSpot by runninghs project open
. A browser tab will open to the project details page, where you can view your project, app, and its new card component.

- Click the name of the app in the project summary on the left, or under Project components.

- Click the Distribution tab.
- Click Install now.

hs project add
is configured to appear in the middle column of contact records. To display the card, you’ll first need to add it to the contact record view:
- In your HubSpot account, navigate to CRM > Contacts.
- Click the name of a contact.
- At the top of the middle column of the contact record, click Customize.

- Click Default view.
- Select the tab that you want to add the card to. You can then hover over the location where you want to place the card and click the plus button. This can be adjusted at any time after initial setup.

- In the right sidebar, click the Card library tab. Then, click the Card types dropdown menu and select App to filter for app cards.

- Click Add card under the app card you created, then click the close button in the top right of the sidebar.
- In the top right, click Save and exit.
Start local development
With your app card added to all contact records, you can now continue to build the app card. The easiest way to quickly iterate is to start the local development server with thehs project dev
command:
- In the terminal, run
hs project dev
. - Follow the terminal prompts to select the account you want to use for local development.
- The terminal will start the local development server, then confirm once it’s running.
- With the server running, navigate back to the browser tab with the contact record and reload the page.
Developing locally
tag, indicating that the local development server is ready.

.jsx
or .tsx
files). If you need to make changes to other file types, such as a .json
configuration file, you’ll need to reupload the project and restart the local development server.
Next steps
Check out the following resources to build out the card’s appearance and functionality.- Consult the UI extension component reference documentation to add more UI components to the card.
- See all app card configuration options and more in the app card reference documentation.
- View all available utilities and methods available for UI extensions in the UI extension SDK reference.
- Learn how to fetch data for your app card with
hubspot.fetch()
.
Migrating a previously created app card
If you need to migrate an existing project with app cards to the developer platform, check out the following guides:If your existing project had a card with custom objects connected, confirm that you have the
crm.objects.custom.read
scope on your app before migration. For projects built before the latest version of 2025.2
, custom object cards could be built with only the crm.schemas.custom.read
scope required. In the latest version (2025.2
) of the developer platform, crm.objects.custom.read
is required. If you don’t include this scope, the build during the migration will fail with the following error:[ERROR] Build failed or timed out. Inspect the failure to update your build and retry the migration.Your customer-facing app will be unaffected, despite the status in the project details page. To fix the issue, add the crm.objects.custom.read
scope to your legacy app’s scopes, re-build the app on version 2023.2
, then re-try the migration.