Back to Backstage

Release v1.52.0-next.0

docs/releases/v1.52.0-next.0-changelog.md

1.52.0-next.052.5 KB
Original Source

Release v1.52.0-next.0

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

@backstage/[email protected]

Minor Changes

  • 8f20cc2: CatalogApi.queryEntities now accepts a totalItems option ('include' or 'exclude', default 'include') on initial requests. Pass 'exclude' to skip the totalItems count when the caller doesn't need it.

@backstage/[email protected]

Minor Changes

  • 8f20cc2: /entities/by-query now accepts a totalItems parameter ('include' or 'exclude', default 'include') that controls whether the response's totalItems count is computed. Pass 'exclude' to skip the count entirely when the caller doesn't need it — useful for cursor-paginated user interfaces that only display the count cosmetically. The accepted values list is forward-compatible: future modes (e.g. approximate counts) can be added without breaking existing callers.

    The internal QueryEntitiesInitialRequest.skipTotalItems option has been replaced by totalItems: 'include' | 'exclude'. Note that skipTotalItems was never exposed as a REST API parameter, so this is only a TypeScript-level change affecting direct callers of EntitiesCatalog.queryEntities.

    Sort field keys are now lowercased before comparing against search.key, fixing silent mismatches for camelCase field names. The NULLS LAST ordering clause has been removed since NULL sort values are already excluded by the WHERE clause.

  • dc7678c: Removed the immediate mode stitching strategy. All stitching now uses the deferred mode, which processes entities asynchronously via a worker queue. If your configuration includes catalog.stitchingStrategy.mode: 'immediate', it will be ignored with a deprecation warning. The pollingInterval and stitchTimeout settings continue to work as before.

Patch Changes

  • 39c5fbb: Added extended multi-column statistics on (key, value) in the search table (PostgreSQL only). This tells the query planner about the correlation between the key and value columns, fixing severe row count estimation errors on compound filter queries. Without this, the planner could choose to materialize and sort thousands of rows instead of using the LIMIT short-circuit index scan — causing 10-40x slower catalog list views when multiple filters are active.

  • 4829e89: Split the queryEntities list and count into separate queries instead of a multi-reference CTE. When the filtered CTE was referenced twice (once for the count, once for the data), PostgreSQL refused to inline it, forcing full materialization of the filtered set before applying LIMIT. By running the count as a standalone query, the list CTE is only referenced once, allowing the planner to short-circuit on LIMIT and return the first page in milliseconds instead of waiting for the full filtered set to materialize.

    The standalone count query also fixes a pre-existing bug where totalItems was inflated for entities with multi-valued sort fields (e.g. tags). The old CTE-based count counted search rows, so an entity with 3 tags would be counted 3 times. The new count uses EXISTS to count distinct entities, aligning totalItems with the number of entities actually reachable through cursor pagination.

  • 774d698: Fixed a race condition in the stitch queue and entity processing claim logic where SELECT FOR UPDATE SKIP LOCKED row locks were released before the subsequent timestamp bump, allowing multiple workers to claim the same rows. Both the select and update now run inside a single transaction for MySQL and PostgreSQL.

  • 0b8b677: Improved stitch queue semantics to prevent overlapping stitches for the same entity. New stitch requests that arrive while a stitch is in progress now only update the ticket (not the timestamp), so the in-progress worker is not interrupted. When the worker completes and detects a pending re-stitch, the queue entry becomes immediately eligible for pickup instead of waiting for the timeout period.

  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 3e5acb5: Extended the RepoOwnerPicker implementation with a custom variant for GitLab.

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • a07e6a3: Updated AzureBlobStorageUrlReader to reference the correctly-named AzureBlobStorageIntegration type from @backstage/integration. The previously-used AzureBlobStorageIntergation is now an alias for the new type and remains a valid argument to the constructor.
  • def82d4: Fixed the built-in rate limiter throwing a validation error and refusing to start when backend.rateLimit is enabled. Requests are now keyed using the address normalization helper from express-rate-limit, which is required by newer versions of that library and ensures IPv6 clients are grouped by their address block rather than by individual address.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • a1971ea: Suppress false-positive @protobufjs/inquire "Critical dependency" warning in the bundler. Since protobufjs 7.5.9, the dynamic require path in inquire is no longer exercised, but webpack/rspack still flags it during static analysis.
  • 8007b58: Updated dependency embedded-postgres to 18.3.0-beta.17.

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • e0889a3: chore(deps): bump qs from 6.15.1 to 6.15.2
  • a07e6a3: Added the correctly-spelled 'header' literal to the TableFiltersClassKey union type and deprecated the previous typoed 'heder' literal. The generated CSS class with the old key is preserved for backwards compatibility; switch to 'header' to avoid future removal.
  • 8add9b9: Fixed the proxy-based sign-in page failing to read the session token when the proxy issues a token whose payload is encoded using the URL-safe base64 alphabet. Such tokens are now decoded correctly so sign-in no longer breaks.

@backstage/[email protected]

Patch Changes

  • Bumped create-app version.

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 62dd4fc: Added a mountPath option to renderInTestApp that controls the route path pattern the test element is rendered at. When set, the element is wrapped in a <Route> with the given path, enabling useParams() to extract route parameters from the URL. Use together with initialRouteEntries to set a concrete URL that matches the pattern. This is useful for testing page components that depend on URL parameters, such as entity pages that use useRouteRefParams.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

  • a07e6a3: Added the correctly-spelled AzureBlobStorageIntegration class export and deprecated the previous typoed AzureBlobStorageIntergation export. Existing usage of AzureBlobStorageIntergation continues to work; switch to AzureBlobStorageIntegration to avoid future removal.

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@techdocs/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • ca450be: Added a new app.disablePublicEntryPoint config option that allows you to opt out of the automatic public sign-in entry point. When set to true, the app backend will skip serving the public entry point to unauthenticated users, even if the app was bundled with an index-public-experimental entry point.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/plugin-auth-backend-module-bitbucket-server-provider@0.2.16-next.0

Patch Changes

@backstage/plugin-auth-backend-module-cloudflare-access-provider@0.4.16-next.0

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • d8757b1: The entity list provider now fetches the entity list and the total count as two separate parallel requests when using cursor or offset pagination. The list query skips the expensive count computation (using totalItems: 'exclude'), so the table populates immediately. The count arrives asynchronously and updates the title. A new totalItemsLoading field is exposed on EntityListContextProps so consumers can distinguish a stale count from a fresh one.

    The catalog table now keeps stale rows visible during filter changes and page navigation instead of replacing the entire table body with a spinner. The full-table spinner is only shown on the very first load when no data exists yet. The entity count in the title is dimmed while the count is refreshing, and a small spinner appears next to the title while rows are loading.

  • 82cf16f: Added CatalogExportButton, which adds CSV and JSON export support to the CatalogIndexPage.

  • a07e6a3: Added the correctly-spelled RelatedEntitiesCard.domainEntityColumns static property and deprecated the previous typoed RelatedEntitiesCard.domainEntityColums property. Existing references to the old property continue to work; switch to domainEntityColumns to avoid future removal.

  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/plugin-catalog-backend-module-incremental-ingestion@0.7.13-next.0

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.21-next.0

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • d8757b1: The entity list provider now fetches the entity list and the total count as two separate parallel requests when using cursor or offset pagination. The list query skips the expensive count computation (using totalItems: 'exclude'), so the table populates immediately. The count arrives asynchronously and updates the title. A new totalItemsLoading field is exposed on EntityListContextProps so consumers can distinguish a stale count from a fresh one.

    The catalog table now keeps stale rows visible during filter changes and page navigation instead of replacing the entire table body with a spinner. The full-table spinner is only shown on the very first load when no data exists yet. The entity count in the title is dimmed while the count is refreshing, and a small spinner appears next to the title while rows are loading.

  • e0889a3: chore(deps): bump qs from 6.15.1 to 6.15.2

  • 7c20545: Fixed redundant API calls during entity list initialization. Filter components that register their initial state in quick succession (e.g. EntityKindPicker, UserListPicker, EntityTagPicker) no longer trigger multiple identical fetches. Frontend-only filter changes such as toggling the user list are now applied synchronously without a network round-trip.

  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • a07e6a3: Added the correctly-spelled 'widgetSettingsOverlay.editSettingsTooltip' translation key in homeTranslationRef and deprecated the previous typoed 'widgetSettingsOverlay.editSettingsTooptip' key. Existing references to the old key continue to work; switch to the new key to avoid future removal.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.22-next.0

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/plugin-search-backend-module-stack-overflow-collator@0.3.21-next.0

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • e0889a3: chore(deps): bump qs from 6.15.1 to 6.15.2
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

@internal/[email protected]

Patch Changes

[email protected]

Patch Changes

@internal/[email protected]

Patch Changes

@internal/[email protected]

Patch Changes