Files
backstage/plugins/app/CHANGELOG.md
T
github-actions[bot] 68db890456 Version Packages (next)
2026-05-26 15:26:38 +00:00

43 KiB

@backstage/plugin-app

0.4.7-next.0

Patch Changes

0.4.6

Patch Changes

  • a345820: The app/routes redirect config now supports path parameter substitution in the to target. Named params (:userId) and splat params (*) captured by the from path are replaced in the to string before navigating, making it possible to express redirects like:

    app:
      extensions:
        - app/routes:
            config:
              redirects:
                - from: /users/:userId
                  to: /profile/:userId
                - from: /old-docs
                  to: /docs/*
    
  • d1be10c: Migrated React Aria imports from individual packages (@react-aria/toast, @react-aria/button, @react-stately/toast) to the monopackages (react-aria, react-stately).

  • e2d9831: Tightened React Aria dependency version ranges from ^ to ~ to prevent unintended minor version upgrades.

  • f635139: Limited @remixicon/react dependency to versions below 4.9.0 due to a license change in that release.

  • 2ba8c10: Following the removal of NavItemBlueprint in @backstage/frontend-plugin-api, the built-in app nav was updated to keep accepting legacy nav-item extensions so older plugins continue to work until they migrate.

  • cad156e: Replaced old config schema values from existing extensions and blueprints.

  • 085133f: The zod dependency has been bumped from ^3.25.76 || ^4.0.0 to ^4.0.0, since configSchema requires the full Zod v4 package for JSON Schema support.

  • Updated dependencies

0.4.6-next.2

Patch Changes

  • a345820: The app/routes redirect config now supports path parameter substitution in the to target. Named params (:userId) and splat params (*) captured by the from path are replaced in the to string before navigating, making it possible to express redirects like:

    app:
      extensions:
        - app/routes:
            config:
              redirects:
                - from: /users/:userId
                  to: /profile/:userId
                - from: /old-docs
                  to: /docs/*
    
  • Updated dependencies

0.4.6-next.1

Patch Changes

0.4.6-next.0

Patch Changes

  • d1be10c: Migrated React Aria imports from individual packages (@react-aria/toast, @react-aria/button, @react-stately/toast) to the monopackages (react-aria, react-stately).
  • e2d9831: Tightened React Aria dependency version ranges from ^ to ~ to prevent unintended minor version upgrades.
  • cad156e: Replaced old config schema values from existing extensions and blueprints.
  • 085133f: The zod dependency has been bumped from ^3.25.76 || ^4.0.0 to ^4.0.0, since configSchema requires the full Zod v4 package for JSON Schema support.
  • Updated dependencies

0.4.3

Patch Changes

  • effa7bf: Migrated AppLanguageApi extension to use the new configSchema option.

  • e5baa20: Added support for configuring URL redirects on the app/routes extension. Redirects can be configured through app-config as an array of {from, to} path pairs, which will cause navigation to the from path to be redirected to the to path.

    For example:

    app:
      extensions:
        - app/routes:
            config:
              redirects:
                - from: /old-path
                  to: /new-path
    
  • 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.

  • e4804ab: Updated the default DialogApi implementation to support the new open method. The dialog display layer no longer renders any dialog chrome — callers provide their own dialog component. The deprecated show and showModal methods now use open internally with a Material UI dialog wrapper for backward compatibility.

  • d66a3ec: Updated the PageLayout swap to pass a clickable titleLink on the PluginHeader, resolved from the plugin's root route ref.

  • Updated dependencies

0.4.3-next.2

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

0.4.3-next.1

Patch Changes

0.4.3-next.0

Patch Changes

0.4.1

Patch Changes

  • 5f3f5d2: NavContentBlueprint nav item collections now keep previously collected rest() results in sync when additional items are taken later in the same render, making it easier to place items across multiple sidebar sections.

  • aa29b50: Pages created with PageBlueprint now render the plugin header by default in the new frontend system.

  • c0ab376: The app nav now falls back to plugin.icon for navigation items that don't have an explicit icon set.

  • 12d8afe: Added BUIProvider from @backstage/ui to the app root, enabling BUI components to fire analytics events through the Backstage analytics system.

  • 5fec07d: Updated the default app root to better support phased app preparation by allowing the app layout to be absent during bootstrap, routing bootstrap failures through the app root boundary, and avoiding installation of a guest identity in protected apps that do not provide a sign-in page.

  • 9508514: Updated the default PluginWrapperApi implementation to support the new useWrapperValue hook and root wrapper. The root wrapper is now rendered in the app root to manage shared hook state across plugin wrapper instances.

  • a49a40d: Updated dependency zod to ^3.25.76 || ^4.0.0 & migrated to /v3 or /v4 imports.

  • 42f8c9b: Moved BUIProvider inside the app router to enable automatic client-side routing for all BUI components.

  • 909c742: Switched translation API imports (translationApiRef, appLanguageApiRef) from the alpha @backstage/core-plugin-api/alpha path to the stable @backstage/frontend-plugin-api export. This has no effect on runtime behavior.

  • 7e743f4: Introduced a new ToastApi for displaying rich toast notifications in the new frontend system.

    The new ToastApi provides enhanced notification capabilities compared to the existing AlertApi:

    • Title and Description: Toasts support both a title and an optional description
    • Custom Timeouts: Each toast can specify its own timeout duration
    • Links: Toasts can include action links
    • Status Variants: Support for neutral, info, success, warning, and danger statuses
    • Programmatic Dismiss: Toasts can be dismissed programmatically using the close() handle returned from post()

    Usage:

    import { toastApiRef, useApi } from '@backstage/frontend-plugin-api';
    
    const toastApi = useApi(toastApiRef);
    
    // Full-featured toast
    toastApi.post({
      title: 'Entity saved',
      description: 'Your changes have been saved successfully.',
      status: 'success',
      timeout: 5000,
      links: [{ label: 'View entity', href: '/catalog/entity' }],
    });
    
    // Programmatic dismiss
    const { close } = toastApi.post({ title: 'Uploading...', status: 'info' });
    // Later...
    close();
    

    The ToastDisplay component subscribes to both ToastApi and AlertApi, providing a migration path where both systems work side by side until AlertApi is fully deprecated.

  • Updated dependencies

0.4.1-next.2

Patch Changes

0.4.1-next.1

Patch Changes

0.4.1-next.0

Patch Changes

  • 909c742: Switched translation API imports (translationApiRef, appLanguageApiRef) from the alpha @backstage/core-plugin-api/alpha path to the stable @backstage/frontend-plugin-api export. This has no effect on runtime behavior.
  • Updated dependencies

0.4.0

Minor Changes

  • ef6916e: Added SubPageBlueprint for creating sub-page tabs, PluginHeaderActionBlueprint and PluginHeaderActionsApi for plugin-scoped header actions, and PageLayout as a swappable component. The PageBlueprint now supports sub-pages with tabbed navigation, page title, icon, and header actions. Plugins can now specify a title and icon in createFrontendPlugin.

  • 7edb810: BREAKING: Extensions created with the following blueprints must now be provided via an override or a module for the app plugin. Extensions from other plugins will now trigger a warning in the app and be ignored.

    • IconBundleBlueprint
    • NavContentBlueprint
    • RouterBlueprint
    • SignInPageBlueprint
    • SwappableComponentBlueprint
    • ThemeBlueprint
    • TranslationBlueprint

Patch Changes

  • a2133be: Added new NavContentNavItem, NavContentNavItems, and navItems prop to NavContentComponentProps for auto-discovering navigation items from page extensions. The new navItems collection supports take(id) and rest() methods for placing specific items in custom sidebar positions, as well as withComponent(Component) which returns a NavContentNavItemsWithComponent for rendering items directly as elements. The existing items prop is now deprecated in favor of navItems.
  • a7e0d50: Updated react-router-dom peer dependency to ^6.30.2 and explicitly disabled v7 future flags to suppress deprecation warnings.
  • 69d880e: Bump to latest zod to ensure it has the latest features
  • Updated dependencies

0.4.0-next.2

Patch Changes

  • a7e0d50: Prepare for React Router v7 migration by updating to v6.30.2 across all NFS packages and enabling v7 future flags. Convert routes from splat paths to parent/child structure with Outlet components.
  • Updated dependencies

0.4.0-next.1

Patch Changes

0.4.0-next.0

Minor Changes

  • 7edb810: BREAKING: Extensions created with the following blueprints must now be provided via an override or a module for the app plugin. Extensions from other plugins will now trigger a warning in the app and be ignored.

    • IconBundleBlueprint
    • NavContentBlueprint
    • RouterBlueprint
    • SignInPageBlueprint
    • SwappableComponentBlueprint
    • ThemeBlueprint
    • TranslationBlueprint

Patch Changes

0.3.4

Patch Changes

  • 4554a4e: Implemented support for the new PluginWrapperBlueprint from @backstage/frontend-plugin-api/alpha.

  • 9ccf84e: The following blueprints are being restricted to only be used in app plugin overrides and modules. They will now produce a deprecation warning when used outside of the app plugin:

    • AppRootWrapperBlueprint
    • IconBundleBlueprint
    • NavContentBlueprint
    • RouterBlueprint
    • SignInPageBlueprint
    • SwappableComponentBlueprint
    • ThemeBlueprint
    • TranslationBlueprint
  • Updated dependencies

0.3.4-next.1

Patch Changes

0.3.4-next.0

Patch Changes

0.3.3

Patch Changes

0.3.3-next.1

Patch Changes

0.3.3-next.0

Patch Changes

0.3.2

Patch Changes

0.3.2-next.0

Patch Changes

0.3.1

Patch Changes

0.3.1-next.2

Patch Changes

0.3.1-next.1

Patch Changes

0.3.1-next.0

Patch Changes

0.3.0

Minor Changes

  • 99790db: Add implementation of OpenShift authentication provider.

Patch Changes

0.2.1-next.0

Patch Changes

0.2.0

Minor Changes

  • fda1bbc: BREAKING: The componentsApi implementation has been removed from the plugin and replaced with the new SwappableComponentsApi instead.

    If you were overriding the componentsApi implementation, you can now use the new SwappableComponentsApi instead.

    // old
    appPlugin.getExtension('api:app/components').override(...)
    
    // new
    appPlugin.getExtension('api:app/swappable-components').override(...)
    
  • 29786f6: Updated the app/nav extension to use the new NavContentBlueprint, and removed support for extensions created with the now removed NavLogoBlueprint.

  • 121899a: BREAKING: The app-root-element extension now only accepts JSX.Element in its element param, meaning overrides need to be updated.

Patch Changes

  • 91cbdf4: Log a warning when SwappableComponent extensions are installed outside of using the app plugin

  • fda1bbc: Default implementations of core components are now provided by this package.

    A backwards compatible componentsApi implementation is also provided from this package which uses the SwappableComponentsApi as the implementation. This backwards compatible wrapper will be removed in the future.

  • f2f133c: Internal update to use the new variant of ApiBlueprint.

  • a08f95f: Added a new module for implementing public sign-in apps, exported as appModulePublicSignIn via the /alpha sub-path export. This replaces the createPublicSignInApp export from @backstage/frontend-defaults, which is now deprecated.

  • 5d31d66: Updated the usage of the RouterBlueprint and AppRootWrapperBlueprint to use the lowercase component parameter

  • 93b5e38: The default implementation of the Analytics API now collects and instantiates analytics implementations exposed via AnalyticsImplementationBlueprint extensions. If no such extensions are discovered, the API continues to do nothing with analytics events fired within Backstage. If multiple such extensions are discovered, every discovered implementation automatically receives analytics events.

  • 9831f4e: Adjusted the dialog API types to have more sensible defaults

  • Updated dependencies

0.2.0-next.2

Minor Changes

  • fda1bbc: BREAKING: The componentsApi implementation has been removed from the plugin and replaced with the new SwappableComponentsApi instead.

    If you were overriding the componentsApi implementation, you can now use the new SwappableComponentsApi instead.

    // old
    appPlugin.getExtension('api:app/components').override(...)
    
    // new
    appPlugin.getExtension('api:app/swappable-components').override(...)
    

Patch Changes

  • 91cbdf4: Log a warning when SwappableComponent extensions are installed outside of using the app plugin

  • fda1bbc: Default implementations of core components are now provided by this package.

    A backwards compatible componentsApi implementation is also provided from this package which uses the SwappableComponentsApi as the implementation. This backwards compatible wrapper will be removed in the future.

  • 9831f4e: Adjusted the dialog API types to have more sensible defaults

  • Updated dependencies

0.2.0-next.1

Minor Changes

  • 121899a: BREAKING: The app-root-element extension now only accepts JSX.Element in its element param, meaning overrides need to be updated.

Patch Changes

  • a08f95f: Added a new module for implementing public sign-in apps, exported as appModulePublicSignIn via the /alpha sub-path export. This replaces the createPublicSignInApp export from @backstage/frontend-defaults, which is now deprecated.
  • 5d31d66: Updated the usage of the RouterBlueprint and AppRootWrapperBlueprint to use the lowercase component parameter
  • 93b5e38: The default implementation of the Analytics API now collects and instantiates analytics implementations exposed via AnalyticsImplementationBlueprint extensions. If no such extensions are discovered, the API continues to do nothing with analytics events fired within Backstage. If multiple such extensions are discovered, every discovered implementation automatically receives analytics events.
  • Updated dependencies

0.2.0-next.0

Minor Changes

  • 29786f6: Updated the app/nav extension to use the new NavContentBlueprint, and removed support for extensions created with the now removed NavLogoBlueprint.

Patch Changes

0.1.11

Patch Changes

0.1.11-next.1

Patch Changes

0.1.11-next.0

Patch Changes

0.1.10

Patch Changes

0.1.10-next.1

Patch Changes

0.1.10-next.0

Patch Changes

0.1.9

Patch Changes

0.1.9-next.3

Patch Changes

0.1.9-next.2

Patch Changes

0.1.9-next.1

Patch Changes

0.1.9-next.0

Patch Changes

0.1.8

Patch Changes

0.1.8-next.1

Patch Changes

0.1.8-next.0

Patch Changes

0.1.7

Patch Changes

0.1.7-next.2

Patch Changes

0.1.7-next.1

Patch Changes

0.1.7-next.0

Patch Changes

  • Updated dependencies
    • @backstage/frontend-plugin-api@0.9.6-next.0
    • @backstage/integration-react@1.2.4

0.1.6

Patch Changes

  • 58ec9e7: Removed older versions of React packages as a preparatory step for upgrading to React 19. This commit does not introduce any functional changes, but removes dependencies on previous React versions, allowing for a cleaner upgrade path in subsequent commits.
  • Updated dependencies

0.1.6-next.3

Patch Changes

0.1.6-next.2

Patch Changes

0.1.6-next.1

Patch Changes

  • 58ec9e7: Removed older versions of React packages as a preparatory step for upgrading to React 19. This commit does not introduce any functional changes, but removes dependencies on previous React versions, allowing for a cleaner upgrade path in subsequent commits.
  • Updated dependencies

0.1.6-next.0

Patch Changes

0.1.5

Patch Changes

0.1.5-next.0

Patch Changes

0.1.4

Patch Changes

  • e5fa018: The OAuth 2 client implementations will now attempt to refresh the session when the existing session doesn't have the required scopes. The previous behavior was to only try to refresh the session of it was missing, and otherwise directly request a new session. This fixes an issue where some auth providers will not return access tokens with certain scopes unless explicitly requested, leading to an auth popup even if the underlying session already had been granted the requested scopes.
  • 5f04976: Fixed a bug that caused missing code in published packages.
  • Updated dependencies

0.1.4-next.2

Patch Changes

0.1.4-next.1

Patch Changes

0.1.4-next.0

Patch Changes

  • e5fa018: The OAuth 2 client implementations will now attempt to refresh the session when the existing session doesn't have the required scopes. The previous behavior was to only try to refresh the session of it was missing, and otherwise directly request a new session. This fixes an issue where some auth providers will not return access tokens with certain scopes unless explicitly requested, leading to an auth popup even if the underlying session already had been granted the requested scopes.
  • 5f04976: Fixed a bug that caused missing code in published packages.
  • Updated dependencies

0.1.2

Patch Changes

0.1.2-next.2

Patch Changes

0.1.2-next.1

Patch Changes

0.1.2-next.0

Patch Changes

0.1.1

Patch Changes

  • b36be7a: Added missing default SignInPageExtension which by default uses guest auth, missing ApiExtensions for scmAuth
  • Updated dependencies

0.1.1-next.2

Patch Changes

0.1.1-next.1

Patch Changes

0.1.1-next.0

Patch Changes

0.1.0

Minor Changes

  • 2bb9517: Introduce the @backstage/plugin-app package to hold all of the built-in extensions for easy consumption and overriding.

Patch Changes

  • 52f9c5a: Deprecated the namespace option for createExtensionBlueprint and createExtension, these are no longer required and will default to the pluginId instead.

    You can migrate some of your extensions that use createExtensionOverrides to using createFrontendModule instead and providing a pluginId there.

    // Before
    createExtensionOverrides({
      extensions: [
        createExtension({
          name: 'my-extension',
          namespace: 'my-namespace',
          kind: 'test',
          ...
        })
      ],
    });
    
    // After
    createFrontendModule({
      pluginId: 'my-namespace',
      extensions: [
        createExtension({
          name: 'my-extension',
          kind: 'test',
          ...
        })
      ],
    });
    
  • 57bf6ae: Fix issue with AlertDisplay and other components defined with AppRootElementBlueprint not being rendered when at the SignInWrapper

  • 836127c: Updated dependency @testing-library/react to ^16.0.0.

  • Updated dependencies

    • @backstage/core-components@0.15.0
    • @backstage/frontend-plugin-api@0.8.0
    • @backstage/core-plugin-api@1.9.4
    • @backstage/theme@0.5.7
    • @backstage/plugin-permission-react@0.4.26

0.1.0-next.2

Patch Changes

  • 57bf6ae: Fix issue with AlertDisplay and other components defined with AppRootElementBlueprint not being rendered when at the SignInWrapper
  • 836127c: Updated dependency @testing-library/react to ^16.0.0.
  • Updated dependencies
    • @backstage/core-components@0.14.11-next.1
    • @backstage/core-plugin-api@1.9.4-next.0
    • @backstage/frontend-plugin-api@0.8.0-next.2
    • @backstage/theme@0.5.7-next.0
    • @backstage/plugin-permission-react@0.4.26-next.0

0.1.0-next.1

Patch Changes

  • 52f9c5a: Deprecated the namespace option for createExtensionBlueprint and createExtension, these are no longer required and will default to the pluginId instead.

    You can migrate some of your extensions that use createExtensionOverrides to using createFrontendModule instead and providing a pluginId there.

    // Before
    createExtensionOverrides({
      extensions: [
        createExtension({
          name: 'my-extension',
          namespace: 'my-namespace',
          kind: 'test',
          ...
        })
      ],
    });
    
    // After
    createFrontendModule({
      pluginId: 'my-namespace',
      extensions: [
        createExtension({
          name: 'my-extension',
          kind: 'test',
          ...
        })
      ],
    });
    
  • Updated dependencies

0.1.0-next.0

Minor Changes

  • 2bb9517: Introduce the @backstage/plugin-app package to hold all of the built-in extensions for easy consumption and overriding.

Patch Changes

  • Updated dependencies
    • @backstage/frontend-plugin-api@0.8.0-next.0
    • @backstage/core-components@0.14.10
    • @backstage/core-plugin-api@1.9.3
    • @backstage/theme@0.5.6
    • @backstage/plugin-permission-react@0.4.25