Releases: backstage/backstage
v1.35.1
This release fixes the following issues:
- Issue with
TechdocsReader
not working correctly in new frontend system. - Fixes issue with BitBucket autocomplete in the scaffolder plugin.
- Reverts a fix for validation nested dependencies in forms in the scaffolder.
- Fixes an issue where invalid imports could be generated for static assets in package builds.
v1.36.0-next.1
See docs/releases/v1.36.0-next.1-changelog.md for more information.
v1.36.0-next.0
See docs/releases/v1.36.0-next.0-changelog.md for more information.
v1.35.0
These are the release notes for the v1.35.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: Reduced support for the old backend system
The following packages have dropped support for the old backend system:
@backstage/plugin-signals-backend
@backstage/plugin-search-backend-module-catalog
See the migration guide for details on how to migrate your backend to use the current backend system.
GitHub organization ingestion reliability
The GitHub org entity provider will now handle both primary and secondary GitHub rate limits, pausing work when rate limits are encountered. This particularly improves reliability when ingesting large GitHub organizations. Contributed by @sonikro in #28085
Task ID in scaffolder templates
The current task ID is now available in templates via ${{ context.task.id }}
, and in actions ctx.task.id
. Contributed by @fabiovincenzi in #27592
Fixed yarn dev
command when only a single CPU core is reported
Users have been reporting issues with the yarn dev
command not properly running the app
and backend
packages concurrently, instead starting them one after another. This turned out to be an issue on single-core machines where yarn workspaces foreach
defaults to running one process at a time. This is fixed by adding the --jobs unlimited
option to the command.
Removed experimental Vite support
The EXPERIMENTAL_VITE
flag is no longer supported by the Backstage CLI. If you were using it to improve bundling performance, we recommend switching to EXPERIMENTAL_RSPACK
instead.
Proxy endpoint extensions
The proxy plugin now has a new proxyEndpointsExtensionPoint
that lets you programmatically configure proxy endpoints. Contributed by @mbenson in #27257
Backend config schema workaround
Configuration schema from the @backstage/backend-common
package will now be ignored if @backstage/backend-defaults
is present, as it was causing conflicts in the backend configuration schema.
Plugin backend error middleware
The error handler middleware has been added to the default HttpRouterService
, this is in addition to the existing error handler middleware for the RootHttpRouterService
. This change moves error reporting to be done within the context of a plugin, providing additional metadata. If you were using the MiddlewareFactory
to add your own error handler middleware to the plugin router, this can be removed.
Improved catalog /entities
endpoint concurrency
When using the catalog.disableRelationsCompatibility
flag to enable query streaming mode of the /entities
endpoint, the endpoint will now fetch the next batch of entities without waiting for the current batch to be written to the response.
Security Fixes
This release does not contain any security fixes.
Upgrade path
We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for keeping Backstage updated.
Links and References
Below you can find a list of links and references to help you learn about and start using this new release.
- Backstage official website, documentation, and getting started guide
- GitHub repository
- Backstage's versioning and support policy
- Community Discord for discussions and support
- Changelog
- Backstage Demos, Blog, Roadmap and Plugins
Sign up for our newsletter if you want to be informed about what is happening in the world of Backstage.
Big shoutout to all 45 of you amazing folks who chipped in on this release 🙏: @abhipsnl, @AdityaK60, @aliok, @AmbrishRamachandiran, @Andrzejewski-dev, @awanlin, @beejiujitsu, @benjdlambert, @bvic-kb4, @cdedreuille, @christoph-jerolimov, @darylgraham, @deepan10, @dimapasko, @freben, @GabDug, @hghtwr, @immanchand, @Irma12, @isabeltomb, @Jenson3210, @jolies93, @jroebu14, @jsantos-napster, @jsundquist, @Lucifergene, @madsteer, @mario-mui, @mbenson, @mpsanchis, @mtlewis, @nikolarAutodesk, @Parsifal-M, @petar-cvit, @RobertKelly, @Rugvip, @sonikro, @srushti-712, @tdabasinskas, @timbonicus, @tylerd-canva, @vinzscam, @vrabbi, @yasserhennawi, @zcmander
v1.35.0-next.2
See docs/releases/v1.35.0-next.2-changelog.md for more information.
v1.35.0-next.1
See docs/releases/v1.35.0-next.1-changelog.md for more information.
v1.35.0-next.0
See docs/releases/v1.35.0-next.0-changelog.md for more information.
v1.34.2
This release fixes an issue where the GitLab reader was returning 406 errors when reading from a repository.
v1.34.1
This release fixes an issue where the scaffolder wasn't forwarding collected secrets properly, and also an issue with config schema failing validation.
v1.34.0
These are the release notes for the v1.34.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: New version of keyv
, Redis
Our builtin core cache service is based on keyv
, whose redis integration has been upgraded. This fixes issues that the old version had especially in relation to redis sets. If you were setting useRedisSets: false
, note that the layout of your key space may be slightly affected after this change.
Contributed by @eipc16 in #27716, and more information can be found within that changeset.
BREAKING: Route change for notifications
If you are interacting directly with the notifications
backend plugin API, it now no longer uses the /
root route but rather a /notifications
sub-route. This aligns it with our standards. The old routes are still available in the notifications backend, but the frontend will use the new routes.
BREAKING: Scaffolder Gitlab module
We’ve upgraded to the most recent version of the gitbeaker
library that speaks to Gitlab. In doing so, the scopes
parameter of the gitlab:projectDeployToken:create
action is no longer optional, so you will have to pass it a value (for example ['read_repository']
).
Catalog performance improvements
Since last month’s release, we have been putting a lot of focus on catalog performance, scouring through the metrics and improving several standout peaks. Among other things you may find that provider ’delta’
mutations as well as some API calls are significantly faster.
There is also a new experimental catalog.disableRelationsCompatibility
configuration option that, when set to true
, avoids JSON deserialization and serialization if possible when reading entities. This significantly reduces the memory usage of the catalog, and slightly increases performance, but it removes the backwards compatibility processing that ensures that both entity.relation[].target
and entity.relation[].targetRef
are present in returned entities. Do let us know if you find any problems in case you feel adventurous and enable this flag! Just be aware that the API response shape does change slightly if you do, as outlined above.
Direct Google CloudSQL Postgres support
You can now connect directly to your Google CloudSQL Postgres databases with IAM auth, without having to use sidecars or similar proxies. Update your backend.database.connection
:
connection:
type: cloudsql
instance: my-project:europe-west1:a-db-instance
# ... other settings
New integration: Azure blob storage
Azure blob storage is now better supported, both in terms of a low level integration package addition, as well as gaining a catalog entity provider that can read directly out of your storages. Head straight to the docs if this sounds interesting.
Contributed by @Nikunj0601 in #27850
Lifecycle and health
The default readiness endpoint now immediately starts returning HTTP 503 errors when the process is asked to shut down. Pairing this with the backend.lifecycle.serverShutdownDelay
configuration option allows you to let your ingress detect the impending shutdown and drain traffic gracefully before the service finally stops. This helps with zero-downtime deployments.
On the path to implementing that, the coreServices.rootLifecycle
service gained a new addBeforeShutdownHook
method whose registered hooks will run immediately when a termination signal is received. The backend will not proceed with the shutdown and run the regular Shutdown
hooks until all BeforeShutdown
hooks have completed.
If you were using the startupRequestPauseTimeout
setting of the lifecycle service in code, you should now instead set it in the backend.lifecycle.startupRequestPauseTimeout
config, next to the one mentioned above.
Bitbucket API throttling
The Bitbucket integration (URL reader and catalog provider) now apply throttling to outgoing requests, to avoid hitting rate limits. Let us know how it affected your service!
Contributed by @kjjuno in #27850
Support for custom service-to-service tokens
Do you have a pre-existing service-to-service auth scheme that you would like Backstage installations to leverage instead of only the native Backstage tokens? There’s now a plugin token handler decorator interface that allows for injecting yourself in just the right spot in the auth chain, without having to reimplement the whole auth
core service. It’s all covered in the docs!
Further improvements to the yarn plugin
The yarn plugin received a number of updates, making it more conformant with yarn semantics. It now works better behind corporate proxies and uses an improved way of persisting resolutions in the lockfile. On top of it all, its on-disk footprint was reduced massively.
If you use the classical yarn backstage-cli versions:bump
command, it now also ensures that the installed plugin itself stays updated with the latest and greatest without any further action on your part.
Contributed by @mtlewis over several pull requests.
Removing node-fetch
in the backend
ADR014 replaces its predecessor ADR to recommend using native undici
-based fetch
instead of node-fetch
in all backend packages. As a result we have almost entirely performed that shift in our core libraries and plugins, and recommend that plugin authors and adopters do the same when they can.
This change should not be noticeable for most adopters. If you see any ill effects of it, please report it to the maintainers.
Security Fixes
This release does not contain any security fixes.
Upgrade path
We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for keeping Backstage updated.
Links and References
Below you can find a list of links and references to help you learn about and start using this new release.
- Backstage official website, documentation, and getting started guide
- GitHub repository
- Backstage's versioning and support policy
- Community Discord for discussions and support
- Changelog
- Backstage Demos, Blog, Roadmap and Plugins
Sign up for our newsletter if you want to be informed about what is happening in the world of Backstage.
Big thanks to all 57 of you awesome folks who made this release happen 👏🎉: @AdrianSoovary8234, @aramissennyeydd, @awanlin, @benjdlambert, @bforbis, @brianphillips, @camilaibs, @cdedreuille, @chgasparoto, @christoph-jerolimov, @cthtrifork, @davidfestal, @davidgiga1993, @dejanbelusic, @djamaile, @eipc16, @freben, @gavinclarkeuk, @grantila, @hghtwr, @HHogg, @hyb175, @Hypersight, @iamEAP, @jahller, @janogonzalez, @jescalada, @JessicaJHee, @jhaals, @jiteshy, @johnphilip283, @jroebu14, @kalleericson, @kevspl, @kunickiaj, @matdtr, @mtlewis, @nikolarAutodesk, @Nikunj0601, @NormanWenzelWSS, @Parsifal-M, @paulmowat, @Rugvip, @schultzp2020, @sebaparedero14, @secustor, @squid-ney, @stegosaurus21, @stephenglass, @tcardonne, @timbonicus, @Tirex, @tylerd-canva, @veenarm, @vinzscam, @virzen, @zeshanziya