Skip to main content
Version: Next

Release v1.42.0-next.3

Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.42.0-next.3

@backstage/cli@0.34.0-next.2

Minor Changes

  • 923ceb2: BREAKING: The new app build based on Rspack is now the default, and the EXPERIMENTAL_RSPACK flag has been removed. To revert to the old behavior, set the LEGACY_WEBPACK_BUILD environment flag and install the following optional dependencies:

    {
    "dependencies": {
    "@module-federation/enhanced": "^0.9.0",
    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
    "esbuild-loader": "^4.0.0",
    "eslint-webpack-plugin": "^4.2.0",
    "fork-ts-checker-webpack-plugin": "^9.0.0",
    "mini-css-extract-plugin": "^2.4.2",
    "terser-webpack-plugin": "^5.1.3",
    "webpack": "^5.96.0",
    "webpack-dev-server": "^5.0.0"
    }
    }

    If you do encounter a blocking issue that forces you to use the old WebPack build, please open an issue explaining the problem. The WebPack build will be removed in a future release.

  • eda80c7: BREAKING: Removed support for .icon.svg imports, which have been deprecated since the 1.19 release.

Patch Changes

  • 8b1bf6e: Deprecated new frontend system config setting app.experimental.packages to just app.packages. The old config will continue working for the time being, but may be removed in a future release.
  • ead626f: The Node.js transform in @backstage/cli/config/nodeTransformHooks.mjs now supports the built-in type stripping in Node.js, which is enabled by default from v22.18.0.

@backstage/frontend-app-api@0.12.0-next.3

Minor Changes

  • 8e21c4d: Use an app plugin for built-in extension app node specs.

  • 8e21c4d: The AppNodeSpec.plugin property is now required.

  • 5e12252: BREAKING: Restructured some of option fields of createApp and createSpecializedApp.

    • For createApp, all option fields except features and bindRoutes have been moved into a new advanced object field.
    • For createSpecializedApp, all option fields except features, config, and bindRoutes have been moved into a new advanced object field.

    This helps highlight that some options are meant to rarely be needed or used, and simplifies the usage of those options that are almost always required.

    As an example, if you used to supply a custom config loader, you would update your code as follows:

     createApp({
    features: [...],
    - configLoader: new MyCustomLoader(),
    + advanced: {
    + configLoader: new MyCustomLoader(),
    + },
    })

Patch Changes

  • f3f9d57: Renaming the getNodesByRoutePath parameter from sourcePath to routePath
  • 8b1bf6e: Deprecated new frontend system config setting app.experimental.packages to just app.packages. The old config will continue working for the time being, but may be removed in a future release.
  • fda1bbc: Added a default implementation of the SwappableComponentsApi and removing the legacy ComponentsApi implementation
  • 1c2cc37: Improved runtime error message clarity when extension factories don't return an iterable object.
  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/frontend-defaults@0.3.0-next.3

@backstage/frontend-defaults@0.3.0-next.3

Minor Changes

  • 5e12252: BREAKING: Restructured some of option fields of createApp and createSpecializedApp.

    • For createApp, all option fields except features and bindRoutes have been moved into a new advanced object field.
    • For createSpecializedApp, all option fields except features, config, and bindRoutes have been moved into a new advanced object field.

    This helps highlight that some options are meant to rarely be needed or used, and simplifies the usage of those options that are almost always required.

    As an example, if you used to supply a custom config loader, you would update your code as follows:

     createApp({
    features: [...],
    - configLoader: new MyCustomLoader(),
    + advanced: {
    + configLoader: new MyCustomLoader(),
    + },
    })

Patch Changes

  • 8b1bf6e: Deprecated new frontend system config setting app.experimental.packages to just app.packages. The old config will continue working for the time being, but may be removed in a future release.
  • e5a0a99: BREAKING: The loadingComponent option has been renamed to loadingElement, which is now found under advanced.loadingElement. The default loading element has also been switched to <Progress /> from @backstage/core-components. This is of course an improvement over the previous "Loading..." text, but also helps prevent flicker when the app loading is fast.
  • Updated dependencies
    • @backstage/plugin-app@0.2.0-next.2
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/frontend-app-api@0.12.0-next.3
    • @backstage/core-components@0.17.5-next.2

@backstage/frontend-plugin-api@0.11.0-next.2

Minor Changes

  • fda1bbc: BREAKING: The component system has been overhauled to use SwappableComponent instead of ComponentRef. Several APIs have been removed and replaced:

    • Removed: createComponentRef, createComponentExtension, ComponentRef, ComponentsApi, componentsApiRef, useComponentRef, coreComponentRefs
    • Added: createSwappableComponent, SwappableComponentBlueprint, SwappableComponentRef, SwappableComponentsApi, swappableComponentsApiRef

    BREAKING: The default componentRefs and exported Core*Props have been removed and have replacement SwappableComponents and revised type names instead.

    • The errorBoundaryFallback component and CoreErrorBoundaryFallbackProps type have been replaced with ErrorDisplay swappable component and CoreErrorDisplayProps respectively.
    • The progress component and CoreProgressProps type have been replaced with Progress swappable component and ProgressProps respectively.
    • The notFoundErrorPage component and CoreNotFoundErrorPageProps type have been replaced with NotFoundErrorPage swappable component and NotFoundErrorPageProps respectively.

    Migration for creating swappable components:

    // OLD: Using createComponentRef and createComponentExtension
    import {
    createComponentRef,
    createComponentExtension,
    } from '@backstage/frontend-plugin-api';

    const myComponentRef = createComponentRef<{ title: string }>({
    id: 'my-plugin.my-component',
    });

    const myComponentExtension = createComponentExtension({
    ref: myComponentRef,
    loader: {
    lazy: () => import('./MyComponent').then(m => m.MyComponent),
    },
    });

    // NEW: Using createSwappableComponent and SwappableComponentBlueprint
    import {
    createSwappableComponent,
    SwappableComponentBlueprint,
    } from '@backstage/frontend-plugin-api';

    const MySwappableComponent = createSwappableComponent({
    id: 'my-plugin.my-component',
    loader: () => import('./MyComponent').then(m => m.MyComponent),
    });

    const myComponentExtension = SwappableComponentBlueprint.make({
    name: 'my-component',
    params: {
    component: MySwappableComponent,
    loader: () => import('./MyComponent').then(m => m.MyComponent),
    },
    });

    Migration for using components:

    // OLD: Using ComponentsApi and useComponentRef
    import {
    useComponentRef,
    componentsApiRef,
    useApi,
    coreComponentRefs,
    } from '@backstage/frontend-plugin-api';

    const MyComponent = useComponentRef(myComponentRef);
    const ProgressComponent = useComponentRef(coreComponentRefs.progress);

// NEW: Direct component usage import { Progress } from '@backstage/frontend-plugin-api';

// Use directly as React Component


**Migration for core component references:**

```tsx
// OLD: Core component refs
import { coreComponentRefs } from '@backstage/frontend-plugin-api';

coreComponentRefs.progress
coreComponentRefs.notFoundErrorPage
coreComponentRefs.errorBoundaryFallback

// NEW: Direct swappable component imports
import { Progress, NotFoundErrorPage, ErrorDisplay } from '@backstage/frontend-plugin-api';

// Use directly as React components
<Progress />
<NotFoundErrorPage />
<ErrorDisplay plugin={plugin} error={error} resetError={resetError} />
  • 6a75e00: BREAKING: Removed the deprecated createFrontendPlugin variant where the plugin ID is passed via an id option. To update existing code, switch to using the pluginId option instead.
  • 1e6410b: BREAKING: The ResolveInputValueOverrides type is no longer exported.

Patch Changes

  • 9831f4e: Adjusted the dialog API types to have more sensible defaults
  • 1c2cc37: Improved runtime error message clarity when extension factories don't return an iterable object.
  • 24558f0: Added inline documentation for createExtension, createExtensionBlueprint, createFrontendPlugin, and createFrontendModule.
  • Updated dependencies
    • @backstage/core-components@0.17.5-next.2

@backstage/ui@0.7.0-next.3

Minor Changes

  • 0615e54: We are moving our DataTable component to React Aria. We removed our DataTable to only use Table as a single and opinionated option for tables. This new structure is made possible by using React Aria under the hood.

Patch Changes

  • 230b410: Breaking change Move breadcrumb to fit in the HeaderPage instead of the Header in Backstage UI.
  • 8bdc491: Remove stylesheet import from Select component.
  • 404b426: Add startCollapsed prop on the SearchField component in BUI.

@backstage/plugin-app@0.2.0-next.2

Minor Changes

  • fda1bbc: BREAKING: The componentsApi implementation has been removed from the plugin and replaced with the new SwappableComponentsApi instead.

    If you were overriding the componentsApi implementation, you can now use the new SwappableComponentsApi instead.

    // old
    appPlugin.getExtension('api:app/components').override(...)

    // new
    appPlugin.getExtension('api:app/swappable-components').override(...)

Patch Changes

  • 91cbdf4: Log a warning when SwappableComponent extensions are installed outside of using the app plugin

  • fda1bbc: Default implementations of core components are now provided by this package.

    A backwards compatible componentsApi implementation is also provided from this package which uses the SwappableComponentsApi as the implementation. This backwards compatible wrapper will be removed in the future.

  • 9831f4e: Adjusted the dialog API types to have more sensible defaults

  • Updated dependencies

    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/core-components@0.17.5-next.2

@backstage/plugin-kubernetes-backend@0.20.0-next.1

Minor Changes

  • 759568d: BREAKING CHANGE: Removed support for the legacy backend system. This means that the deprecated createRouter and KubernetesBuilder and related types have been removed. Please refer to the relevant documentation to configure the Kubernetes plugin.

    BREAKING CHANGE: The deprecated types AuthenticationStrategy, AuthMetadata, ClusterDetails, CustomResource, CustomResourcesByEntity, FetchResponseWrapper, KubernetesBuilder, KubernetesBuilderReturn, KubernetesClustersSupplier, KubernetesCredential, KubernetesEnvironment, KubernetesFetcher, KubernetesObjectsProvider, KubernetesObjectTypes, KubernetesServiceLocator,ObjectFetchParams, ObjectToFetch,RouterOptions and ServiceLocatorRequestContext should all now be imported from @backstage/plugin-kubernetes-node.

Patch Changes

  • Updated dependencies
    • @backstage/plugin-kubernetes-node@0.3.3-next.0

@backstage/plugin-scaffolder@1.34.0-next.3

Minor Changes

  • b1c0696: Add resizable panels width for the editor and preview panels in the template editor and template form playground layouts. Users can now resize these panels by dragging the divider between the two areas.

Patch Changes

  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/core-compat-api@0.5.0-next.3
    • @backstage/core-components@0.17.5-next.2

@backstage/plugin-scaffolder-backend@2.2.0-next.1

Minor Changes

  • 2032660: Fixed fs:readdir action example
  • 11dc90f: Implement max length for scaffolder auditor audit logging with default of 256

Patch Changes

  • Updated dependencies
    • @backstage/backend-openapi-utils@0.6.0-next.1
    • @backstage/plugin-scaffolder-backend-module-gitlab@0.9.4-next.1
    • @backstage/plugin-scaffolder-backend-module-github@0.8.2-next.1

@backstage/backend-openapi-utils@0.6.0-next.1

Patch Changes

  • 3760352: Update express-openapi-validator to 5.5.8 to fix security vulnerability in transitive dependency multer

@backstage/core-compat-api@0.5.0-next.3

Patch Changes

  • fda1bbc: The compatWrapper has been switched to use the new SwappableComponentsApi instead of the old ComponentsApi in its bridging to the old frontend system.
  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2

@backstage/core-components@0.17.5-next.2

Patch Changes

  • 77467bb: Updated dependency linkifyjs to 4.3.2.

@backstage/create-app@0.7.2-next.3

Patch Changes

  • 8b1bf6e: Updated the app.packages config setting now that it no longer is experimental

@backstage/repo-tools@0.15.1-next.1

Patch Changes

  • 33060b5: Removed build-in ignore of the packages/canon package for knip reports.

@backstage/plugin-api-docs@0.12.10-next.3

Patch Changes

  • 8b1bf6e: Updated README instructions for the new frontend system
  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/core-compat-api@0.5.0-next.3
    • @backstage/core-components@0.17.5-next.2

@backstage/plugin-auth-backend-module-okta-provider@0.2.6-next.1

Patch Changes

  • 94476d2: Updated dependency @davidzemon/passport-okta-oauth to ^0.0.7.

@backstage/plugin-catalog-backend@3.0.1-next.1

Patch Changes

  • 1752be6: Attempt to circumvent event listener memory leak in compression middleware

  • 9dd213c: Make the processing hash calculation not care about the order of the processors.

    This change does not affect the behavior of the catalog, but it will make the processing hash calculation more robust against changes in the order of processors. This should lead to more stable processing hashes, which in turn should lead to fewer unnecessary reprocessing of entities.

    After deploying this fix, you may see a period of increased processing and stitching, but this should stabilize over time as the processing hashes become more consistent.

  • fa6fa60: Fixed getLocationByEntity to use original_value instead of value when querying search table

  • Updated dependencies

    • @backstage/backend-openapi-utils@0.6.0-next.1

@backstage/plugin-catalog-backend-module-github@0.10.2-next.1

Patch Changes

  • f6c64d1: Fix GitHub catalog entity provider branch matching on event processing.
  • Updated dependencies
    • @backstage/plugin-catalog-backend@3.0.1-next.1

@backstage/plugin-catalog-graph@0.4.22-next.3

Patch Changes

  • 8b1bf6e: Updated README instructions for the new frontend system
  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/core-compat-api@0.5.0-next.3
    • @backstage/core-components@0.17.5-next.2

@backstage/plugin-events-backend-module-kafka@0.1.2-next.1

Patch Changes

  • 0d38009: Remove luxon dependency and minor internal improvements

@backstage/plugin-kubernetes@0.12.10-next.3

Patch Changes

  • 3025cf5: Removed the kubernetes content padding to avoid double padding on k8s entity page
  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/core-compat-api@0.5.0-next.3
    • @backstage/core-components@0.17.5-next.2

@backstage/plugin-org@0.6.42-next.3

Patch Changes

  • 8b1bf6e: Updated README instructions for the new frontend system
  • Updated dependencies
    • @backstage/frontend-plugin-api@0.11.0-next.2
    • @backstage/core-compat-api@0.5.0-next.3
    • @backstage/core-components@0.17.5-next.2

@backstage/plugin-proxy-backend@0.6.5-next.1

Patch Changes

  • 0810cd8: correct rewrite rule to avoid extra subpath in proxy path

@backstage/plugin-scaffolder-backend-module-github@0.8.2-next.1

Patch Changes

  • a22cce0: Fixed bug in the customProperties type which was preventing it being used to set a list of values against a key (e.g. for multi-select fields)

@backstage/plugin-scaffolder-backend-module-gitlab@0.9.4-next.1

Patch Changes

  • 5bb870b: Show additional information about the cause in error messages from GitLab

example-backend@0.0.41-next.1

Patch Changes

  • Updated dependencies
    • @backstage/plugin-catalog-backend@3.0.1-next.1
    • @backstage/plugin-kubernetes-backend@0.20.0-next.1
    • @backstage/plugin-scaffolder-backend@2.2.0-next.1
    • @backstage/plugin-proxy-backend@0.6.5-next.1
    • @backstage/plugin-scaffolder-backend-module-github@0.8.2-next.1