docs/releases/v1.32.0-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.32.0
repo schema openapi test.264058c: The repo test command will no longer default to watch mode if the --since flag is provided.
55b8b84: BREAKING: The Jest configuration defined at @backstage/cli/config/jest no longer collects configuration defined in the "jest" field from all parent package.json files. Instead, it will only read and merge configuration from the package.json in the monorepo root if it exists, as well as the target package. In addition, configuration defined in the root package.json will now only be merged into each package configuration if it is a valid project-level configuration key.
6129076: BREAKING: Removed the following deprecated commands:
create: Use backstage-cli new insteadcreate-plugin: Use backstage-cli new insteadplugin:diff: Use backstage-cli fix insteadtest: Use backstage-cli repo test or backstage-cli package test insteadversions:check: Use yarn dedupe or yarn-deduplicate insteadclean: Use backstage-cli package clean insteadIn addition, the experimental install and onboard commands have been removed since they have not received any updates since their introduction and we're expecting usage to be low. If you where relying on these commands, please let us know by opening an issue towards the main Backstage repository.
ea16633: Preserve directory structure for CommonJS build output, just like ESM. This makes the build output more stable and easier to browse, and allows for more effective tree shaking and lazy imports.
520a383: Added functionality to the prepack script that will append the default export type for entry points to the exports object before publishing. This is to help with identifying the declarative integration points for plugins without needing to fetch or run the plugins first.
9625a97: The scaffolder-module template has been updated to use a more modern layout and new testing utilities for scaffolder actions.
03810d2: Remove unknown dependency diff
cebee4f: Added support for a new experimental EXPERIMENTAL_TRIM_NEXT_ENTRY flag which removes any ./next entry points present in packages when building and publishing.
54c8aa3: The check for react-dom/client will now properly always run from the target directory.
b676cc9: feat: experimentally support using rspack instead under EXPERIMENTAL_RSPACK env flag
094eaa3: Remove references to in-repo backend-common
95999c5: The backend plugin template for the new command has been updated to provide more guidance and use a more modern structure.
7955f9b: Tweaked the new package feature detection to not be active when building backend packages.
4bfc2ce: Updated the Vite implementation behind the EXPERIMENTAL_VITE flag to work with more recent versions of Backstage.
720a2f9: Updated dependency git-url-parse to ^15.0.0.
8f0898b: Updated dependency esbuild to ^0.24.0.
2c5ecf5: Support --max-warnings flag for package linting
88407c3: Running repo lint with the --successCache flag now respects .gitinore, and it ignores projects without a lint script.
8fe740d: Added a new --successCache option to the backstage-cli repo test and backstage-cli repo lint commands. The cache keeps track of successful runs and avoids re-running for individual packages if they haven't changed. This option is intended only to be used in CI.
In addition a --successCacheDir <path> option has also been added to be able to override the default cache directory.
55b8b84: The Jest configuration will now search for a src/setupTests.* file with any valid script extension, not only .ts.
79ba5a8: The LEGACY_BACKEND_START flag is now deprecated.
f0514c7: Disabled parsing of input source maps in the SWC transform for Jest.
Updated dependencies
bfd4bec: BREAKING PRODUCERS: The IconComponent no longer accepts fontSize="default". This has effectively been removed from Material-UI since its last two major versions, and has not worked properly for them in a long time.
This change should not have an effect on neither users of MUI4 nor MUI5/6, since the updated interface should still let you send the respective SvgIcon types into interfaces where relevant (e.g. as app icons).
@types/react to a peer dependency.ParamKeys leading to type mismatches across versionscreateApp and CreateAppFeatureLoader from @backstage/frontend-app-api, use the same createApp and CreateAppFeatureLoader import from @backstage/frontend-defaults instead.@types/react to a peer dependency.4a5ba19: Removed deprecated namespace option from createExtension and createExtensionBlueprint, including .make and .makeWithOverides, it's no longer necessary and will use the pluginId instead.
Removed deprecated createExtensionOverrides this should be replaced with createFrontendModule instead.
Removed deprecated BackstagePlugin type, use FrontendPlugin type instead from this same package.
bfd4bec: BREAKING PRODUCERS: The IconComponent no longer accepts fontSize="default". This has effectively been removed from Material-UI since its last two major versions, and has not worked properly for them in a long time.
This change should not have an effect on neither users of MUI4 nor MUI5/6, since the updated interface should still let you send the respective SvgIcon types into interfaces where relevant (e.g. as app icons).
e969dc7: Move @types/react to a peer dependency.
873e424: Internal refactor of usage of opaque types.
323aae8: It is now possible to override the blueprint parameters when overriding an extension created from a blueprint:
const myExtension = MyBlueprint.make({
params: {
myParam: 'myDefault',
},
});
const myOverride = myExtension.override({
params: {
myParam: 'myOverride',
},
});
const myFactoryOverride = myExtension.override({
factory(origFactory) {
return origFactory({
params: {
myParam: 'myOverride',
},
});
},
});
The provided parameters will be merged with the original parameters of the extension.
Updated dependencies
forBitbucketServer that uses correct OAuth scopes by default. Also updated forBitbucket method to allow overriding the default OAuth scopes.@types/react to a peer dependency.api-report.md to report.api.mdbackstage-repo-tools peer-deps for validating your usage of peer dependencies in your plugins. It currently supports react related peer dependencies. It also has a --fix mode for quickly fixing any issues that it finds.1f6706f: Properly log instructions when APIs do not match
35e735b: Fix issues with warnings in API reports not being checked or reported.
Due to the recent version bump of API Extractor you may now see a lot of ae-undocumented warnings,
these can be ignored using the -o option, for example, backstage-repo-tools api-reports -o ae-undocumented,ae-wrong-input-file-type.
248793e: Updated dependency @useoptic/optic to ^1.0.0.
Updated dependencies
9cc7dd6: Added a mockApis export, which will replace the MockX API implementation classes and their related types. This is analogous with the backend's mockServices.
DEPRECATED several old helpers:
MockAnalyticsApi, please use mockApis.analytics instead.MockConfigApi, please use mockApis.config instead.MockPermissionApi, please use mockApis.permission instead.MockStorageApi, please use mockApis.storage instead.MockTranslationApi, please use mockApis.translation instead.@types/react to a peer dependency.@types/react to a peer dependency.profileEmailMatchingUserEntityEmail sign-in resolver has been removed as it was using an insecure fallback for resolving user identities. See https://backstage.io/docs/auth/identity-resolver#sign-in-without-users-in-the-catalog for how to create a custom sign-in resolver if needed as a replacement.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.@types/react to a peer dependency./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.20241003170511_alter_target_in_locations.js to change the target column in the locations table to TEXT type.
Added a hash for the key column in the refresh_keys table.git-url-parse to ^15.0.0.catalog.processingInterval: false in app-config6343c8d: Fixes the event-based updates at BitbucketCloudEntityProvider.
Previously, this entity provider had optional event support for legacy backends
that could be enabled by passing catalogApi, events, and tokenManager.
For the new/current backend system, the catalogModuleBitbucketCloudEntityProvider
(catalog.bitbucket-cloud-entity-provider), event support was enabled by default.
A recent change removed tokenManager as a dependency from the module as well as removed it as input.
While this didn't break the instantiation of the module, it broke the event-based updates,
and led to a runtime misbehavior, accompanied by an info log message.
This change will replace the use of tokenManager with the use of auth (AuthService).
Additionally, to simplify, it will make catalogApi and events required dependencies.
For the current backend system, this change is transparent and doesn't require any action.
For the legacy backend system, this change will require you to pass those dependencies
if you didn't do it already.
BREAKING CHANGES:
(For legacy backend users only.)
Previously optional catalogApi, and events are required now.
A new required dependency auth was added.
/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.0801db6: Add catalog service mocks under the /testUtils subpath export.
You can now use e.g. const catalog = catalogApiMock.mock() in your test and then do assertions on catalog.getEntities without awkward type casting.
6812980: Added a new prop, disableTooltip to the EntityRefLink component
@types/react to a peer dependency.limit query parameter in visits API .list() function@types/react to a peer dependency.@rjsf/utils to 5.21.2.
Updated dependency @rjsf/core to 5.21.2.
Updated dependency @rjsf/material-ui to 5.21.2.
Updated dependency @rjsf/validator-ajv8 to 5.21.2.FormFieldBlueprint to create field extensions in the Scaffolder plugin/edit) by adding icons and descriptions that better describe what each page is for. Updated the header menu to link back to the scaffolder create page.EntityPicker is now more readable as it uses entity title instead of entity reference.defaultValue props in MultiEntityPicker@types/react to a peer dependency.TemplateEditorToolbarTemplatesMenu component.@rjsf/utils to 5.21.2.
Updated dependency @rjsf/core to 5.21.2.
Updated dependency @rjsf/material-ui to 5.21.2.
Updated dependency @rjsf/validator-ajv8 to 5.21.2.git-url-parse to ^15.0.0.useTemplateDirectory hook.TemplateEditorToolbarFilesMenu component./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.734c2d4: Add fetch:template:file scaffolder action to download a single file and template the contents. Example usage:
- id: fetch-file
name: Fetch File
action: fetch:template:file
input:
url: https://github.com/backstage/software-templates/blob/main/scaffolder-templates/create-react-app/skeleton/catalog-info.yaml
targetPath: './target/catalog-info.yaml'
values:
component_id: My Component
owner: Test
f1f0076: handle step.if: false
2f90932: Include step name and step id to checkpoint key
094eaa3: Remove references to in-repo backend-common
8f0898b: Updated dependency esbuild to ^0.24.0.
11e0752: Make it possible to manually retry the scaffolder template from the step it failed
Updated dependencies
/alpha.gitlab:group:ensureExists action to instead use oauth client.branch function instead of checkout function when creating branchFormFieldBlueprint to create field extensions in the Scaffolder pluginoverridableComponent BackstageTemplateStepperClassKey to template stepper to enable custom styling@types/react to a peer dependency.@rjsf/utils to 5.21.2.
Updated dependency @rjsf/core to 5.21.2.
Updated dependency @rjsf/material-ui to 5.21.2.
Updated dependency @rjsf/validator-ajv8 to 5.21.2./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export, they're available from the main package already/alpha export, they're available from the main package already/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.@types/react to a peer dependency.emptyState input optional on entity-content:techdocs extension so that
the default empty state extension works correctly.git-url-parse to ^15.0.0./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.@types/react to a peer dependency.externalLink to icon defaultsbitbucket-server-auth default API to set its environment based on the auth.environment config option instead of being hardcoded to development.ffd1f4a: Plugin lifecycle shutdown hooks are now performed before root lifecycle shutdown hooks.
fd6e6f4: build(deps): bump cookie from 0.6.0 to 0.7.0
094eaa3: Remove references to in-repo backend-common
04af116: The backend will no longer exit immediately if any plugin or modules fails to initialize. Instead, the backend will wait for all plugins and modules to either start up successfully or throw, and then shut down the backend if there were any initialization errors.
This fixes an issue where backend initialization errors in adjacent plugins during database schema migration could cause the database migrations to be stuck in a locked state.
Updated dependencies
4b60e0c: Small tweaks to API reports to make them valid
321a994: Sensitive internal fields on BackstageCredentials objects are now defined as read-only properties in order to minimize risk of leakage.
ffd1f4a: Plugin lifecycle shutdown hooks are now performed before root lifecycle shutdown hooks.
ffd1f4a: The database manager now attempts to close any database connections in a root lifecycle shutdown hook.
e36d12f: The task scheduler now attempts to abort any tasks if it detects that Backstage is being shut down.
fd6e6f4: build(deps): bump cookie from 0.6.0 to 0.7.0
094eaa3: Remove references to in-repo backend-common
720a2f9: Updated dependency git-url-parse to ^15.0.0.
920004b: Updating error message for getProjectId when fetching Gitlab project from its url to be more accurate
d7b44f0: Fix for backend shutdown hanging during local development due to SQLite connection shutdown never resolving.
8fd7deb: The default root HTTP service implementation will now pretty-print JSON responses in development.
If you are overriding the rootHttpRouterServiceFactory with a configure function that doesn't call applyDefaults, you can introduce this functionality by adding the following snippet inside configure:
if (process.env.NODE_ENV === 'development') {
app.set('json spaces', 2);
}
Updated dependencies
d18d494: Enhance and simplify the activation of the dynamic plugins feature:
DynamicPluginsProvider) is restored, since it is required for plugins to depend on it in order to get the details of loaded dynamic plugins (possibly with loading errors to be surfaced in some UI).dynamicPluginsFeatureLoader) is provided that allows a 1-liner activation of both the dynamic features and additional services or plugins required to have the dynamic plugins work correctly with dynamic plugins config schemas. Previous service factories or feature loaders are deprecated.e6c0550: Enhance the API of the DynamicPluginProvider (available as a service) to:
getScannedPackage() method that returns the ScannedPluginPackage from which a given plugin has been loaded,includeFailed argument in the plugins list retrieval methods, to include the plugins that could be successfully loaded (false by default).4c89e47: Allow passing an async module loader in the DynamicPluginsFeatureLoaderOptions.
094eaa3: Remove references to in-repo backend-common
2f88f88: Updated backend installation instructions.
Updated dependencies
cookie from 0.6.0 to 0.7.0createMockDirectory cleanup strategy has been changed, no longer requiring it to be called outside individual tests.lockfile.getDependencyTreeHash(name) utility.@types/jscodeshift to ^0.12.0.@types/react to a peer dependency.@types/react to a peer dependency.BackstagePlugin type and move to FrontendPlugin@types/react to a peer dependency.SidebarSubmenu core component that caused the nested menu to overlap with the sidebar when the user hovers over the pinned sidebar.Link component now accepts externalLinkIcon propenableExperimentalRedirectFlow config. If an error is caught during authentication, the user is redirected back to app origin with error query parameter containing the error message..yarnrc.yml in the template.Dockerfile to fix deprecated syntax.@types/react to a peer dependency.@material-ui/data-gridestree upgrade666d5b1: Disable the built-in SignInPage in createExtensionTester in order to not mess with existing tests
e969dc7: Move @types/react to a peer dependency.
873e424: Internal refactor of usage of opaque types.
0801db6: Added an ApiMock, analogous to ServiceMock from the backend test utils.
9cc7dd6: Added a mockApis export, which will replace the MockX API implementation classes and their related types. This is analogous with the backend's mockServices.
DEPRECATED several old helpers:
MockAnalyticsApi, please use mockApis.analytics instead.MockConfigApi, please use mockApis.config instead.MockPermissionApi, please use mockApis.permission instead.MockStorageApi, please use mockApis.storage instead.MockTranslationApi, please use mockApis.translation instead.Updated dependencies
git-url-parse to ^15.0.0.@types/react to a peer dependency.@types/react to a peer dependency.@types/react to a peer dependency.SignInPageExtension which by default uses guest auth, missing ApiExtensions for scmAuthAPP_CONFIG_* environment variables where not filtered by the configuration schema./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.@types/react to a peer dependency.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.skipUserProfile config flag to Microsoft authenticatorallowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the emailLocalPartMatchingUserEntityName sign-in resolver.allowedDomains option for the common emailLocalPartMatchingUserEntityName sign-in resolver.enableExperimentalRedirectFlow config. If an error is caught during authentication, the user is redirected back to app origin with error query parameter containing the error message.@types/react to a peer dependency./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.schedule config from being applied."/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.git-url-parse to ^15.0.0./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export, they're available from the main package already/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export, they're available from the main package already/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.e969dc7: Move @types/react to a peer dependency.
4d9f39e: Added InfoCard action attribute for CatalogGraphCard
const action = <Button title="Action Button" onClick={handleClickEvent()} />
<CatalogGraphCard action={action} />
Updated dependencies
@types/react to a peer dependency.git-url-parse to ^15.0.0.testUtils named export@types/react to a peer dependency.@types/react to a peer dependency.@types/react to a peer dependency.094eaa3: Remove references to in-repo backend-common
3109c24: The export for the new backend system at the /alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.
5c728ee: The events backend now has its own built-in event bus for distributing events across multiple backend instances. It exposes a new HTTP API under /bus/v1/ for publishing and reading events from the bus, as well as its own storage and notification mechanism for events.
The backing event store for the bus only supports scaled deployment if PostgreSQL is used as the DBMS. If SQLite or MySQL is used, the event bus will fall back to an in-memory store that does not support multiple backend instances.
The default EventsService implementation from @backstage/plugin-events-node has also been updated to use the new events bus.
Updated dependencies
/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.EventsService now uses the new event bus for distributing events across multiple backend instances if the events backend plugin is installed.@types/react to a peer dependency.@rjsf/utils to 5.21.2.
Updated dependency @rjsf/core to 5.21.2.
Updated dependency @rjsf/material-ui to 5.21.2.
Updated dependency @rjsf/validator-ajv8 to 5.21.2.@types/react to a peer dependency.@kubernetes-models/base to ^5.0.0.@kubernetes-models/apimachinery to ^2.0.0./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.@types/react to a peer dependency.@kubernetes-models/base to ^5.0.0.@kubernetes-models/apimachinery to ^2.0.0.@types/react to a peer dependency.@kubernetes-models/base to ^5.0.0.@kubernetes-models/apimachinery to ^2.0.0.@types/react to a peer dependency.@types/react to a peer dependency.@types/react to a peer dependency./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.@types/react to a peer dependency./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.azure-devops-node-api to ^14.0.0.reviewers input parameter to publish:bitbucketServer:pull-request/alpha.git-url-parse to ^15.0.0./alpha.8ce0c4c: Add github:branch-protection:create scaffolder action to set branch protection on an existing repository. Example usage:
- id: set-branch-protection
name: Set Branch Protection
action: github:branch-protection:create
input:
repoUrl: 'github.com?repo=backstage&owner=backstage'
branch: master
enforceAdmins: true # default
requiredApprovingReviewCount: 1 # default
requireBranchesToBeUpToDate: true # default
requireCodeOwnerReviews: true
dismissStaleReviews: true
requiredConversationResolution: true
094eaa3: Remove references to in-repo backend-common
Updated dependencies
/alpha./alpha./alpha.@types/react to a peer dependency.@types/react to a peer dependency./alpha export, they're available from the main package already/alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.@backstage-community/plugin-explore-common to ^0.0.6./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import./alpha.@types/react to a peer dependency.@types/react to a peer dependency.@types/react to a peer dependency.@types/react to a peer dependency.@types/react to a peer dependency.git-url-parse to ^15.0.0.@smithy/node-http-handler to ^3.0.0.git-url-parse to ^15.0.0.@types/react to a peer dependency.@types/react to a peer dependency.useUserProfile will now use the user's picture stored in the catalog as a fallback if the identity provider doesn't return a picture./alpha export is now also available via the main entry point, which means that you can remove the /alpha suffix from the import.