Skip to content

Conversation

@Zaperex
Copy link
Owner

@Zaperex Zaperex commented Dec 1, 2025

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)

Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>
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';

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.


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

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

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 requested a review from davidfestal December 5, 2025 21:58
Signed-off-by: Frank Kong <frkong@redhat.com>
Signed-off-by: Frank Kong <frkong@redhat.com>

export default createApp({
features: [
catalogPlugin,

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'}}",

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 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/).

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
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.

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.

3 participants