Skip to content

Bump @backstage/plugin-catalog-backend from 1.32.1 to 3.8.0 in /packages/backend#105

Merged
liamfallon merged 2 commits into
mainfrom
dependabot/npm_and_yarn/packages/backend/backstage/plugin-catalog-backend-3.7.1
Jul 2, 2026
Merged

Bump @backstage/plugin-catalog-backend from 1.32.1 to 3.8.0 in /packages/backend#105
liamfallon merged 2 commits into
mainfrom
dependabot/npm_and_yarn/packages/backend/backstage/plugin-catalog-backend-3.7.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 9, 2026

Copy link
Copy Markdown

Bumps @backstage/plugin-catalog-backend from 1.32.1 to 3.8.0.

Release notes

Sourced from @​backstage/plugin-catalog-backend's releases.

v1.53.0-next.1

See docs/releases/v1.53.0-next.1-changelog.md for more information.

v1.53.0-next.0

See docs/releases/v1.53.0-next.0-changelog.md for more information.

v1.52.1

This patch release fixes the following issues:

  • Internal refactor of the specialized app sign-in runtime to initialize it once instead of reassigning it.
  • Fix scheduler tasks stuck with NULL next_run_start_at when switching from manual trigger to cadence
  • Fix broken configuration schema in @backstage/plugin-kubernetes-react.

v1.52.0

These are the release notes for the v1.52.0 release of Backstage.

A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done.

Highlights

BREAKING: Default discovery API changed to FrontendHostDiscovery

The default discovery API implementation in @backstage/plugin-app has been changed to FrontendHostDiscovery, which supports the discovery.endpoints configuration for per-plugin endpoint overrides. This means the frontend will now honor discovery.endpoints configuration, including string target values. If you currently use internal-only targets there, update them to the object form and move the internal URL to target.internal, omitting target.external (or setting it to a browser-reachable URL) to avoid routing the frontend to internal URLs.

BREAKING: Removed immediate mode stitching

The catalog.stitchingStrategy.mode: 'immediate' setting, which was deprecated in v1.51.0, has been removed. All stitching now uses the deferred mode, which processes entities asynchronously via a worker queue. If your configuration still includes catalog.stitchingStrategy.mode: 'immediate', it will be ignored with a deprecation warning. The pollingInterval and stitchTimeout settings continue to work as before.

BREAKING: Backstage UI updates

This release brings several notable additions and changes to Backstage UI:

Async collections: Both Combobox and Select now support async collections, incremental loading, client and server search, and rich or custom item rendering. Loading placeholders and stale result indicators are exposed via public CSS classes for theme customization. The Combobox and Select popovers now correctly load additional pages as users scroll, rather than loading every page immediately.

Semantic color tokens: A new set of semantic color token families has been introduced -- Accent, Announcement, Warning, Negative, and Positive -- each providing a consistent set of background, foreground, and border tokens for both light and dark themes. A gray scale and updated foreground tokens are also included. The previous tokens remain in place for backward compatibility but are now deprecated. A new @backstage/no-deprecated-bui-tokens ESLint rule warns when deprecated tokens are referenced in JavaScript or TypeScript files.

New components: A NumberField component has been added for numeric input with support for min, max, step, and keyboard increment/decrement. Contributed by @​jabrks in #34264.

Breaking changes:

  • ComboboxProps is now a union type. Replace interfaces that extend ComboboxProps with type intersections:
    - interface MyComboboxProps extends ComboboxProps {
    -   trackingId: string;
    - }
    + type MyComboboxProps = ComboboxProps & {
    +   trackingId: string;
    + };
  • SelectProps is now a union type and the popover list content is no longer a direct child of .bui-SelectPopover. Apply the same intersection migration as ComboboxProps, and update CSS selectors that target list content as a direct child of .bui-SelectPopover.

... (truncated)

Changelog

Sourced from @​backstage/plugin-catalog-backend's changelog.

3.8.0

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

  • 9698738: Dropped the legacy search_entity_id_idx index which is now redundant with the covering unique index on (entity_id, key, value). The old index caused the query planner to choose an inefficient scan pattern for catalog list queries with multiple sort fields, leading to severely degraded performance on large catalogs.

  • ccfa4f1: Optimized entitiesBatch on PostgreSQL to use = ANY(array) instead of WHERE IN ($1, $2, ...). This produces a single stable query plan regardless of batch size, instead of up to 200 different plans that pollute the query plan cache. On PostgreSQL, batching is no longer needed so all entity refs are fetched in a single query.

  • 750b310: HAS_LABEL and HAS_ANNOTATION permission rules are now case insensitive.

  • 24775dc: Added a migration that tunes PostgreSQL automatic vacuum thresholds on the search, final_entities, relations, and refresh_state_references tables, and fixes column statistics for entity_id in the search table. This prevents the query planner from falling back to sequential scans when table maintenance falls behind, keeping catalog queries fast on large installations.

  • 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/catalog-client@​1.16.0
    • @​backstage/integration@​2.0.3
    • @​backstage/backend-plugin-api@​1.9.2
    • @​backstage/backend-openapi-utils@​0.6.10
    • @​backstage/plugin-catalog-node@​2.2.2
    • @​backstage/plugin-events-node@​0.4.23
    • @​backstage/plugin-permission-node@​0.11.1

3.8.0-next.1

Patch Changes

  • 9698738: Dropped the legacy search_entity_id_idx index which is now redundant with the covering unique index on (entity_id, key, value). The old index caused the query planner to choose an inefficient scan pattern for catalog list queries with multiple sort fields, leading to severely degraded performance on large catalogs.
  • ccfa4f1: Optimized entitiesBatch on PostgreSQL to use = ANY(array) instead of WHERE IN ($1, $2, ...). This produces a single stable query plan regardless of batch size, instead of up to 200 different plans that pollute the query plan cache. On PostgreSQL, batching is no longer needed so all entity refs are fetched in a single query.
  • 24775dc: Added a migration that tunes PostgreSQL automatic vacuum thresholds on the search, final_entities, relations, and refresh_state_references tables, and fixes column statistics for entity_id in the search table. This prevents the query planner from falling back to sequential scans when table maintenance falls behind, keeping catalog queries fast on large installations.

3.8.0-next.0

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.

... (truncated)

Commits

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code labels Jun 9, 2026
@dependabot dependabot Bot changed the title Bump @backstage/plugin-catalog-backend from 1.32.1 to 3.7.1 in /packages/backend Bump @backstage/plugin-catalog-backend from 1.32.1 to 3.8.0 in /packages/backend Jul 2, 2026
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/packages/backend/backstage/plugin-catalog-backend-3.7.1 branch from 6b95f07 to f57510b Compare July 2, 2026 07:05
@liamfallon

Copy link
Copy Markdown

@dependabot rebase

Bumps [@backstage/plugin-catalog-backend](https://github.com/backstage/backstage/tree/HEAD/plugins/catalog-backend) from 1.32.1 to 3.8.0.
- [Release notes](https://github.com/backstage/backstage/releases)
- [Changelog](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend/CHANGELOG.md)
- [Commits](https://github.com/backstage/backstage/commits/HEAD/plugins/catalog-backend)

---
updated-dependencies:
- dependency-name: "@backstage/plugin-catalog-backend"
  dependency-version: 3.7.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/packages/backend/backstage/plugin-catalog-backend-3.7.1 branch from f57510b to f319ed7 Compare July 2, 2026 13:13
Copilot AI requested a review from liamfallon July 2, 2026 13:21
@liamfallon liamfallon merged commit fffcb7d into main Jul 2, 2026
2 checks passed
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/packages/backend/backstage/plugin-catalog-backend-3.7.1 branch July 2, 2026 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants