Zum Hauptinhalt springen

Upgrade steps (8.1.0 - 8.11.0)

8.11.0​

Warning: Known issue

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.json to:
  "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.json to:
  "engines": {
"node": ">= 18.14.2 < 19",
"npm": ">=8.5.0 || >=9.5.0"
}
Warning: Known Issue

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.

Note: Different versions of Node.js on local and CI environments might lead to inconsistent behavior of unit tests for components which use Intl

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-auth is 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:

scripts/serve.mjs
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:

scripts/build.mjs
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.2 to jutro-docker-dev/node:18.14.2
  • jutro-docker-dev/atmosdeploy-jutro:16.14.2 to jutro-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.

Warning: Nicht verpassen!

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 integrateAuth or integrateJutro is enabled for iframe micro-frontends, you must now provide the authOverrides object. If it is disabled, your iframe micro-frontend will use an independent authentication flow and authOverrides will 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:

  1. Find the preinstall script.

    In the default application structure, it is in preinstall.js in your project root.

  2. Replace

    spawnSync('npx', ['force-resolutions@1.0.9'], SPAWN_OPTIONS);

    with

    spawnSync('npx', ['@gwr/force-resolutions@1.0.13'], SPAWN_OPTIONS);

  3. Remove the node_modules directory and the package-lock.json file.

  4. 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.

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.

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.