Skip to content

chore: bump react version for docs - #1245

Merged
markflorkowski merged 16 commits into
mainfrom
mark/bump-react
Dec 11, 2025
Merged

chore: bump react version for docs#1245
markflorkowski merged 16 commits into
mainfrom
mark/bump-react

Conversation

@markflorkowski

@markflorkowski markflorkowski commented Dec 11, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • Chores

    • Updated React, React DOM, Next.js and their TypeScript types across docs, examples, and packages.
    • Reformatted a few build/config entries (non-functional).
    • Pinned a workspace build tool to a specific version to stabilize installs.
  • Enhancement

    • Improved code display component to gracefully handle multiple children, making code blocks more flexible and resilient.

✏️ Tip: You can customize this high-level summary in your review settings.

@changeset-bot

changeset-bot Bot commented Dec 11, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: aa0748e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Dec 11, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
docs-uploadthing Ready Ready Preview Comment Dec 11, 2025 11:32pm
1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
legacy-docs-uploadthing Ignored Ignored Dec 11, 2025 11:32pm

@coderabbitai

coderabbitai Bot commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Bumped Next/React-related dependency versions across docs, examples, packages; added a pnpm workspace override pinning rolldown; reformatted two tsdown.config.ts dts objects; small MDX formatting tweak; relaxed child-handling in CodePanel to accept multiple children (selects first child).

Changes

Cohort / File(s) Change Summary
Dependency bumps (docs, examples, packages, playgrounds)
docs/package.json, examples/*/package.json, playground/package.json, playground-v6/package.json, packages/*/package.json, packages/expo/package.json, packages/shared/package.json, packages/react/package.json, packages/uploadthing/package.json
Updated versions for Next/@next/mdx, React, React DOM, and related @types across many package.json files (examples: next 15.3.1 → 15.5.8, react 19.1.0 → 19.2.2, react-dom 19.1.0 → 19.2.2, @types/react 19.1.2 → 19.2.7, @types/react-dom 19.1.2 → 19.2.3). No other code changes in these files.
Workspace overrides
pnpm-workspace.yaml
Added an overrides entry pinning rolldown to 1.0.0-beta.32.
TypeScript build config formatting
packages/mime-types/tsdown.config.ts, packages/uploadthing/tsdown.config.ts
Reformatted dts object from multi-line to single-line; no semantic change.
Docs formatting
docs/src/app/(docs)/concepts/error-handling/page.mdx
Minor JSDoc indentation/formatting change only.
Component logic change
docs/src/components/Code.tsx
Relaxed CodePanel child handling: removed strict React.Children.only enforcement; when multiple children are passed, the first child is selected for prop extraction instead of throwing. Typing adjusted to allow `React.ReactElement

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Attention points:
    • Run builds/tests for docs/examples after Next/React bumps to detect peer-dependency or breaking changes.
    • Verify pnpm override effects and ensure rolldown pin doesn't create conflicts.
    • Review docs/src/components/Code.tsx usage in MDX/examples to confirm correct prop extraction and rendering when multiple children are present.

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title check ⚠️ Warning The title 'chore: bump react version for docs' is narrowly focused on React version bumping for the docs directory, but the PR encompasses dependency updates across 27+ files including examples, packages, and playgrounds far beyond just 'docs', making the title misleading about the true scope. Revise the title to reflect the full scope, e.g., 'chore: bump React, Next.js, and related dependencies across workspace' or similar, to accurately represent that this is a monorepo-wide dependency update, not just docs-focused.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mark/bump-react

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b1d759e and c8eaa76.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • docs/package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.
📚 Learning: 2024-12-07T18:44:24.444Z
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.

Applied to files:

  • docs/package.json

Comment thread docs/package.json
@pkg-pr-new

pkg-pr-new Bot commented Dec 11, 2025

Copy link
Copy Markdown
More templates

@uploadthing/expo

npm i https://pkg.pr.new/pingdotgg/uploadthing/@uploadthing/expo@1245

@uploadthing/mime-types

npm i https://pkg.pr.new/pingdotgg/uploadthing/@uploadthing/mime-types@1245

@uploadthing/react

npm i https://pkg.pr.new/pingdotgg/uploadthing/@uploadthing/react@1245

@uploadthing/shared

npm i https://pkg.pr.new/pingdotgg/uploadthing/@uploadthing/shared@1245

uploadthing

npm i https://pkg.pr.new/pingdotgg/uploadthing@1245

commit: aa0748e

@github-actions

github-actions Bot commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

📦 Bundle size comparison

Bundle Size (gzip) Visualization
Main 31.16KB See Treemap 📊
PR (f95bfa0) 31.16KB See Treemap 📊
Diff No change

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 0

🧹 Nitpick comments (1)
docs/package.json (1)

20-20: Inconsistent version pinning strategy for React and Next.js dependencies.

The React ecosystem dependencies are pinned to exact versions (19.2.2, 19.2.7, 19.2.3, 15.5.8), while @next/mdx uses a caret range (^15.5.8). This inconsistency could lead to unintended version skew across the workspace if @next/mdx receives minor updates independently.

Consider using exact versions consistently across all React and Next.js-related dependencies:

-    "@next/mdx": "^15.5.8",
+    "@next/mdx": "15.5.8",

Verify that these versions are published and available on the npm registry:

What are the latest published versions of React 19, react-dom 19, @next/mdx 15, and Next.js 15 on npm?

Also applies to: 28-29, 39-39, 44-45

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1781e9f and 034e40f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • docs/package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-12-07T18:44:24.444Z
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.

Applied to files:

  • docs/package.json
📚 Learning: 2025-01-24T01:57:53.903Z
Learnt from: markflorkowski
Repo: pingdotgg/uploadthing PR: 1138
File: playground/package.json:27-27
Timestamp: 2025-01-24T01:57:53.903Z
Learning: When reviewing package versions, verify the latest version from the npm registry instead of making assumptions about version availability. Package versions can change frequently, and cached knowledge about versions can become outdated quickly.

Applied to files:

  • docs/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: bundle-analyze-result
  • GitHub Check: e2e-node (backend-adapters)
🔇 Additional comments (2)
docs/package.json (2)

28-29: Verify lockfile regeneration and workspace-wide coordination.

Per the past review, this React version bump (19.1.0 → 19.2.2) must be coordinated across the workspace. Ensure:

  1. Lockfile updated: The pnpm-lock.yaml (or package-lock.json) has been regenerated with these exact versions.
  2. Workspace consistency: All other workspace packages (packages/uploadthing, packages/mime-types, etc.) that reference React dependencies have been updated or explicitly pinned if needed.
  3. Build & test verification: The docs package builds successfully with these new versions.

The summary mentions changes to tsdown.config.ts and pnpm-workspace.yaml, but these files are not shown in the provided context. Confirm these changes are compatible with the version bumps.

Also applies to: 44-45


44-45: Verify React 19.2.2 compatibility with existing type workarounds.

The React version upgrade from 19.1.0 to 19.2.2 may impact type compatibility. From prior learnings, docs/src/components/Code.tsx uses type casts like as any to work around type mismatches between React 18 and 19. Confirm whether React 19.2.2 resolves these issues or if the workarounds remain necessary.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 3

🧹 Nitpick comments (2)
examples/with-clerk-appdir/package.json (1)

29-29: Consider updating eslint-config-next to match Next.js version.

The example is bumping Next.js to 15.5.8 but eslint-config-next remains at 15.2.3. Consider updating it to 15.5.x for consistency and to ensure linting rules align with the runtime framework version.

Also applies to: 29-29

examples/minimal-appdir/package.json (1)

19-19: Consider updating @next/bundle-analyzer to match Next.js version.

The Next.js version is bumped to 15.5.8 but @next/bundle-analyzer remains at 15.1.3. For consistency and to avoid compatibility issues, update it to 15.5.8 or the latest 15.x version.

Also applies to: 19-19

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 034e40f and ef9e7fb.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (24)
  • docs/src/app/(docs)/concepts/error-handling/page.mdx (1 hunks)
  • examples/backend-adapters/client-react/package.json (1 hunks)
  • examples/minimal-appdir/package.json (1 hunks)
  • examples/minimal-astro-react/package.json (1 hunks)
  • examples/minimal-expo/package.json (2 hunks)
  • examples/minimal-pagedir/package.json (1 hunks)
  • examples/minimal-tanstack-start/package.json (1 hunks)
  • examples/profile-picture/package.json (2 hunks)
  • examples/with-clerk-appdir/package.json (1 hunks)
  • examples/with-clerk-pagesdir/package.json (1 hunks)
  • examples/with-clerk-react-router/package.json (1 hunks)
  • examples/with-clerk-remix/package.json (1 hunks)
  • examples/with-drizzle-appdir/package.json (1 hunks)
  • examples/with-drizzle-pagesdir/package.json (1 hunks)
  • examples/with-novel/package.json (1 hunks)
  • examples/with-react-image-crop/package.json (1 hunks)
  • examples/with-serveractions/package.json (1 hunks)
  • examples/with-tailwindcss/package.json (1 hunks)
  • packages/expo/package.json (1 hunks)
  • packages/react/package.json (2 hunks)
  • packages/shared/package.json (1 hunks)
  • packages/uploadthing/package.json (2 hunks)
  • playground-v6/package.json (1 hunks)
  • playground/package.json (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • packages/react/package.json
  • examples/backend-adapters/client-react/package.json
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.
📚 Learning: 2024-12-07T18:44:24.444Z
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.

Applied to files:

  • examples/minimal-tanstack-start/package.json
  • examples/minimal-astro-react/package.json
  • examples/minimal-pagedir/package.json
  • playground-v6/package.json
  • packages/uploadthing/package.json
  • examples/with-serveractions/package.json
  • examples/profile-picture/package.json
📚 Learning: 2025-01-24T01:57:53.903Z
Learnt from: markflorkowski
Repo: pingdotgg/uploadthing PR: 1138
File: playground/package.json:27-27
Timestamp: 2025-01-24T01:57:53.903Z
Learning: When reviewing package versions, verify the latest version from the npm registry instead of making assumptions about version availability. Package versions can change frequently, and cached knowledge about versions can become outdated quickly.

Applied to files:

  • examples/with-clerk-pagesdir/package.json
  • examples/with-clerk-appdir/package.json
  • examples/with-serveractions/package.json
📚 Learning: 2024-11-07T18:28:14.191Z
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1046
File: playground/package.json:26-26
Timestamp: 2024-11-07T18:28:14.191Z
Learning: In `package.json`, the `typescript-eslint` package is correctly used and should not be replaced with `typescript-eslint/eslint-plugin` and `typescript-eslint/parser` in modern configurations.

Applied to files:

  • packages/uploadthing/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: bundle-analyze-result
  • GitHub Check: e2e-node (minimal-appdir)
  • GitHub Check: e2e-node (minimal-pagedir)
  • GitHub Check: e2e-node (backend-adapters)
  • GitHub Check: typecheck
  • GitHub Check: lint
  • GitHub Check: build
  • GitHub Check: build
🔇 Additional comments (22)
docs/src/app/(docs)/concepts/error-handling/page.mdx (1)

100-103: Formatting adjustment looks good.

The JSDoc closing comment indentation on line 102 is consistent with the surrounding JSDoc blocks and doesn't affect documentation content or rendering.

examples/minimal-tanstack-start/package.json (1)

15-21: React and type definitions properly aligned for version 19.2.2.

The runtime (react 19.2.2, react-dom 19.2.2) and type definitions (@types/react 19.2.7, @types/react-dom 19.2.3) are correctly synchronized. This aligns with the broader PR objective to bump React versions across the repository.

Please confirm that TanStack Start 1.121.32 (unchanged in this update) remains compatible with React 19.2.2. If this example is exercised by tests or CI, the compatibility should be verified there automatically.

examples/with-clerk-remix/package.json (1)

19-20: Verify React/React-DOM version compatibility with Clerk.

React and React-DOM are being bumped from 19.1.x to 19.2.2, along with their type definitions. Ensure that @clerk/remix 4.2.25 has been tested and confirmed compatible with React 19.2.2.

Also applies to: 25-26

examples/with-clerk-react-router/package.json (2)

18-19: Approve React and React-DOM version bumps.

The updates to React 19.2.2 and React-DOM 19.2.2 align with the PR objective and are consistent with the broader version bumping across the repository. React 19.2 includes improvements to SSR streaming, new hooks, and performance tracking that can benefit this example.

Please verify that the specific versions (react@19.2.2 and react-dom@19.2.2) exist on npm and are stable, and confirm compatibility with the react-router v7 and @clerk/react-router dependencies in this example.


26-27: Approve TypeScript type definition updates.

The corresponding type definitions (@types/react@19.2.7 and @types/react-dom@19.2.3) are appropriately bumped alongside the runtime versions. These versions should provide accurate type support for the React 19.2 runtime features.

Confirm that @types/react@19.2.7 and @types/react-dom@19.2.3 are compatible and represent the stable type definitions for React 19.2.x.

examples/minimal-pagedir/package.json (1)

13-21: Verify example code compatibility with React 19.2.2 and Next.js 15.5.8.

The version bumps are reasonable and well-aligned with the broader ecosystem upgrades. However, since this is an example application, it's critical to verify that the code works correctly with these new versions—particularly React 19.2.2, which introduced refinements to hooks and error handling, and Next.js 15.5.8, which added new features like typed routes.

Please confirm:

  1. The example code builds successfully with these versions.
  2. No deprecated or removed React/Next.js APIs are used in the example code.
  3. The example runs without warnings or errors.

If the example code needs updates to work with these versions, please open a follow-up issue or include those changes in this PR.

examples/with-drizzle-appdir/package.json (1)

19-29: Verify eslint-config-next compatibility with Next.js 15.5.8.

The Next.js version was bumped from 15.3.1 to 15.5.8, but eslint-config-next remains at 15.2.3. Typically, eslint-config-next should track the major.minor version of next for full compatibility. Verify that version 15.2.3 is compatible with Next.js 15.5.8, or update it accordingly.

Additionally, Next.js 15 introduced breaking changes for async Request APIs (cookies(), headers(), draftMode, params, searchParams). Confirm that this example does not use these APIs synchronously, or that any necessary code changes have been handled elsewhere.

examples/minimal-astro-react/package.json (1)

18-19: Type definitions are properly aligned with React 19.2.2.

The version bumps are correct: @types/react 19.2.7 and @types/react-dom 19.2.3 are designed for and compatible with React 19.2.2. Exact pinning ensures reproducibility across environments.

playground-v6/package.json (1)

16-17: React and type definitions updated consistently to 19.2.2.

The version bumps are well-aligned: react/react-dom → 19.2.2 with corresponding type definitions (@types/react 19.2.7, @types/react-dom 19.2.3). This keeps the playground synchronized with the React ecosystem upgrade across the monorepo.

examples/minimal-expo/package.json (2)

1-54: Ensure codebase audit for React 19 API removals in this example.

This package.json shows version bumps, but the actual component code and hook usage in this Expo example should be audited to confirm it does not rely on React 19 removed or deprecated APIs:

  • Avoid propTypes and defaultProps on function components
  • Replace useFormState with useActionState (if using forms)
  • Remove any string refs; use callback refs or ref forwarding
  • Avoid legacy Context APIs (contextTypes, getChildContext)
  • Update ref callbacks to not return values (TypeScript error in React 19)
  • Ensure useRef calls include an initial argument

Do you want me to generate a verification script to scan the example code for potential React 19 compatibility issues? Please share the component files if you'd like me to audit them.


36-37: React 19.2.2 is incompatible with react-native 0.74.1 and must be reverted or react-native upgraded.

The npm registry confirms that react-native 0.74.1 (and all subsequent 0.75.x and 0.76.x versions) explicitly requires react ^18.2.0. Setting react to 19.2.2 violates this peer dependency constraint and will cause package manager warnings or installation failures in Expo environments.

Either:

  1. Revert react and react-dom to 18.2.0, or
  2. Upgrade react-native to a future version that supports React 19 (currently unavailable in stable releases)
⛔ Skipped due to learnings
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.
Learnt from: markflorkowski
Repo: pingdotgg/uploadthing PR: 1138
File: playground/package.json:27-27
Timestamp: 2025-01-24T01:57:53.903Z
Learning: When reviewing package versions, verify the latest version from the npm registry instead of making assumptions about version availability. Package versions can change frequently, and cached knowledge about versions can become outdated quickly.
examples/with-drizzle-pagesdir/package.json (1)

19-21: The version bumps to Next.js 15.5.8 and React 19.2.2 are appropriate. Both are stable releases: Next.js 15.5.8 is a security patch addressing CVE-2025-55184/CVE-2025-55183, and React 19.2.2 is a stable patch released in October 2025. Next.js 15.x officially requires React 19+, confirming compatibility. Type definitions are correctly pinned to match.

examples/with-serveractions/package.json (1)

12-14: All specified versions exist on npm and are free of known vulnerabilities. React 19.2.2 and Next.js 15.5.8 are compatible and stable releases, with @types/react and @types/react-dom properly aligned.

examples/with-clerk-pagesdir/package.json (2)

17-19: Core dependency bumps look good, but verify version compatibility.

The bumps to Next 15.5.8, React 19.2.2, and React-DOM 19.2.2 are consistent with the PR's stated goals and match updates across other files in the PR. However, to ensure full compatibility and avoid any subtle breakage, confirm that these specific versions work together correctly in this example.


26-27: TypeScript type definitions correctly updated.

The @types/react and @types/react-dom versions are properly bumped to match the runtime versions (19.2.7 and 19.2.3 respectively for React 19.2.2), ensuring type compatibility.

playground/package.json (1)

17-18: Approve React and React-DOM version bump to 19.2.2.

The minor version bump from 19.1.0 to 19.2.2 is safe and well-aligned with Next.js canary. React 19.2.2 is a patched release that fixes security vulnerabilities from earlier 19.2.x versions, and Next.js canary builds explicitly test and support React 19.2.x. Type definitions (19.2.7 for @types/react and 19.2.3 for @types/react-dom) are properly aligned with the React version.

packages/uploadthing/package.json (1)

174-174: Approve: Dependency bumps align with security patches.

The Next.js bump to 15.5.8 is listed as a patched version for 15.5.x according to the security advisory, ensuring this package includes necessary security fixes.

Also applies to: 185-185

examples/with-react-image-crop/package.json (1)

13-15: Verify version availability: React 19.2.2 and related type definitions.

This example, like others in the PR, bumps React to 19.2.2. npm's latest version listing shows React 19.2.1. Confirm whether 19.2.2 is available or if these should target 19.2.1.

Also applies to: 21-22

packages/shared/package.json (1)

50-50: Confirm React 19.2.2 is the intended version.

This shared package, like others in the monorepo, targets React 19.2.2. Please verify this version exists on npm, as earlier searches showed React 19.2.1 as the latest available.

Also applies to: 56-56

examples/with-tailwindcss/package.json (1)

13-15: Consistent with workspace patterns.

Dependency bumps align with other examples in the PR. Ensure React 19.2.2 is available before merging (noted in other review comments).

Also applies to: 20-21

examples/profile-picture/package.json (1)

23-27: Verify dependency compatibility with React 19.2.x.

This example includes several third-party libraries (next-auth, @auth/drizzle-adapter, lucide-react, radix-ui). Ensure they're compatible with React 19.2.2 once you confirm that version's availability.

Also applies to: 38-39

packages/expo/package.json (1)

45-45: React version 19.2.2 does not exist on npm.

This file specifies React 19.2.2 on line 52, but that version is not published on the npm registry. The latest published version is 19.1.1. Consider bumping to 19.1.1 or an actual 19.2.x version if it becomes available.

Also applies to: 45-45

⛔ Skipped due to learnings
Learnt from: markflorkowski
Repo: pingdotgg/uploadthing PR: 1138
File: playground/package.json:27-27
Timestamp: 2025-01-24T01:57:53.903Z
Learning: When reviewing package versions, verify the latest version from the npm registry instead of making assumptions about version availability. Package versions can change frequently, and cached knowledge about versions can become outdated quickly.
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.

Comment thread examples/with-clerk-pagesdir/package.json Outdated
Comment thread examples/with-drizzle-pagesdir/package.json Outdated
"cmdk": "^1.1.1",
"lucide-react": "^0.469.0",
"next": "15.3.1",
"next": "15.5.8",

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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

cat -n examples/with-novel/package.json

Repository: pingdotgg/uploadthing

Length of output: 1197


🌐 Web query:

React 19.2 release notes features useEffectEvent Activity cacheSignal

💡 Result:

React 19.2 (released Oct 1, 2025) highlights — concise summary:

  • : new component (evolved from Offscreen) that lets you hide/restore child UI and preserve internal state; supports modes (e.g., visible/hidden) so you can pre-render while keeping things out of view and control prioritization. [1]

  • useEffectEvent: new hook to extract the “event” part of effect logic so handlers can read fresh state without forcing effect re-runs or adding those values to effect deps; intended for functions that are conceptually events fired from Effects (don’t overuse to silence linter). [1][2]

  • cacheSignal: server‑components primitive paired with cache(); cacheSignal() gives a signal you can pass (e.g., to fetch) so you know when a cache() lifetime is over and can abort/clean up work when cached results are discarded. (RSC-only.) [1]

  • Other notable additions: performance tracks that surface in browser Performance panel, DOM/SSR improvements (partial pre-rendering / resume APIs, Node/Web Streams), batching changes and various bugfixes. [1][3]

Sources: React 19.2 release post and coverage. [1][2][3]

Sources:
[1] React 19.2 release post (react.dev).
[2] InfoQ coverage of React 19.2.
[3] Release/changelog summary (npm/newreleases).


🌐 Web query:

Next.js 15.5 typed routes stable release

💡 Result:

Yes — typed routes were made stable in Next.js 15.5 (released August 18, 2025). Enable with typedRoutes: true in next.config.ts; the release also added route export validation and the new next typegen command. [1][2]

Sources:
[1] Next.js 15.5 release notes — Next.js blog (Aug 18, 2025).
[2] Coverage summary — InfoQ (Next.js 15.5).


🏁 Script executed:

cd examples/with-novel
pnpm install --frozen-lockfile
pnpm build
pnpm typecheck

Repository: pingdotgg/uploadthing

Length of output: 8626


Build fails with module resolution errors in uploadthing packages.

While the dependency versions are correctly specified (React 19.2.2, Next.js 15.5.8, aligned type definitions), the example fails to build with multiple TypeScript errors:

  • Missing modules: uploadthing/next, uploadthing/server, uploadthing/client, @uploadthing/react/next-ssr-plugin
  • Implicit any type errors in uploadthing/novel-plugin.ts and uploadthing/server.ts

These errors indicate the example's imports from the uploadthing packages are not resolving correctly. This must be resolved before merging—verify either the uploadthing workspace packages export the expected subpaths or update the example's imports to match the available exports.

🤖 Prompt for AI Agents
In examples/with-novel/package.json around line 17 the Next.js version is shown
but the build fails because imports like uploadthing/next, uploadthing/server,
uploadthing/client and @uploadthing/react/next-ssr-plugin are not being resolved
and cause implicit any TypeScript errors; fix by either making the uploadthing
workspace packages expose those subpath entrypoints (add appropriate "exports"
and "types" entries in their package.json files) or change the example to import
from the actual exported entrypoints (e.g., import from 'uploadthing' or
'@uploadthing/react' as published), and ensure the example's package.json uses
workspace: specifiers (or exact published versions) and tsconfig.json path
mappings point to the local packages so TypeScript can resolve types and
eliminate implicit any errors.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 0

♻️ Duplicate comments (1)
docs/package.json (1)

20-20: React/Next/MDX bumps are internally consistent; please confirm workspace + lockfile are updated together

The pins for @next/mdx, next, react, react-dom, and the React type packages are aligned here and look coherent. Please double-check that the same versions are used across all workspace packages and that the lockfile has been regenerated in this PR so docs stay in sync with the rest of the repo; also confirm these exact versions exist on npm when updating the lockfile. Based on learnings, this avoids version drift between docs, examples, and core packages.

Also applies to: 28-29, 39-39, 44-45

🧹 Nitpick comments (1)
docs/src/components/Code.tsx (1)

124-132: Multi-child handling in CodePanel is safe; you could optionally pick the first valid element instead of the first node

The new logic avoids React.Children.only throwing on multiple children and looks functionally safe given the React.isValidElement guard. The only remaining corner case is when there are multiple children and the first node is text/whitespace while a later child carries the code/tag/label props—those props will still be ignored, and code must come from props. If you expect that structure (e.g. MDX wrappers), you could optionally change this to select the first React.isValidElement from React.Children.toArray(children) instead of always taking index 0.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ef9e7fb and 2303e78.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (6)
  • docs/package.json (2 hunks)
  • docs/src/components/Code.tsx (1 hunks)
  • examples/with-clerk-appdir/package.json (1 hunks)
  • examples/with-clerk-pagesdir/package.json (1 hunks)
  • examples/with-drizzle-appdir/package.json (1 hunks)
  • examples/with-drizzle-pagesdir/package.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • examples/with-clerk-pagesdir/package.json
  • examples/with-drizzle-pagesdir/package.json
  • examples/with-drizzle-appdir/package.json
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.
📚 Learning: 2025-01-24T01:57:53.903Z
Learnt from: markflorkowski
Repo: pingdotgg/uploadthing PR: 1138
File: playground/package.json:27-27
Timestamp: 2025-01-24T01:57:53.903Z
Learning: When reviewing package versions, verify the latest version from the npm registry instead of making assumptions about version availability. Package versions can change frequently, and cached knowledge about versions can become outdated quickly.

Applied to files:

  • examples/with-clerk-appdir/package.json
  • docs/package.json
📚 Learning: 2024-12-07T18:44:24.444Z
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.

Applied to files:

  • docs/src/components/Code.tsx
  • docs/package.json
📚 Learning: 2024-09-26T21:08:04.720Z
Learnt from: veloii
Repo: pingdotgg/uploadthing PR: 947
File: packages/react/src/components/primitive/allowed-content.tsx:29-32
Timestamp: 2024-09-26T21:08:04.720Z
Learning: For slot components, sometimes it's preferred to manually specify `children` via props to avoid the appearance of nested elements when they aren't actually nested.

Applied to files:

  • docs/src/components/Code.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: bundle-analyze-result
  • GitHub Check: build
  • GitHub Check: e2e-node (backend-adapters)
🔇 Additional comments (1)
examples/with-clerk-appdir/package.json (1)

17-19: Example app React/Next bumps align with docs; ensure its lockfile and other packages match

The next, react, react-dom, React type packages, and eslint-config-next pins here are consistent with the versions used in docs. Please verify that this example’s lockfile is regenerated and that there are no remaining references to the older React/Next versions elsewhere in the workspace so all examples and docs run against the same stack.

Also applies to: 26-27, 29-29

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 0

🧹 Nitpick comments (1)
docs/src/app/(docs)/concepts/auth-security/page.mdx (1)

16-18: Verify the removal of the Warning component wrapper.

Line 16-18 replaces the <Warning> component with plain text starting with "WARNING: ...". However, the rest of the file still uses MDX components like <Note> (lines 83-87) for semantic structure and styling. This inconsistency is worth clarifying:

  • Is this intentional as part of the React version bump, or an unintended side effect?
  • Should the warning use a styled component for visual hierarchy, especially for a critical security message?
  • If the Warning component was removed, are there other instances in the docs that should be updated for consistency?
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2303e78 and aa0748e.

📒 Files selected for processing (1)
  • docs/src/app/(docs)/concepts/auth-security/page.mdx (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: juliusmarminge
Repo: pingdotgg/uploadthing PR: 1090
File: docs/src/components/Code.tsx:135-137
Timestamp: 2024-12-07T18:44:24.444Z
Learning: In `docs/src/components/Code.tsx`, using type casts like `as any` is acceptable due to type mismatches between React 18 and 19. These casts will be addressed when the project upgrades to React 19.
📚 Learning: 2024-10-08T16:10:15.532Z
Learnt from: markflorkowski
Repo: pingdotgg/uploadthing PR: 978
File: examples/minimal-appdir/src/server/uploadthing.ts:41-43
Timestamp: 2024-10-08T16:10:15.532Z
Learning: In the `examples/minimal-appdir/src/server/uploadthing.ts` and other example files, the commented-out header validation code is intentional and serves as an example for users.

Applied to files:

  • docs/src/app/(docs)/concepts/auth-security/page.mdx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: bundle-analyze-result
  • GitHub Check: e2e-node (backend-adapters)
  • GitHub Check: build

@markflorkowski
markflorkowski merged commit cc32ae1 into main Dec 11, 2025
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant