Skip to content

Upgrade payload 3.70.0->3.79.0#423

Merged
tadjh merged 11 commits intodevfrom
espdesign/upgrade-payload-3.79
Mar 18, 2026
Merged

Upgrade payload 3.70.0->3.79.0#423
tadjh merged 11 commits intodevfrom
espdesign/upgrade-payload-3.79

Conversation

@espdesign
Copy link
Copy Markdown
Contributor

Context

BREAKING CHANGES:

The only listed breaking changes are in payload 3.79.0. Two of them.

  • rename widget ComponentPath to Component for consistency (#15780) (f7d0d04
    - Renames Widget.ComponentPath to Widget.Component and types it as PayloadComponentinstead ofstring - This aligns dashboard widgets with every other component reference in (collections, globals, fields, admin components) - none of them _path_ in the property name, and all of them are typed asPayloadComponent - Enables new [typescript plugin](https://github.com/payloadcms/payload/pull/15779) to work for widget paths (the plugin usesPayloadComponentcontextual type detection -string`-typed properties were invisible to it)
  • ui: typo in CodeEditor export statement (#15795) (c5b2a91)

Lexical Upgrade 0.35.0 → 0.41.0 (richtext-lexical) — Upgrades the Lexical rich text editor dependency from v0.35.0 to v0.41.0. Includes upstream fixes like normalizeMarkdown (facebook/lexical#7812). All Lexical breaking changes are handled internally by Payload — no action required for standard usage. If you installed lexical manually, update it to 0.41.0 (though using the re-exported versions from @payloadcms/richtext-lexical/lexical/* is recommended). #15760

Anaylsis of codebase vs breaking changes

Project does not currently define any custom dashboard widgets in payload.config.ts, we are using the default payload dashboard.

codebase already correctly imports Lexical types via @payloadcms/richtext-lexical/lexical (which is the recommended pattern)

CodeEditor, we are not importing or using the CodeEditor component

Changes Made

Downgraded next: 15.5.9 → 15.4.11
Upgraded lucide-react: 0.378.0 → ^0.471.0 (latest)
Upgraded baseline-browser-mapping (latest)
Remove lexical dependency

Further analysis after upgrade using gemini

1. Payload CMS Compatibility Gap

Payload CMS 3.x relies on internal Next.js routing behaviors that were altered in version 15.5. Staying on 15.5.9 introduced:

  • Build Failures: Next.js 15.5's new strict TypeScript route validation rejects Payload's auto-generated API route types (specifically the RouteHandlerConfig).

  • Admin UI Slowness: Documented performance regressions in 15.5 cause the Payload Admin panel to experience massive load-time spikes (reported jumps from 2s to 30s+).

    OLD dev tested by espdesign
    ✓ Compiled /admin/[[...segments]] in 5.5s (6831 modules)
    NEW dev tested by espdesign
    ` ✓ Compiled /admin/[[...segments]] in 9s (7912 modules

  • HMR Instability: Turbopack HMR in 15.5 frequently fails to find client modules in the manifest, leading to frequent "Module not found" errors during development.

Result: Reverting to 15.4.11 restores the "Stable Zone" for Payload 3.x, ensuring fast Admin UI performance and successful production builds.

2. React 19 Peer Conflict

The previous version of lucide-react was hard-coded to expect React 18 or older.

  • Fix: Upgrading to the latest version of lucide-react adds official support for React 19, resolving the peer dependency warning.

Further changes:

`[baseline-browser-mapping] The data in this module is over two months old.  To ensure accurate Baseline data, please update: `npm i baseline-
browser-mapping@latest -D

Migrations:

No :)

[22:04:26] INFO: Migration DOWN statements generation complete.
✔ No schema changes detected. Would you like to create a blank migration file? … no

Test Plan

Confirm on staging.
Confirm on dev.

…de next to 15.4.11 from 15.5.9. Additionally upgrade baseline-browser-mapping to 2.10.0
@espdesign espdesign requested a review from tadjh March 11, 2026 02:08
@espdesign espdesign linked an issue Mar 11, 2026 that may be closed by this pull request
@espdesign espdesign added the ready for review The pull request is ready for review label Mar 11, 2026
@espdesign espdesign changed the title Espdesign/upgrade payload 3.79 Upgrade payload 3.70.0->3.79.0 Mar 11, 2026
tadjh
tadjh previously approved these changes Mar 12, 2026
@tadjh tadjh added approved and removed ready for review The pull request is ready for review labels Mar 12, 2026
@tadjh tadjh merged commit 399843d into dev Mar 18, 2026
1 check passed
@tadjh tadjh deleted the espdesign/upgrade-payload-3.79 branch March 18, 2026 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade payload, and other dependencies

2 participants