# Release v1.50.0 Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.50.0](https://backstage.github.io/upgrade-helper/?to=1.50.0) ## @backstage/backend-defaults@0.17.0 ### Minor Changes - c69e03c: Added support for AWS RDS IAM authentication for PostgreSQL connections. Set `connection.type: rds` along with `host`, `user`, and `region` to use short-lived IAM tokens instead of a static password. Requires the `@aws-sdk/rds-signer` package and an IAM role with `rds-db:connect` permission. ### Patch Changes - 4559806: Added support for typed `examples` on actions registered via the actions registry. Action authors can now provide examples with compile-time-checked `input` and `output` values that match their schema definitions. - 5cd814f: Refactored auditor severity log level mappings to use `zod/v4` with schema-driven defaults and type inference. - 482ceed: Migrated from `assertError` to `toError` for error handling. - 6e2aaab: Fixed `AwsS3UrlReader` failing to read files from S3 buckets configured with custom endpoint hosts. When an integration was configured with a specific endpoint like `https://bucket-1.s3.eu-central-1.amazonaws.com`, the URL parser incorrectly fell through to the non-AWS code path, always defaulting the region to `us-east-1` instead of extracting it from the hostname. - 308c672: `HostDiscovery` now logs a warning when `backend.baseUrl` is set to a localhost address while `NODE_ENV` is `production`, and when `backend.baseUrl` is not a valid URL. - 85c5a46: DefaultActionsRegistryService: add json middleware to /.backstage/actions/ routes only - 547258f: Refactored the database creation retry loop to avoid an unnecessary delay after the final failed attempt. - 79453c0: Updated dependency `wait-for-expect` to `^4.0.0`. - f14df56: Added experimental support for using `embedded-postgres` as the database for local development. Set `backend.database.client` to `embedded-postgres` in your app config to enable this. The `embedded-postgres` package must be installed as an explicit dependency in your project. - Updated dependencies - @backstage/backend-plugin-api@1.9.0 - @backstage/errors@1.3.0 - @backstage/plugin-auth-node@0.7.0 - @backstage/backend-app-api@1.6.1 - @backstage/cli-node@0.3.1 - @backstage/config-loader@1.10.10 - @backstage/integration@2.0.1 - @backstage/plugin-permission-node@0.10.12 - @backstage/config@1.3.7 - @backstage/integration-aws-node@0.1.21 - @backstage/plugin-events-node@0.4.21 - @backstage/plugin-permission-common@0.9.8 ## @backstage/backend-plugin-api@1.9.0 ### Minor Changes - 4559806: Added support for typed `examples` on actions registered via the actions registry. Action authors can now provide examples with compile-time-checked `input` and `output` values that match their schema definitions. ### Patch Changes - 213ebe7: Aligned `.T` behavior between `ExtensionPoint` and `ServiceRef` to consistently return `null` instead of throwing. - 68c557b: Added stricter type checks in `isDatabaseConflictError`. - Updated dependencies - @backstage/errors@1.3.0 - @backstage/plugin-auth-node@0.7.0 - @backstage/cli-common@0.2.1 - @backstage/plugin-permission-node@0.10.12 - @backstage/config@1.3.7 - @backstage/plugin-permission-common@0.9.8 ## @backstage/catalog-client@1.15.0 ### Minor Changes - c384fff: **BREAKING PRODUCERS**: Added required `entityRef` field to the `Location` type, exposing the stable entity reference for each registered location. Any code that produces `Location` objects must now include this field. Added `updateLocation` method to `CatalogApi` for updating the type and target of an existing location. ### Patch Changes - Updated dependencies - @backstage/errors@1.3.0 - @backstage/catalog-model@1.8.0 - @backstage/filter-predicates@0.1.2 ## @backstage/catalog-model@1.8.0 ### Minor Changes - e5fcfcb: Added a new catalog model layer system that allows plugins to declare and extend catalog entity kinds, annotations, labels, tags, and relations using JSON Schema. The new `createCatalogModelLayer` API provides a builder for composing model definitions, and a `compileCatalogModel` function validates and merges them into a unified model. Built-in entity kinds now include model layer definitions. ### Patch Changes - Updated dependencies - @backstage/errors@1.3.0 ## @backstage/cli-module-actions@0.1.0 ### Minor Changes - c705d44: Added improved CLI output formatting and UX for the actions module. The `list` command now groups actions by plugin source with colored headers and action titles. The `execute --help` command renders full action details including markdown descriptions. Complex schema types like objects, arrays, and union types are now accepted as JSON flags. Error messages from the server are now surfaced directly. The `sources add` and `sources remove` commands accept multiple plugin IDs at once. ### Patch Changes - Updated dependencies - @backstage/errors@1.3.0 - @backstage/cli-node@0.3.1 ## @backstage/core-app-api@1.20.0 ### Minor Changes - 400aa23: Added `FetchMiddlewares.clarifyFailures()` which replaces the uninformative "TypeError: Failed to fetch" with a message that includes the request method and URL. ### Patch Changes - 9244b70: The default auth implementation now checks for a `logoutUrl` in the logout response body. If the auth provider returns one (e.g. Auth0 federated logout), the browser is redirected to that URL to clear the provider's session cookies. This is backward compatible — providers that return an empty response are unaffected. - Updated dependencies - @backstage/ui@0.14.0 - @backstage/config@1.3.7 - @backstage/core-plugin-api@1.12.5 ## @backstage/errors@1.3.0 ### Minor Changes - b2319ff: A new `toError` utility function is now available for converting unknown values to `ErrorLike` objects. If the value is already error-like it is returned as-is, strings are used directly as the error message, and all other values are wrapped as `unknown error ''`. Non-error causes passed to `CustomErrorBase` are now converted and stored using `toError` rather than discarded. ### Patch Changes - 608c1e5: Simplified `assertError` to delegate to `isError` instead of duplicating the same checks. ## @backstage/frontend-plugin-api@0.16.0 ### Minor Changes - fa55078: **BREAKING**: Removed the deprecated `createSchemaFromZod` helper. Use the new `configSchema` option instead. See the [1.50 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations#150) for more information. - 49397c1: Simplified the type signature of `createRouteRef` by replacing the dual `TParams`/`TParamKeys` type parameters with a single `TParamKey` parameter. This is a breaking change for callers that explicitly provided type arguments, but most usage that relies on inference is unaffected. ### Patch Changes - 4c09967: Fixed the duplicate extension error message in `createFrontendModule` to correctly say "Module" instead of "Plugin". - e4804ab: Added `open` method to `DialogApi` that renders dialogs without any built-in dialog chrome, giving the caller full control over the dialog presentation. This avoids focus trap conflicts that occur when mixing components from different design libraries. The existing `show` and `showModal` methods are now deprecated in favor of `open`. - ddc5247: Fixed `FlattenedMessages` type to avoid excessive type instantiation depth in TypeScript 6 when using `createTranslationRef` with the `translations` option. - a2a6c3b: Added a new `configSchema` option for `createExtension` and `createExtensionBlueprint` that accepts direct schema values from any [Standard Schema](https://github.com/standard-schema/standard-schema) compatible library with JSON Schema support, such as zod v4 (`zod@^4.0.0`). The old `config.schema` option is now deprecated. Note that Zod v3 is not supported by the new `configSchema` option, including the `zod/v4` subpath export which does not include JSON Schema conversion support. You must upgrade to the `zod` v4 package. See the [1.50 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations#150) for more information. - d66a3ec: Added `titleLink` prop to `PageLayoutProps` so the plugin header title can link back to the plugin root. - e220589: Removed the unnecessary need to use `defineParams` callback from `PluginHeaderActionBlueprint`. It still works, but is no longer required. - Updated dependencies - @backstage/errors@1.3.0 - @backstage/filter-predicates@0.1.2 ## @backstage/ui@0.14.0 ### Minor Changes - 8659f33: **BREAKING**: The `Header` component's `tabs` prop now uses `HeaderNavTabItem[]` instead of `HeaderTab[]`. Tabs render as a `