Skip to content

chore: add template for dynamic plugins - #1

Open
Zaperex wants to merge 11 commits into
masterfrom
add-dynamic-plugins-template
Open

chore: add template for dynamic plugins#1
Zaperex wants to merge 11 commits into
masterfrom
add-dynamic-plugins-template

Conversation

@Zaperex

@Zaperex Zaperex commented Dec 1, 2025

Copy link
Copy Markdown
Owner

Hey, I just made a Pull Request!

This PR introduces a new create-app template (dynamic-plugins-next-app) that scaffolds a Backstage application pre-configured with dynamic plugins support using the new frontend system and module federation.

Having a default template with dynamic plugins already setup is the first step in helping expose this feature to more users and make it easier for the community to experiment and contribute to this area.

The frontend-dynamic-feature-loader and backend-dynamic-feature-service will function as no-op features when loaded without any configurations so this would not be a breaking change if the user ends up not using these features.

How to test:

cd packages/create-app && yarn build
npx @backstage/create-app --template dynamic-plugins-next-app
cd my-backstage-app
yarn install
cp /path/to/<built-dynamic-plugin> ./dynamic-plugins-root/<built-dynamic-plugin>
yarn start

✔️ Checklist

  • A changeset describing the change and affected packages. (more info)
  • Added or updated documentation
  • Tests for new functionality and regression tests for bug fixes
  • Screenshots attached (for UI changes)
  • All your commits have a Signed-off-by line in the message. (more info)

Comment thread .changeset/brave-plugins-dance.md Outdated
import { version as frontendDynamicFeatureLoader } from '../../../frontend-dynamic-feature-loader/package.json';
import { version as frontendPluginApi } from '../../../frontend-plugin-api/package.json';
import { version as backendDefaults } from '../../../backend-defaults/package.json';
import { version as backendDynamicFeatureService } from '../../../backend-dynamic-feature-service/package.json';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When PR backstage#30967 is merged (hopefully), you would need to add the new @backstage/module-federation-common package introduced by this PR.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Module federation PR has been merged: backstage#30967.
So @backstage/module-federation-common should be added to this list now.


```bash
cd /path/to/your-frontend-plugin
yarn build --role frontend-dynamic-container

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When PR backstage#30967 is merged (hopefully), we would be able to change this to yarn build --module-federation

Comment thread packages/create-app/templates/dynamic-plugins-next-app/app-config.yaml.hbs Outdated
@Zaperex
Zaperex requested a review from davidfestal December 5, 2025 21:58

export default createApp({
features: [
catalogPlugin,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't we conclude that we wanted to have:

  • catalog,
  • search,
  • scaffolder,
  • techdocs
  • catalog-import ?
    ?

Comment on lines +26 to +32
"@backstage/plugin-catalog": "^{{ version '@backstage/plugin-catalog'}}",
"@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}",
"@backstage/plugin-org": "^{{ version '@backstage/plugin-org'}}",
"@backstage/plugin-scaffolder": "^{{ version '@backstage/plugin-scaffolder'}}",
"@backstage/plugin-search": "^{{ version '@backstage/plugin-search'}}",
"@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}",
"@backstage/plugin-user-settings": "^{{ version '@backstage/plugin-user-settings'}}",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be removed isn't it ?

Comment thread packages/create-app/templates/dynamic-features-next-app/packages/app/README.md Outdated
Comment on lines +15 to +30
To run the example frontend, first go to the project root and run

```bash
yarn install
```

You should only need to do this once.

After that, go to the `packages/app` directory and run

```bash
yarn start
```

The frontend starts up on port 3000 per default.
For more information on setting up the new frontend system, see the [Backstage documentation](https://backstage.io/docs/frontend-system/).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not really true.
With Dynamic plugins, the frontend should be started from the backend, in order to also inject the additional config schemas of the dynamic plugins.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I guess I should just explicitly mention that dynamic plugins need the backend to be running to properly work as well.

@Zaperex
Zaperex force-pushed the add-dynamic-plugins-template branch from 0d67f29 to d539e4c Compare February 18, 2026 15:16
Zaperex added 10 commits March 18, 2026 12:51
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
@Zaperex
Zaperex force-pushed the add-dynamic-plugins-template branch from 1c1f92e to 710c83c Compare March 18, 2026 16:52
Signed-off-by: Frank Kong <frkong@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants