# Release v1.42.0-next.3
Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.42.0-next.3](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](https://rspack.dev/) 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:
```json
{
"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](https://github.com/backstage/backstage/issues) 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:
```diff
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:
```diff
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 `` 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:**
```tsx
// 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:**
```tsx
// 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
````
- 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.
```ts
// 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](https://backstage.io/docs/features/kubernetes/installation/#adding-kubernetes-backend-plugin) 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