peer dependency not recognized and major update applied

Author: syriuszbCreated Sep 2, 2026Updated Sep 17, 2026

Not found.

$ ncu -v
23.1.0
$ node -v
v26.8.1

Steps to Reproduce

.ncurc:

$ cat ~/.ncurc.json 
{
  "peer": true,
  "cooldown": 3
}

npm:

$ npm -v
12.0.2

Dependencies:

$ cat package.json 
{
...
  "dependencies": {
    "@fullcalendar/core": "6.1.21",
    "@fullcalendar/daygrid": "6.1.21",
    "@fullcalendar/interaction": "6.1.21",
    "@fullcalendar/react": "6.1.21",
    "@fullcalendar/timegrid": "6.1.21",
    "@mantine/core": "9.5.2",
    "@mantine/dates": "9.5.2",
    "@mantine/form": "9.5.2",
    "@mantine/hooks": "9.5.2",
    "@mantine/notifications": "9.5.2",
    "@tabler/icons-react": "3.46.0",
    "axios": "1.20.0",
    "dayjs": "1.11.23",
    "i18next": "26.4.0",
    "i18next-browser-languagedetector": "8.2.1",
    "i18next-http-backend": "4.0.1",
    "jotai": "2.20.3",
    "jwt-decode": "4.0.0",
    "nuqs": "2.10.1",
    "query-string": "9.5.0",
    "react": "19.2.8",
    "react-dom": "19.2.8",
    "react-error-boundary": "6.1.3",
    "react-i18next": "17.0.12",
    "react-oidc-context": "3.3.1",
    "wouter": "3.10.0"
  },
  "devDependencies": {
    "@eslint/js": "9.39.2",
    "@stylistic/eslint-plugin": "5.10.0",
    "@vitejs/plugin-basic-ssl": "2.3.0",
    "@vitejs/plugin-react": "6.1.1",
    "cypress": "15.21.1",
    "cypress-fail-fast": "8.1.0",
    "cypress-plugin-steps": "1.2.1",
    "cypress-split": "1.25.0",
    "eslint": "9.39.5",
    "eslint-plugin-cypress": "6.4.3",
    "eslint-plugin-react": "7.37.5",
    "eslint-plugin-react-hooks": "7.1.1",
    "globals": "17.11.0",
    "postcss": "8.5.26",
    "postcss-preset-mantine": "1.18.0",
    "postcss-simple-vars": "7.0.1",
    "vite": "8.2.2",
    "wick-a11y": "3.0.2"
  }
}

Steps:

$ ncu
Using config file /home/[...redacted...]/.ncurc.json
Checking /home/[...redacted...]/app/package.json
[====================] 44/44 100%
[====================] 44/44 100%
[====================] 3/3 100%

Major   Potentially breaking API changes
 @fullcalendar/react  6.1.21  →  7.0.2
[====================] 5/5 100%

Ignored incompatible updates (peer dependencies):

 @fullcalendar/core     6.1.21  →   7.0.2  reason: @fullcalendar/daygrid requires ~6.1.21, @fullcalendar/interaction requires ~6.1.21, @fullcalendar/timegrid requires ~6.1.21
 @eslint/js             9.39.2  →  10.0.1  reason: @eslint/js requires eslint ^10.0.0
 eslint                 9.39.5  →  10.9.1  reason: eslint-plugin-react requires ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
 eslint-plugin-cypress   6.4.3  →   7.0.1  reason: eslint-plugin-cypress requires eslint >=10

Run ncu -u to upgrade package.json
$ ncu -u
Using config file /home/[...redacted...]/.ncurc.json
Upgrading /home/[...redacted...]/app/package.json
[====================] 44/44 100%
[====================] 44/44 100%
[====================] 3/3 100%

Major   Potentially breaking API changes
 @fullcalendar/react  6.1.21  →  7.0.2
[====================] 5/5 100%

Ignored incompatible updates (peer dependencies):

 @fullcalendar/core     6.1.21  →   7.0.2  reason: @fullcalendar/daygrid requires ~6.1.21, @fullcalendar/interaction requires ~6.1.21, @fullcalendar/timegrid requires ~6.1.21
 @eslint/js             9.39.2  →  10.0.1  reason: @eslint/js requires eslint ^10.0.0
 eslint                 9.39.5  →  10.9.1  reason: eslint-plugin-react requires ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
 eslint-plugin-cypress   6.4.3  →   7.0.1  reason: eslint-plugin-cypress requires eslint >=10

Run npm install to install new versions.
$ git diff ./package.json
diff --git a/app/package.json b/app/package.json
index 123dc89..9a85232 100644
--- a/app/package.json
+++ b/app/package.json
@@ -13,7 +13,7 @@
     "@fullcalendar/core": "6.1.21",
     "@fullcalendar/daygrid": "6.1.21",
     "@fullcalendar/interaction": "6.1.21",
-    "@fullcalendar/react": "6.1.21",
+    "@fullcalendar/react": "7.0.2",
     "@fullcalendar/timegrid": "6.1.21",
     "@mantine/core": "9.5.2",
     "@mantine/dates": "9.5.2",

Current Behavior

Peer dependency is properly recognized in case of ex. @fullcalendar/daygrid package, so this package is not updated, but peer dependency is NOT recognized in case of @fullcalendar/react package and as a result this package is updated, so the whole app is broken.

Both mentioned packages has exactly the same peer dependency included in their package.json file:

$ cat ./node_modules/@fullcalendar/daygrid/package.json | grep 'peerDependencies' -A 2
  "peerDependencies": {
    "@fullcalendar/core": "~6.1.21"
  },
$ cat ./node_modules/@fullcalendar/react/package.json | grep 'peerDependencies' -A 4
  "peerDependencies": {
    "@fullcalendar/core": "~6.1.21",
    "react": "^16.7.0 || ^17 || ^18 || ^19",
    "react-dom": "^16.7.0 || ^17 || ^18 || ^19"
  },

Expected Behavior

@fullcalendar/react package should be properly recognized as incompatible change so update should be skipped.

Source: raineorshine/npm-check-updates