Upgrade steps (8.1.0 - 8.11.0)
8.11.0
There is a known issue with routing in micro frontends. If this issue affects you, make sure you upgrade to 8.12.0.
There are no manual upgrade steps for most apps and upgrade is mostly automated. Check out the release notes page for a list of deprecations, known issues, and more.
8.10.0
We recommend you use Node.js v18. This is completely optional. Also please consider that Node.js v16 is getting EOL in September 2023, so you should be ready to this change. If you want to migrate, do the following:
- Update the engines field in your
package.jsonto:
"engines": {
"node": ">= 18.14.2 < 19",
"npm": ">=9.5.0"
}
- (Optional) If you use NVM to manage Node versions - update .nvmrc with
v18.14.2 - Install Node.js v18.14.2 (and if you are not an NVM user, remove the old version)
- Update any unit tests which use Intl (Node.js v18 is updated according to the latest version of Intl).
To check if your app still works with a newer version of Node.js (for example on TC pipelines), do the following:
- Update the engines field in your
package.jsonto:
"engines": {
"node": ">= 18.14.2 < 19",
"npm": ">=8.5.0 || >=9.5.0"
}
A change in translation process in Node 18 results in a space character being replaced with a unicode narrow no-break space https://www.compart.com/en/unicode/U+202F. This may result in failed unit tests as this does not match the \s regex pattern.
always-auth in NPM config
The always-auth directive was removed from newer versions of NPM. If you get an error like the following, update your .npmrc to not include this directive.
npm ERR!
always-authis not a valid npm option
Webpack 4 compatibility
If you are still using webpack 4 to develop and build your applications, you need to adjust the start script. In the scripts/serve.mjs file, replace the getWbCommand function with the following:
function getWbCommand() {
if (isUsingLegacyWebpack()) {
return [
'react-app-rewired',
process.version.includes('v16') ? null : '--openssl-legacy-provider',
'start',
].filter(Boolean);
}
return ['jutro-tools', 'app', 'serve'];
}
And make a similar change in the scripts/build.mjs file, except replace start with build:
function getWbCommand() {
if (isUsingLegacyWebpack()) {
return [
'react-app-rewired',
process.version.includes('v16') ? null : '--openssl-legacy-provider',
'build',
].filter(Boolean);
}
return ['jutro-tools', 'app', 'build'];
}
Teamcity changes
Migration on Teamcity side is very straightforward - you need to update versions of used Docker images:
jutro-docker-dev/node:16.14.2tojutro-docker-dev/node:18.14.2jutro-docker-dev/atmosdeploy-jutro:16.14.2tojutro-docker-dev/atmosdeploy-jutro:18.14.2
8.9.0
Breaking changes in micro frontends
We are moving micro frontends out of lab preview and making them a fully-supported part of Jutro. As a result, there are breaking changes in micro frontends.
Ab Jutro 8.9.0 können Sie Micro Frontends nicht mehr mit Webpack 4 verwenden. Sie müssen auf Webpack 5 aktualisieren. Siehe unseren Webpack-Migrationsleitfaden.
Deprecated components
There are a number of deprecated components in this release. See our list of deprecations for more information.
8.8.0
Breaking changes in authentication
Due to potential security risks, the default storage location for access tokens is now memory instead of localStorage. See the authentication documentation for more information.
8.7.0
Breaking changes in micro-frontends
-
If
integrateAuthorintegrateJutrois enabled for iframe micro-frontends, you must now provide theauthOverridesobject. If it is disabled, your iframe micro-frontend will use an independent authentication flow andauthOverrideswill be ignored. -
Micro-frontends automatically detect their router basename based on the shell app's current URL at the moment when they mount. See the micro-frontend documentation for more information.
8.6.1
There are no manual upgrade steps for most apps and upgrade is mostly automated. Check out the release notes page for a list of deprecations, known issues, and more.
8.6.0
Security fix for npm users
If you use npm (and package-lock.json), apply the following:
-
Find the
preinstallscript.In the default application structure, it is in
preinstall.jsin your project root. -
Replace
spawnSync('npx', ['force-resolutions@1.0.9'], SPAWN_OPTIONS);with
spawnSync('npx', ['@gwr/force-resolutions@1.0.13'], SPAWN_OPTIONS); -
Remove the
node_modulesdirectory and thepackage-lock.jsonfile. -
Run
npm install.
8.5.0
There are no manual upgrade steps for most apps and upgrade is mostly automated. Check out the release notes page for a list of deprecations, known issues, and more.
8.4.0
There are no manual upgrade steps for most apps and upgrade is mostly automated. Check out the release notes page for a list of deprecations, known issues, and more.
Enable tabbing to disabled buttons and links
A new accessibility feature allows users to tab to disabled buttons and links. If you are upgrading, a codemod disables this option for your application. This is because some of your tests or other functionality might be depending on these elements being taken out of tabbing order.
You should adjust your functionality to make sure buttons and links are tabbable even when disabled. To enable this feature in Jutro, add the following to your src/config/config.json.
{
// ...your other config values
"accessibleDisabled": {
"all": true, // can enable all
"button": true // can enable button, more options coming soon
}
}
8.3.2
There are no manual upgrade steps for most apps and upgrade is mostly automated. Check out the release notes page for a list of deprecations, known issues, and more.
Removed the validateMetadata function
We removed the validateMetadata function from @jutro/uiconfig.
We decided to get rid of Ajv JSON schema validator because of a known security vulnerability.
If you really need the functionality, you can use Ajv CLI or use it at build level. Do not use Ajv at runtime, because that introduces the security threat.
According to IBM:
A carefully crafted JSON schema could be provided that allows execution of other code by prototype pollution.
For more details of the vulnerability, see Security Bulletin: CVE-2020-15366 An issue was discovered in ajv.validate() in Ajv (aka Another JSON Schema Validator) 6.12.2.
8.2.0
There are no manual upgrade steps for most apps and the upgrade is mostly automated. Check out the release notes page for a list of deprecations, known issues, and more.
8.1.0
You need to do a manual upgrade if you are using the useSyncData helper for DataView components, where the data and onComponentRender props are now grouped under viewProps. In this case, you need to replace:
const { data, onComponentRender, ... } = useSyncData(...)
<TableView data={data} onComponentRender={onComponentRender} /> // ...
with
const {
viewProps,
// ...
} = useSyncData(...);
return <TableView {...viewProps} /> // ...
There are deprecations! See our deprecation page for details.