Skip to content

refactor: use named functions for all default components - #336

Merged
stipsan merged 2 commits into
mainfrom
cursor/named-default-components-0633
Jul 23, 2026
Merged

refactor: use named functions for all default components#336
stipsan merged 2 commits into
mainfrom
cursor/named-default-components-0633

Conversation

@stipsan

@stipsan stipsan commented Jul 23, 2026

Copy link
Copy Markdown
Member

Every default Portable Text component is now a named function declaration instead of an anonymous/inline arrow.

Why

  • React DevTools shows useful names (DefaultH1, DefaultEm, …) instead of anonymous components
  • React Compiler can optimize named function components more reliably

Changes

  • defaults.tsx — block styles + hard break (DefaultNormal, DefaultH1DefaultH6, DefaultBlockquote, DefaultHardBreak)
  • marks.tsx — decorators + link (DefaultEm, DefaultStrong, DefaultCode, DefaultUnderline, DefaultStrikeThrough, DefaultLink)
  • list.tsx — lists + list item (DefaultNumberList, DefaultBulletList, DefaultListItem)
  • unknown.tsx — unknown fallbacks converted from const arrows to named functions

Newly introduced helpers stay module-private; only previously exported symbols (DefaultHardBreak, DefaultListItem, unknown fallbacks, and the default* maps) remain exported.

No behavior or API changes.

Open in Web Open in Cursor 

Anonymous arrow components show up poorly in React DevTools and get
weaker React Compiler coverage. Promote every default block, mark,
list, and unknown renderer to a named function declaration.

Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
@changeset-bot

changeset-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b0a3113

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@portabletext/react Patch

Not sure what this means? Click here to learn what changesets are.

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

Only export components that were already part of the public module
surface; the block/mark/list helpers stay module-private.

Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
@stipsan
stipsan marked this pull request as ready for review July 23, 2026 15:35
@stipsan
stipsan merged commit 282c73d into main Jul 23, 2026
9 checks passed
@stipsan
stipsan deleted the cursor/named-default-components-0633 branch July 23, 2026 15:38
@ecoscript ecoscript Bot mentioned this pull request Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants