Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 15, 2025

  • Rename onError prop to onCatch in ErrorBoundary types (ErrorBoundaryProps)
  • Update componentDidCatch to call onCatch instead of onError
  • Update all test files to use onCatch instead of onError
  • Update English documentation (en/docs/react/ErrorBoundary.mdx)
  • Update Korean documentation (ko/docs/react/ErrorBoundary.mdx)
  • Update migration documentation (migrate-to-v2.mdx for both en and ko) Reverted - v1-to-v2 migration docs should remain unchanged
  • Add migrate-to-v4 guide documenting the breaking change from onError to onCatch (both English and Korean)
  • Update visualization example file to use onCatch
  • Run tests to verify all changes work correctly
  • Build project to ensure no errors
  • Check for any other files that might reference onError

All changes have been successfully completed! The ErrorBoundary component now uses onCatch instead of onError as the prop name, which better aligns with the naming convention (matching shouldCatch and componentDidCatch).

Migration Guide

A comprehensive migrate-to-v4 guide has been added to help users transition from onError to onCatch. The guide includes:

  • Clear explanation of the breaking change and its rationale
  • Code examples showing the exact changes needed for both regular usage and ErrorBoundary.with pattern
  • Available in both English and Korean

Note: The v1-to-v2 migration documentation has been kept unchanged as it documents historical migration from v1 to v2, not current v4 changes.

Fixes #1783

Original prompt

This section details on the original issue you should resolve

<issue_title>[Feature]: ErrorBoundary onError -> onCatch (BREAKING CHANGE)</issue_title>
<issue_description>### Package Scope

@suspensive/react

Description

If ErrorBoundary has shouldCatch and the React Component method has componentDidCatch, isn't it better to name onError as onCatch?

Callback passed by onError prop is only called when an Error caught by shouldCatch is caught. changing prop name is a breaking change, so I'm considering whether to reflect it in v4.

Possible Solution

No response

etc.

No response</issue_description>

<agent_instructions>This branch is for major versioning with BREAKING CHANGE</agent_instructions>

Comments on the Issue (you are @copilot in this section)

Fixes #1783


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot
Copy link

changeset-bot bot commented Oct 15, 2025

⚠️ No Changeset found

Latest commit: 0818186

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
Copy link

vercel bot commented Oct 15, 2025

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

Project Deployment Preview Comments Updated (UTC)
v2.suspensive.org Ready Ready Preview Comment Oct 15, 2025 6:26am
v3.suspensive.org Ready Ready Preview Comment Oct 15, 2025 6:26am
visualization.suspensive.org Ready Ready Preview Comment Oct 15, 2025 6:26am

@coauthors
Copy link

coauthors bot commented Oct 15, 2025

People can be co-author:

Candidate Reasons Count Add this as commit message
@Copilot #1784 (comment) #1784 (comment) #1784 3 Co-authored-by: Copilot <[email protected]>
@manudeli #1784 (comment) #1784 (review) #1784 (comment) 3 Co-authored-by: manudeli <[email protected]>

.ErrorBoundary({
fallback: ({ error }) => <>{error.message}</>,
onError: logger.log,
onCatch: logger.log,
Copy link
Member

Choose a reason for hiding this comment

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

@copilot This is a migration guide from v1 to v2. Please do not do this.
Not only this MDX, but other migration docs should also be kept

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Reverted the changes to both English and Korean v1-to-v2 migration docs. These docs should remain unchanged as they document the historical migration from v1 to v2. (commit e5cc944)

Copilot AI changed the title [WIP] Rename onError prop to onCatch with breaking change feat(react): Rename ErrorBoundary onError to onCatch (BREAKING CHANGE) Oct 15, 2025
Copilot AI requested a review from manudeli October 15, 2025 05:42
Copilot finished work on behalf of manudeli October 15, 2025 05:42
@github-actions
Copy link

github-actions bot commented Oct 15, 2025

Size Change: -12 B (-0.01%)

Total Size: 80.2 kB

Filename Size Change
packages/react/dist/ErrorBoundary-********.js 2.08 kB -2 B (-0.1%)
packages/react/dist/ErrorBoundary-********.cjs 2.19 kB -4 B (-0.18%)
packages/react/dist/ErrorBoundary.cjs 193 B -1 B (-0.52%)
packages/react/dist/ErrorBoundary.js 174 B -1 B (-0.57%)
packages/react/dist/index.cjs 458 B -1 B (-0.22%)
packages/react/dist/index.js 391 B -3 B (-0.76%)
ℹ️ View Unchanged
Filename Size
packages/jotai/dist/Atom-********.cjs 383 B
packages/jotai/dist/Atom-********.js 265 B
packages/jotai/dist/Atom.cjs 93 B
packages/jotai/dist/Atom.js 80 B
packages/jotai/dist/AtomValue-********.js 241 B
packages/jotai/dist/AtomValue-********.cjs 375 B
packages/jotai/dist/AtomValue.cjs 99 B
packages/jotai/dist/AtomValue.js 85 B
packages/jotai/dist/chunk-********.cjs 542 B
packages/jotai/dist/index.cjs 151 B
packages/jotai/dist/index.js 125 B
packages/jotai/dist/SetAtom-********.cjs 368 B
packages/jotai/dist/SetAtom-********.js 239 B
packages/jotai/dist/SetAtom.cjs 97 B
packages/jotai/dist/SetAtom.js 83 B
packages/react-dom/dist/FadeIn-********.js 391 B
packages/react-dom/dist/FadeIn-********.cjs 506 B
packages/react-dom/dist/FadeIn.cjs 131 B
packages/react-dom/dist/FadeIn.js 116 B
packages/react-dom/dist/index.cjs 174 B
packages/react-dom/dist/index.js 146 B
packages/react-dom/dist/InView-********.cjs 747 B
packages/react-dom/dist/InView-********.js 664 B
packages/react-dom/dist/InView.cjs 113 B
packages/react-dom/dist/InView.js 99 B
packages/react-dom/dist/useFadeIn-********.js 425 B
packages/react-dom/dist/useFadeIn-********.cjs 512 B
packages/react-dom/dist/useFadeIn.cjs 122 B
packages/react-dom/dist/useFadeIn.js 107 B
packages/react-dom/dist/useInView-********.cjs 2.06 kB
packages/react-dom/dist/useInView-********.js 1.61 kB
packages/react-dom/dist/useInView.cjs 99 B
packages/react-dom/dist/useInView.js 85 B
packages/react-native/dist/index.cjs 98 B
packages/react-native/dist/index.js 84 B
packages/react-native/dist/TestText-********.cjs 707 B
packages/react-native/dist/TestText-********.js 211 B
packages/react-native/dist/TestText.cjs 98 B
packages/react-native/dist/TestText.js 84 B
packages/react-query-4/dist/chunk-********.cjs 542 B
packages/react-query-4/dist/index.cjs 522 B
packages/react-query-4/dist/index.js 439 B
packages/react-query-4/dist/infiniteQueryOptions-********.js 308 B
packages/react-query-4/dist/infiniteQueryOptions-********.cjs 431 B
packages/react-query-4/dist/infiniteQueryOptions.cjs 111 B
packages/react-query-4/dist/infiniteQueryOptions.js 96 B
packages/react-query-4/dist/IsFetching-********.js 268 B
packages/react-query-4/dist/IsFetching-********.cjs 408 B
packages/react-query-4/dist/IsFetching.cjs 100 B
packages/react-query-4/dist/IsFetching.js 86 B
packages/react-query-4/dist/Mutation-********.cjs 447 B
packages/react-query-4/dist/Mutation-********.js 314 B
packages/react-query-4/dist/Mutation.cjs 135 B
packages/react-query-4/dist/Mutation.js 120 B
packages/react-query-4/dist/mutationOptions-********.js 153 B
packages/react-query-4/dist/mutationOptions-********.cjs 210 B
packages/react-query-4/dist/mutationOptions.cjs 103 B
packages/react-query-4/dist/mutationOptions.js 89 B
packages/react-query-4/dist/objectWithoutProperties-********.js 370 B
packages/react-query-4/dist/objectWithoutProperties-********.cjs 413 B
packages/react-query-4/dist/PrefetchInfiniteQuery-********.js 408 B
packages/react-query-4/dist/PrefetchInfiniteQuery-********.cjs 521 B
packages/react-query-4/dist/PrefetchInfiniteQuery.cjs 131 B
packages/react-query-4/dist/PrefetchInfiniteQuery.js 115 B
packages/react-query-4/dist/PrefetchQuery-********.js 396 B
packages/react-query-4/dist/PrefetchQuery-********.cjs 513 B
packages/react-query-4/dist/PrefetchQuery.cjs 122 B
packages/react-query-4/dist/PrefetchQuery.js 105 B
packages/react-query-4/dist/QueryClientConsumer-********.cjs 422 B
packages/react-query-4/dist/QueryClientConsumer-********.js 283 B
packages/react-query-4/dist/QueryClientConsumer.cjs 107 B
packages/react-query-4/dist/QueryClientConsumer.js 92 B
packages/react-query-4/dist/queryOptions-********.cjs 424 B
packages/react-query-4/dist/queryOptions-********.js 304 B
packages/react-query-4/dist/queryOptions.cjs 102 B
packages/react-query-4/dist/queryOptions.js 88 B
packages/react-query-4/dist/SuspenseInfiniteQuery-********.cjs 708 B
packages/react-query-4/dist/SuspenseInfiniteQuery-********.js 563 B
packages/react-query-4/dist/SuspenseInfiniteQuery.cjs 147 B
packages/react-query-4/dist/SuspenseInfiniteQuery.js 133 B
packages/react-query-4/dist/SuspenseQueries-********.cjs 636 B
packages/react-query-4/dist/SuspenseQueries-********.js 493 B
packages/react-query-4/dist/SuspenseQueries.cjs 105 B
packages/react-query-4/dist/SuspenseQueries.js 91 B
packages/react-query-4/dist/SuspenseQuery-********.cjs 690 B
packages/react-query-4/dist/SuspenseQuery-********.js 552 B
packages/react-query-4/dist/SuspenseQuery.cjs 140 B
packages/react-query-4/dist/SuspenseQuery.js 125 B
packages/react-query-4/dist/usePrefetchInfiniteQuery-********.js 404 B
packages/react-query-4/dist/usePrefetchInfiniteQuery-********.cjs 518 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.cjs 115 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.js 100 B
packages/react-query-4/dist/usePrefetchQuery-********.js 395 B
packages/react-query-4/dist/usePrefetchQuery-********.cjs 513 B
packages/react-query-4/dist/usePrefetchQuery.cjs 106 B
packages/react-query-4/dist/usePrefetchQuery.js 92 B
packages/react-query-4/dist/useSuspenseInfiniteQuery-********.cjs 438 B
packages/react-query-4/dist/useSuspenseInfiniteQuery-********.js 313 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.cjs 115 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.js 100 B
packages/react-query-4/dist/useSuspenseQueries-********.js 307 B
packages/react-query-4/dist/useSuspenseQueries-********.cjs 432 B
packages/react-query-4/dist/useSuspenseQueries.cjs 109 B
packages/react-query-4/dist/useSuspenseQueries.js 94 B
packages/react-query-4/dist/useSuspenseQuery-********.js 305 B
packages/react-query-4/dist/useSuspenseQuery-********.cjs 431 B
packages/react-query-4/dist/useSuspenseQuery.cjs 106 B
packages/react-query-4/dist/useSuspenseQuery.js 92 B
packages/react-query-5/dist/chunk-********.cjs 542 B
packages/react-query-5/dist/index.cjs 519 B
packages/react-query-5/dist/index.js 429 B
packages/react-query-5/dist/infiniteQueryOptions-********.js 303 B
packages/react-query-5/dist/infiniteQueryOptions-********.cjs 427 B
packages/react-query-5/dist/infiniteQueryOptions.cjs 111 B
packages/react-query-5/dist/infiniteQueryOptions.js 96 B
packages/react-query-5/dist/IsFetching-********.js 349 B
packages/react-query-5/dist/IsFetching-********.cjs 484 B
packages/react-query-5/dist/IsFetching.cjs 137 B
packages/react-query-5/dist/IsFetching.js 122 B
packages/react-query-5/dist/Mutation-********.cjs 445 B
packages/react-query-5/dist/Mutation-********.js 313 B
packages/react-query-5/dist/Mutation.cjs 135 B
packages/react-query-5/dist/Mutation.js 120 B
packages/react-query-5/dist/mutationOptions-********.cjs 423 B
packages/react-query-5/dist/mutationOptions-********.js 302 B
packages/react-query-5/dist/mutationOptions.cjs 103 B
packages/react-query-5/dist/mutationOptions.js 89 B
packages/react-query-5/dist/objectWithoutProperties-********.cjs 413 B
packages/react-query-5/dist/objectWithoutProperties-********.js 370 B
packages/react-query-5/dist/PrefetchInfiniteQuery-********.js 399 B
packages/react-query-5/dist/PrefetchInfiniteQuery-********.cjs 536 B
packages/react-query-5/dist/PrefetchInfiniteQuery.cjs 112 B
packages/react-query-5/dist/PrefetchInfiniteQuery.js 97 B
packages/react-query-5/dist/PrefetchQuery-********.cjs 529 B
packages/react-query-5/dist/PrefetchQuery-********.js 390 B
packages/react-query-5/dist/PrefetchQuery.cjs 103 B
packages/react-query-5/dist/PrefetchQuery.js 89 B
packages/react-query-5/dist/QueryClientConsumer-********.cjs 423 B
packages/react-query-5/dist/QueryClientConsumer-********.js 284 B
packages/react-query-5/dist/QueryClientConsumer.cjs 107 B
packages/react-query-5/dist/QueryClientConsumer.js 92 B
packages/react-query-5/dist/queryOptions-********.cjs 421 B
packages/react-query-5/dist/queryOptions-********.js 297 B
packages/react-query-5/dist/queryOptions.cjs 102 B
packages/react-query-5/dist/queryOptions.js 88 B
packages/react-query-5/dist/SuspenseInfiniteQuery-********.js 562 B
packages/react-query-5/dist/SuspenseInfiniteQuery-********.cjs 709 B
packages/react-query-5/dist/SuspenseInfiniteQuery.cjs 148 B
packages/react-query-5/dist/SuspenseInfiniteQuery.js 133 B
packages/react-query-5/dist/SuspenseQueries-********.cjs 652 B
packages/react-query-5/dist/SuspenseQueries-********.js 506 B
packages/react-query-5/dist/SuspenseQueries.cjs 105 B
packages/react-query-5/dist/SuspenseQueries.js 91 B
packages/react-query-5/dist/SuspenseQuery-********.cjs 687 B
packages/react-query-5/dist/SuspenseQuery-********.js 540 B
packages/react-query-5/dist/SuspenseQuery.cjs 141 B
packages/react-query-5/dist/SuspenseQuery.js 125 B
packages/react-query-5/dist/usePrefetchInfiniteQuery-********.js 307 B
packages/react-query-5/dist/usePrefetchInfiniteQuery-********.cjs 433 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.cjs 115 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.js 100 B
packages/react-query-5/dist/usePrefetchQuery-********.cjs 424 B
packages/react-query-5/dist/usePrefetchQuery-********.js 302 B
packages/react-query-5/dist/usePrefetchQuery.cjs 106 B
packages/react-query-5/dist/usePrefetchQuery.js 92 B
packages/react-query-5/dist/useSuspenseInfiniteQuery-********.js 307 B
packages/react-query-5/dist/useSuspenseInfiniteQuery-********.cjs 428 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.cjs 115 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.js 100 B
packages/react-query-5/dist/useSuspenseQueries-********.js 301 B
packages/react-query-5/dist/useSuspenseQueries-********.cjs 424 B
packages/react-query-5/dist/useSuspenseQueries.cjs 109 B
packages/react-query-5/dist/useSuspenseQueries.js 94 B
packages/react-query-5/dist/useSuspenseQuery-********.cjs 423 B
packages/react-query-5/dist/useSuspenseQuery-********.js 298 B
packages/react-query-5/dist/useSuspenseQuery.cjs 106 B
packages/react-query-5/dist/useSuspenseQuery.js 92 B
packages/react-query/dist/chunk-********.cjs 542 B
packages/react-query/dist/index.cjs 381 B
packages/react-query/dist/index.js 190 B
packages/react-query/dist/v4.cjs 381 B
packages/react-query/dist/v4.js 190 B
packages/react-query/dist/v5.cjs 381 B
packages/react-query/dist/v5.js 190 B
packages/react/dist/chunk-********.cjs 542 B
packages/react/dist/ClientOnly-********.js 529 B
packages/react/dist/ClientOnly-********.cjs 645 B
packages/react/dist/ClientOnly.cjs 159 B
packages/react/dist/ClientOnly.js 142 B
packages/react/dist/DefaultProps-********.cjs 1.03 kB
packages/react/dist/DefaultProps-********.js 919 B
packages/react/dist/DefaultProps.cjs 163 B
packages/react/dist/DefaultProps.js 147 B
packages/react/dist/DefaultPropsContexts-********.cjs 372 B
packages/react/dist/DefaultPropsContexts-********.js 250 B
packages/react/dist/Delay-********.js 1.02 kB
packages/react/dist/Delay-********.cjs 1.13 kB
packages/react/dist/Delay.cjs 179 B
packages/react/dist/Delay.js 161 B
packages/react/dist/ErrorBoundaryGroup-********.cjs 1.23 kB
packages/react/dist/ErrorBoundaryGroup-********.js 1.1 kB
packages/react/dist/ErrorBoundaryGroup.cjs 182 B
packages/react/dist/ErrorBoundaryGroup.js 161 B
packages/react/dist/lazy-********.js 1.98 kB
packages/react/dist/lazy-********.cjs 2.1 kB
packages/react/dist/lazy.cjs 191 B
packages/react/dist/lazy.js 171 B
packages/react/dist/noop-********.js 138 B
packages/react/dist/noop-********.cjs 201 B
packages/react/dist/objectSpread2-********.js 771 B
packages/react/dist/objectSpread2-********.cjs 807 B
packages/react/dist/objectWithoutProperties-********.js 370 B
packages/react/dist/objectWithoutProperties-********.cjs 413 B
packages/react/dist/Suspense-********.cjs 950 B
packages/react/dist/Suspense-********.js 829 B
packages/react/dist/Suspense.cjs 226 B
packages/react/dist/Suspense.js 207 B
packages/react/dist/SuspensiveError-********.cjs 518 B
packages/react/dist/SuspensiveError-********.js 428 B
packages/react/dist/useIsClient-********.cjs 350 B
packages/react/dist/useIsClient-********.js 243 B
packages/react/dist/useIsClient.cjs 117 B
packages/react/dist/useIsClient.js 101 B

compressed-size-action

Copilot finished work on behalf of manudeli October 15, 2025 05:48
@manudeli
Copy link
Member

@copilot @suspensive/react's migration guide is needed. you can check other migration guide. make it simillar

Copy link
Contributor Author

Copilot AI commented Oct 15, 2025

@copilot @suspensive/react's migration guide is needed. you can check other migration guide. make it simillar

Created migrate-to-v4 migration guides for both English and Korean following the same format as other migration guides. The guides document the onError to onCatch breaking change with clear migration examples. (commit 95e6c1d)

…h renaming in English and Korean documentation
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.

2 participants