backstage / backstage/community-plugins

🙏 Help wanted: Support new frontend system

Open
#2,458 1 comment 8 reactions 0 assignees View on GitHub
contribfest do-not-stale help wanted
Dominant language
TypeScript
Stars
422
Forks
697
Avg merge
2d 6h
Merged PRs (30d)
286

Description

**TL;DR:** We would like to encourage plugin authors and the community to add support for the [new frontend system](https://backstage.io/docs/frontend-system/) to plugins.

A list of plugins and their status could be seen here:

https://github.com/backstage/community-plugins/blob/main/docs/compatibility/new-frontend-system.md

## Existing frontend plugins

Here are some plugins that supports the new frontend system, links goes to the alpha entry point to learn from them:

* [ADR](https://github.com/backstage/community-plugins/blob/main/workspaces/adr/plugins/adr/src/alpha.tsx)
* [Announcements](https://github.com/backstage/community-plugins/blob/main/workspaces/announcements/plugins/announcements/src/alpha.ts)
* [Azure DevOps](https://github.com/backstage/community-plugins/blob/main/workspaces/azure-devops/plugins/azure-devops/src/alpha.ts)
* [CICD Statistics GitLab module](https://github.com/backstage/community-plugins/blob/main/workspaces/cicd-statistics/plugins/cicd-statistics-module-gitlab/src/alpha.ts)
* [CICD Statistics](https://github.com/backstage/community-plugins/blob/main/workspaces/cicd-statistics/plugins/cicd-statistics/src/alpha.ts)
* [Confluence](https://github.com/backstage/community-plugins/blob/main/workspaces/confluence/plugins/confluence/src/alpha.ts)
* [Explore](https://github.com/backstage/community-plugins/blob/main/workspaces/explore/plugins/explore/src/alpha.tsx)
* [GitHub Actions](https://github.com/backstage/community-plugins/blob/main/workspaces/github/plugins/github-actions/src/alpha.ts)
* [GitHub Issues](https://github.com/backstage/community-plugins/blob/main/workspaces/github/plugins/github-issues/src/alpha.ts)
* [GitHub PR Board](https://github.com/backstage/community-plugins/blob/main/workspaces/github-/plugins/github-pull-requests-board/src/alpha.ts)
* [Grafana](https://github.com/backstage/community-plugins/blob/main/workspaces/grafana/plugins/grafana/src/alpha.ts)
* [Graphiql](https://github.com/backstage/community-plugins/blob/main/workspaces/graphiql/plugins/graphiql/src/alpha.tsx)
* [Jenkins](https://github.com/backstage/community-plugins/blob/main/workspaces/jenkins/plugins/jenkins/src/alpha.ts)
* [Linguist](https://github.com/backstage/community-plugins/blob/main/workspaces/linguist/plugins/linguist/src/alpha.ts)
* [NPM](https://github.com/backstage/community-plugins/blob/main/workspaces/npm/plugins/npm/src/alpha.tsx)
* [Sentry](https://github.com/backstage/community-plugins/blob/main/workspaces/sentry/plugins/sentry/src/alpha.ts)
* [Sonarqube](https://github.com/backstage/community-plugins/blob/main/workspaces/sonarqube/plugins/sonarqube/src/alpha.ts)
* [Stack Overflow](https://github.com/backstage/community-plugins/blob/main/workspaces/stack-overflow/plugins/stack-overflow/src/alpha.tsx)
* [Tech Radar](https://github.com/backstage/community-plugins/blob/main/workspaces/tech-radar/plugins/tech-radar/src/alpha.tsx)

## Work in process

Please let us know if you have time to add the new frontend system to a plugin so we can share the effort.

Check the comments below; but I try to summarize it here.

## How do I help?

### Add alpha support to a frontend-plugin

1. Add to the frontend plugin `package.json`:

```json
"exports": {
".": "./src/index.ts",
"./alpha": "./src/alpha.tsx",
"./package.json": "./package.json"
},
"typesVersions": {
"*": {
"alpha": [
"src/alpha.tsx"
],
"package.json": [
"package.json"
]
}
},
```

2. Add the alpha export based on your needs to `src/alpha.tsx`, for example (many plugins splits this import up into multiple files):

```tsx
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';

/**
* Backstage frontend plugin.
*
* @alpha
*/
export default createFrontendPlugin({
id: 'your-plugin-id',
extensions: [
// TODO
],
});
```

For more details, check out the [migration guide for plugins](https://backstage.io/docs/frontend-system/building-plugins/migrating)

3. If your plugin workspace has an `packages/app` you can add an `packages/app-next` to test your plugin within a backstage app.

### Test new frontend system

See the [testing plugins](https://backstage.io/docs/frontend-system/building-plugins/testing) section in the new frontend system documentation.

Contributor guide

Open the contributing guide

Research direction

Start with docs/compatibility/new-frontend-system.md to choose a plugin without listed support, then compare its package.json and src/alpha.ts or src/alpha.tsx with the existing alpha examples linked in the issue. Read the frontend-system migration and testing guides before checking the plugin's workspace app setup. Done means the plugin exports alpha support and can be tested in the new frontend system.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.