Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ export class HashedLinkService { ... }

[See README](https://github.com/calcom/cal.com#development)

### React Version Standard

This monorepo has standardized on **React 19** (e.g., `react@19.2.4`, `@types/react@19.0.0`). We are using React 19 instead of React 18 because Next.js 16 does not support React 18. Please ensure any new apps, packages, or updates use React 19 to avoid version drift and hydration mismatches.

## Building

You can build the project with:
Expand Down
6 changes: 3 additions & 3 deletions apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@
"posthog-js": "1.274.1",
"qrcode": "1.5.1",
"raw-body": "2.5.2",
"react": "18.2.0",
"react": "19.2.4",
"react-digit-input": "2.1.0",
"react-dom": "18.2.0",
"react-dom": "19.2.4",
Comment on lines +123 to +125
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

What are the peerDependencies for @testing-library/react@13.3.0, and which @testing-library/react versions officially support React 19?

💡 Result:

Web search failed: Server error: no LLM provider could handle the message


🏁 Script executed:

#!/bin/bash
# Query npm registry for `@testing-library/react` versions and peerDependencies
npm view `@testing-library/react`@13.3.0 peerDependencies --json 2>/dev/null || echo "npm not available, trying alternative"

Repository: calcom/cal.com

Length of output: 108


🌐 Web query:

@testing-library/react 13.3.0 React 19 compatibility

💡 Result:

Web search failed: Server error: no LLM provider could handle the message


🏁 Script executed:

#!/bin/bash
# Check recent `@testing-library/react` versions and their React peer dependencies
npm view `@testing-library/react` versions --json 2>/dev/null | tail -20 && echo "---" && npm view `@testing-library/react`@16.0.1 peerDependencies --json 2>/dev/null

Repository: calcom/cal.com

Length of output: 440


🏁 Script executed:

#!/bin/bash
# Check the latest `@testing-library/react` version (16.3.2)
npm view `@testing-library/react`@16.3.2 peerDependencies --json 2>/dev/null

Repository: calcom/cal.com

Length of output: 251


🏁 Script executed:

#!/bin/bash
# Check version 16.3.0 peer dependencies
npm view `@testing-library/react`@16.3.0 peerDependencies --json 2>/dev/null

Repository: calcom/cal.com

Length of output: 251


Update @testing-library/react to a version supporting React 19.

Line 161 pins @testing-library/react to 13.3.0, which requires React ^18.0.0 and is incompatible with the React 19 upgrade at Lines 123 and 125. Upgrade to version 16.3.0 or later, which explicitly supports both React 18 and React 19.

Suggested fix
-    "@testing-library/react": "13.3.0",
+    "@testing-library/react": "16.3.2",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/package.json` around lines 123 - 125, Update the
`@testing-library/react` dependency in package.json from the pinned "13.3.0" to a
version that supports React 19 (for example change "@testing-library/react" to
"^16.3.0" or a later compatible release); update the lockfile (npm/yarn/pnpm)
and run install to ensure the new version is resolved and tests still pass, and
verify no other test-related deps require simultaneous upgrades.

"react-easy-crop": "3.5.3",
"react-hook-form": "7.43.3",
"react-i18next": "12.3.1",
Expand Down Expand Up @@ -175,7 +175,7 @@
"@types/module-alias": "2.0.1",
"@types/nodemailer": "6.4.5",
"@types/qrcode": "1.4.3",
"@types/react": "18.0.26",
"@types/react": "19.0.0",
"@types/remove-markdown": "0.3.1",
"@types/sanitize-html": "2.9.0",
"@types/stripe": "8.0.417",
Expand Down
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,10 @@
"@isaacs/brace-expansion": "5.0.1",
"types-ramda": "0.29.4",
"@apidevtools/json-schema-ref-parser": "9.0.9",
"@types/react": "18.0.26",
"@types/react-dom": "^18.0.9",
"@types/react": "19.0.0",
"@types/react-dom": "^19.0.0",
"react": "19.2.4",
"react-dom": "19.2.4",
"@types/node": "^20.17.23",
"next-i18next@^13.2.2": "patch:next-i18next@npm%3A13.3.0#./.yarn/patches/next-i18next-npm-13.3.0-bf25b0943c.patch",
"libphonenumber-js": "patch:libphonenumber-js@1.12.38#./.yarn/patches/libphonenumber-js+1.12.38.patch",
Expand Down
71 changes: 26 additions & 45 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3399,7 +3399,7 @@ __metadata:
"@types/module-alias": "npm:2.0.1"
"@types/nodemailer": "npm:6.4.5"
"@types/qrcode": "npm:1.4.3"
"@types/react": "npm:18.0.26"
"@types/react": "npm:19.0.0"
"@types/remove-markdown": "npm:0.3.1"
"@types/sanitize-html": "npm:2.9.0"
"@types/stripe": "npm:8.0.417"
Expand Down Expand Up @@ -3456,9 +3456,9 @@ __metadata:
posthog-js: "npm:1.274.1"
qrcode: "npm:1.5.1"
raw-body: "npm:2.5.2"
react: "npm:18.2.0"
react: "npm:19.2.4"
react-digit-input: "npm:2.1.0"
react-dom: "npm:18.2.0"
react-dom: "npm:19.2.4"
react-easy-crop: "npm:3.5.3"
react-hook-form: "npm:7.43.3"
react-i18next: "npm:12.3.1"
Expand Down Expand Up @@ -16176,13 +16176,6 @@ __metadata:
languageName: node
linkType: hard

"@types/prop-types@npm:*":
version: 15.7.5
resolution: "@types/prop-types@npm:15.7.5"
checksum: 10/5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980
languageName: node
linkType: hard

"@types/qrcode@npm:1.4.3":
version: 1.4.3
resolution: "@types/qrcode@npm:1.4.3"
Expand Down Expand Up @@ -16215,12 +16208,12 @@ __metadata:
languageName: node
linkType: hard

"@types/react-dom@npm:^18.0.9":
version: 18.2.6
resolution: "@types/react-dom@npm:18.2.6"
dependencies:
"@types/react": "npm:*"
checksum: 10/dbdf98d127db58130f3e4394f23a6b4b200703049579e97a4e6049c0f47f871c7731cec37e2067afb62cc7c5486bd1b151fc0ef672b9ea7369c40d811592b948
"@types/react-dom@npm:^19.0.0":
version: 19.2.3
resolution: "@types/react-dom@npm:19.2.3"
peerDependencies:
"@types/react": ^19.2.0
checksum: 10/616c4a8aee250ea05fb1e7b98e7e00475dd3a6c1c30d7be18b4b93caba832f4203106b3a496a6b147e5acc2da14575eca47bce234c633bca1f8430ef8ffb234a
languageName: node
linkType: hard

Expand All @@ -16245,14 +16238,12 @@ __metadata:
languageName: node
linkType: hard

"@types/react@npm:18.0.26":
version: 18.0.26
resolution: "@types/react@npm:18.0.26"
"@types/react@npm:19.0.0":
version: 19.0.0
resolution: "@types/react@npm:19.0.0"
dependencies:
"@types/prop-types": "npm:*"
"@types/scheduler": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10/2c20b70468511f3393a60c39d2633d554c5f8a85b48ec7beff396fc01b4bfdb655a277a8d1d9c3bf6e944f8573bc693d8c95973f379c9534a4368bb8d430b0d1
checksum: 10/5596d9a2c9c982d5e86add54f5d9b115153c4d47073dd3f8f8369a5e5b7f3088d614a935f85a2cf26eb6631d7ebebc7b913c5d22bf880847370070f2e60e63e6
languageName: node
linkType: hard

Expand Down Expand Up @@ -16296,13 +16287,6 @@ __metadata:
languageName: node
linkType: hard

"@types/scheduler@npm:*":
version: 0.16.2
resolution: "@types/scheduler@npm:0.16.2"
checksum: 10/b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc
languageName: node
linkType: hard

"@types/send@npm:*":
version: 0.17.4
resolution: "@types/send@npm:0.17.4"
Expand Down Expand Up @@ -33354,15 +33338,14 @@ __metadata:
languageName: node
linkType: hard

"react-dom@npm:18.2.0":
version: 18.2.0
resolution: "react-dom@npm:18.2.0"
"react-dom@npm:19.2.4":
version: 19.2.4
resolution: "react-dom@npm:19.2.4"
dependencies:
loose-envify: "npm:^1.1.0"
scheduler: "npm:^0.23.0"
scheduler: "npm:^0.27.0"
peerDependencies:
react: ^18.2.0
checksum: 10/ca5e7762ec8c17a472a3605b6f111895c9f87ac7d43a610ab7024f68cd833d08eda0625ce02ec7178cc1f3c957cf0b9273cdc17aa2cd02da87544331c43b1d21
react: ^19.2.4
checksum: 10/ec17721a8cb131bc33480a9f738bc5bbfe4bd11b11cf69f3f473605346578a329ad26ceef6ef0761ea67a4b455803407dd7ed4ba3d8a5abd2cee8c32d221e498
languageName: node
linkType: hard

Expand Down Expand Up @@ -33817,15 +33800,6 @@ __metadata:
languageName: node
linkType: hard

"react@npm:18.2.0":
version: 18.2.0
resolution: "react@npm:18.2.0"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10/b9214a9bd79e99d08de55f8bef2b7fc8c39630be97c4e29d7be173d14a9a10670b5325e94485f74cd8bff4966ef3c78ee53c79a7b0b9b70cba20aa8973acc694
languageName: node
linkType: hard

"react@npm:19.2.4":
version: 19.2.4
resolution: "react@npm:19.2.4"
Expand Down Expand Up @@ -34823,6 +34797,13 @@ __metadata:
languageName: node
linkType: hard

"scheduler@npm:^0.27.0":
version: 0.27.0
resolution: "scheduler@npm:0.27.0"
checksum: 10/eab3c3a8373195173e59c147224fc30dabe6dd453f248f5e610e8458512a5a2ee3a06465dc400ebfe6d35c9f5b7f3bb6b2e41c88c86fd177c25a73e7286a1e06
languageName: node
linkType: hard

"schema-dts@npm:1.1.0":
version: 1.1.0
resolution: "schema-dts@npm:1.1.0"
Expand Down
Loading