docs/releases/v1.20.0-next.0-changelog.md
/openapi.json to validated routers for displaying their full OpenAPI spec in a standard endpoint.wrapInOpenApiTestServer that allows for proxied requests at runtime. This will support the new yarn backstage-repo-tools schema openapi test command.publishConfig.alphaTypes and .betaTypes fields that were used together with --experimental-type-build to generate /alpha and /beta entry points. Use the exports field to achieve this instead.--experimental-type-build option for package build.@esbuild-kit/* packages to using tsx. This also switches to using the new module loader register API when available, avoiding the experimental warning when starting backends.package.json available.EXPERIMENTAL_VITE flag for using vite as dev server instead of Webpackstdin when spawning backend child process for the start command. Fixing an issue where backend startup would hang.publishConfig.alphaTypes and .betaTypes fields that were used together with --experimental-type-build to generate /alpha and /beta entry points. Use the exports field to achieve this instead.IconComponent can now have a fontSize of inherit, which is useful for in-line icons.AnyRouteRefParams as a replacement for AnyParams, which is now deprecated./alpha export convertLegacyRouteRef, which is a temporary utility to allow existing route refs to be used with the new experimental packages.app.routes.bindings. The routing system used by createApp has been replaced by one that only supports route refs of the new format from @backstage/frontend-plugin-api. The requirement for route refs to have the same ID as their associated extension has been removed.app.extensions configuration schema.createApp now override both discovered and loaded features.Translation API on the new createApp.RouteRef, SubRouteRef, ExternalRouteRef, and related types. All exports from this package that previously relied on the types with the same name from @backstage/core-plugin-api now use the new types instead. To convert and existing legacy route ref to be compatible with the APIs from this package, use the convertLegacyRouteRef utility from @backstage/core-plugin-api/alpha.4e36abef14: Remove support for the deprecated --experimental-type-build option for package build.
6694b369a3: Adds a new command schema openapi test that performs runtime validation of your OpenAPI specs using your test data. Under the hood, we're using Optic to perform this check, really cool work by them!
To use this new command, you will have to run yarn add @useoptic/optic in the root of your repo.
DefaultEntityPresentationApi, which is an implementation of the
EntityPresentationApi that @backstage/plugin-catalog-react exposes through
its entityPresentationApiRef. This implementation is also by default made
available automatically by the catalog plugin, unless you replace it with a
custom one. It batch fetches and caches data from the catalog as needed for
display, and is customizable by adopters to add their own rendering functions.8a8445663b: Migrate catalog entity cards to new frontend system extension format.
e964c17db9: Use default extensions boundary and suspense on the alpha declarative createCatalogFilterExtension extension factory.
71c97e7d73: The `spec.lifecycle' field in entities will now always be rendered as a string.
6c2b872153: Add official support for React 18.
0bf6ebda88: Initial entity page implementation for new frontend system at /alpha, with an overview page enabled by default and the about card available as an optional card.
bb98953cb9: Create declarative extensions for the Catalog plugin; this initial plugin preset contains sidebar item, index page and filter extensions, all distributed via /alpha subpath.
The EntityPage will be migrated in a follow-up patch.
Updated dependencies
8d756968f9: Introduce a new optional config parameter catalog.stitchingStrategy.mode,
which can have the values 'immediate' (default) and 'deferred'. The default
is for stitching to work as it did before this change, which means that it
happens "in-band" (blocking) immediately when each processing task finishes.
When set to 'deferred', stitching is instead deferred to happen on a separate
asynchronous worker queue just like processing.
Deferred stitching should make performance smoother when ingesting large amounts of entities, and reduce p99 processing times and repeated over-stitching of hot spot entities when fan-out/fan-in in terms of relations is very large. It does however also come with some performance cost due to the queuing with how much wall-clock time some types of task take.
supertest pass through from @backstage/backend-openapi-utils.1e5b7d993a: Added an EntityPresentationApi and associated entityPresentationApiRef. This
API lets you control how references to entities (e.g. in links, headings,
iconography etc) are represented in the user interface.
Usage of this API is initially added to the EntityRefLink and EntityRefLinks
components, so that they can render richer, more correct representation of
entity refs. There's also a new EntityDisplayName component, which works just like
the EntityRefLink but without the link.
Along with that change, the fetchEntities and getTitle props of
EntityRefLinksProps are deprecated and no longer used, since the same need
instead is fulfilled (and by default always enabled) by the
entityPresentationApiRef.
1fd53fa0c6: The UserListPicker component has undergone improvements to enhance its performance.
The previous implementation inferred the number of owned and starred entities based on the entities available in the EntityListContext. The updated version no longer relies on the EntityListContext for inference, allowing for better decoupling.
The component now loads the entities' count asynchronously, resulting in improved performance and responsiveness. For this purpose, some of the exported filters such as EntityTagFilter, EntityOwnerFilter, EntityLifecycleFilter and EntityNamespaceFilter have now the getCatalogFilters method implemented.
/alpha subpath for creating entity page cards and content for the new frontend system.spec.type field in entities will now always be rendered as a string.@backstage/frontend-plugin-api.3fdffbb699: Release design improvements for the Scaffolder plugin and support v5 of @rjsf/* libraries.
This change should be non-breaking. If you're seeing typescript issues after migrating please open an issue
The next versions like createNextFieldExtension and NextScaffolderPage have been promoted to the public interface under createScaffolderFieldExtension and ScaffolderPage, so any older imports which are no longer found will need updating from @backstage/plugin-scaffolder/alpha or @backstage/plugin-scaffolder-react/alpha will need to be imported from @backstage/plugin-scaffolder and @backstage/plugin-scaffolder-react respectively.
The legacy versions are now available in /alpha under createLegacyFieldExtension and LegacyScaffolderPage if you're running into issues, but be aware that these will be removed in a next mainline release.
update: true in publish:github:pull-request scaffolder actiongithub:environment:create scaffolder action & improve related tests"exports" field for /alpha subpath export.github:webhook scaffolder action & improve related testspublish:github:pull-request scaffolder action & improve related tests3fdffbb699: Release design improvements for the Scaffolder plugin and support v5 of @rjsf/* libraries.
This change should be non-breaking. If you're seeing typescript issues after migrating please open an issue
The next versions like createNextFieldExtension and NextScaffolderPage have been promoted to the public interface under createScaffolderFieldExtension and ScaffolderPage, so any older imports which are no longer found will need updating from @backstage/plugin-scaffolder/alpha or @backstage/plugin-scaffolder-react/alpha will need to be imported from @backstage/plugin-scaffolder and @backstage/plugin-scaffolder-react respectively.
The legacy versions are now available in /alpha under createLegacyFieldExtension and LegacyScaffolderPage if you're running into issues, but be aware that these will be removed in a next mainline release.
a873a32a1f: Added support for the new backend system.
In your packages/backend/src/index.ts make the following changes:
import { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
// ... other feature additions
+ backend.add(import('@backstage/plugin-vault-backend');
backend.start();
If you use the new backend system, the token renewal task can be defined via configuration file:
vault:
baseUrl: <BASE_URL>
token: <TOKEN>
schedule:
+ frequency: ...
+ timeout: ...
+ # Other schedule options, such as scope or initialDelay
If the schedule is omitted or set to false no token renewal task will be scheduled.
If the value of schedule is set to true the renew will be scheduled hourly (the default).
In other cases (like in the diff above), the defined schedule will be used.
DEPRECATIONS: The interface VaultApi and the type VaultSecret are now deprecated. Import them from @backstage/plugin-vault-node.
default wrapping when dynamically importing CommonJS modules with default exports.core.type marker for AppRouter and FlatRoutes.81c8db2088: Fix RoutedTabs so that it does not explode without tabs.
6c2b872153: Add official support for React 18.
7bdc1b0a12: Fixed compatibility with Safari <16.3 by eliminating RegEx lookbehind in extractInitials.
This PR also changed how initials are generated resulting in John Jonathan Doe => JD instead of JJ.
71c97e7d73: Fixed the type declaration of DependencyGraphProps, the defs prop now expects JSX.Elements.
Updated dependencies
react-dom/client import to use import(...) rather than require(...).createRoot API from react-dom/client will now be used if present.prompt=consent from start method to fix #20641"exports" field for /alpha subpath export./alpha subpath.app.title configuration is now properly required to be a string.@rjsf/* as they're no longer needed/alpha subpath.react-grid-layout sub-dependency to version 1.3.4 while the horizontal resizing of the latest version is not fixed. For more details, see #20712."exports" field for /alpha subpath export."exports" field for /alpha subpath export."exports" field for /alpha subpath export.gitlab:projectAccessToken:create scaffolder action & improve related teststype in Template.v1beta3.schema.json schema"exports" field for /alpha subpath export.@backstage/frontend-plugin-api./alpha export.supertest pass through from @backstage/backend-openapi-utils.Lunr search engine implementation.SearchResultGroupLayout are now always explicitly rendered as strings by default.createSearchResultListItem extension factory."exports" field for /alpha subpath export./alpha subpath.b168d7e7ea: Deprecate package in favor of the new @backstage/plugin-search-backend-module-stack-overflow-collator module.
The search collator requestParams option is optional now, so its default value is { order: 'desc', sort: 'activity', site: 'stackoverflow' } as defined in the Try It section on the official Stack Overflow API documentation.
Updated dependencies
factRetrieverId to the fact retriever's logger metadata.@backstage/frontend-plugin-api.@backstage/frontend-plugin-api./alpha.react-dom/client import to use import(...) rather than require(...).createRoot API from react-dom/client will now be used if present."exports" field for /alpha subpath export.@backstage/frontend-plugin-api.@backstage/config"exports" field for /alpha subpath export.