The apps/app/package.json file contains several packages whose versions are intentionally pinned due to ESM-only upgrades, upstream bugs, or licensing concerns. These pinning reasons were documented in // comments for dependencies and // comments for defDependencies comment blocks. Since the build environment has significantly changed (webpack → Turbopack), and upstream issues may have been resolved, a systematic audit is needed to determine which packages can now be safely upgraded.
| # | Package | Current Version | Pinning Reason |
|---|---|---|---|
| 1 | @aws-sdk/client-s3, @aws-sdk/s3-request-presigner |
3.454.0 |
Fix version above 3.186.0 required by mongodb@4.16.0 |
| 2 | @keycloak/keycloak-admin-client |
^18.0.0 |
19.0.0+ exports only ESM |
| 3 | bootstrap |
=5.3.2 |
v5.3.3 has a bug (twbs/bootstrap#39798) |
| 4 | escape-string-regexp |
^4.0.0 |
5.0.0+ exports only ESM |
| 5 | next-themes |
^0.2.1 |
0.3.0 causes type error (pacocoursey/next-themes#122) |
| 6 | string-width |
=4.2.2 |
5.0.0+ exports only ESM |
| 7 | @handsontable/react |
=2.1.0 |
v3 requires handsontable >= 7.0.0 |
| 8 | handsontable |
=6.2.2 |
v7.0.0+ is no longer MIT license |
Objective: As a maintainer, I want to verify whether upstream bugs and issues that originally caused version pinning have been resolved, so that I can make informed upgrade decisions.
>=3.186.0 constraint and whether the latest @aws-sdk versions are compatible.Objective: As a maintainer, I want to assess whether ESM-only versions of pinned packages are now compatible with the current Turbopack-based build environment, so that outdated CJS-only constraints can be removed.
escape-string-regexp, string-width, @keycloak/keycloak-admin-client) against the current build pipeline (Turbopack for client, tsc for server).tsconfig.build.server.json), the audit process shall verify whether the server build output format (CJS or ESM) supports importing ESM-only packages.Objective: As a maintainer, I want to confirm that the handsontable/@handsontable/react licensing situation has not changed, so that I can determine whether these packages must remain pinned or can be replaced.
handsontable (=6.2.2) and @handsontable/react (=2.1.0) must remain pinned or an alternative library must be identified.Objective: As a maintainer, I want to upgrade packages that are confirmed safe to update, so that the project benefits from bug fixes, security patches, and new features.
apps/app/package.json and remove or update the corresponding entry in the // comments for dependencies or // comments for defDependencies block.turbo run build --filter @growi/app completes successfully.turbo run lint --filter @growi/app completes without new errors.turbo run test --filter @growi/app passes without new failures.// comments for dependencies and // comments for defDependencies blocks shall accurately reflect only the packages that remain pinned, with updated reasons if applicable.Objective: As a maintainer, I want a clear record of the audit results, so that future maintainers understand which packages were evaluated and why decisions were made.