Motivation
single-spa@5 is focused on performance and developer experience. The bundle size for single-spa has gone down from ~25kb to ~15kb ungzipped (6kb to 5kb gzipped). We have created new error pages which give in-depth information about console errors, and link to those pages in both development and production builds. We now publish single-spa.dev.js files for easier debugging of single-spa itself. And we have removed all of our deprecated APIs (that have been deprecated and not documented for about two years).
Migration path
99% of single-spa users can simply upgrade to single-spa@5.0.0 without any changes to their code and everything will work exactly as it was before. You'll just benefit from a smaller bundle size and better DX for errors. See the breaking changes below for the few breaking changes that exist.
Breaking changes
- Removing the declareChildApplication and unloadChildApplication apis that have been deprecated for two years. You can use the registerApplication and unloadApplication apis instead. (#390).
- Removing err.name and err.appName from errors passed to single-spa error handlers (#404)
Features
- Switching to "error codes" to communicate what went wrong with single-spa applications. The error codes link to pages such as https://single-spa.js.org/error/?code=1 which give in-depth explanations of what is happening.
- Adding support for warningMillis timeout configuration. This lets you configure or turn off the "application's mount lifecycle did not resolve or reject in 1000 milliseconds" console warnings. (#389)
Fixes
- Fixing link to the new error code documentation pages (#406)
- Fixing error debugging info for parcel-related messages (#407)
- Fix bug where route listeners that throw errors caused other route listeners not to be called (#449)
Performance
- Reducing bundle size with babel/rollup changes (#392)
- Reducing bundle size by removing class syntax (#393)
- Reducing bundle size with various refactors (#396)
- Reducing bundle size by switching from object spread syntax to a manual object assign (#401)