Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3 #1423

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft

v3 #1423

wants to merge 4 commits into from

Conversation

manudeli
Copy link
Member

@manudeli manudeli commented Jan 30, 2025

close #1108 close #1349 close #1325

Suspensive v3

PR Checklist

  • I did below actions if need
  1. I read the Contributing Guide
  2. I added documents and tests.

Copy link

coauthors bot commented Jan 30, 2025

People can be co-author:

Candidate Reasons Count Add this as commit message
@manudeli #1423 1 Co-authored-by: manudeli <[email protected]>
@codecov-commenter #1423 (comment) 1 Co-authored-by: codecov-commenter <[email protected]>

Copy link

vercel bot commented Jan 30, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
suspensive.org ✅ Ready (Inspect) Visit Preview 💬 Add feedback Feb 1, 2025 11:38am
v1.suspensive.org ✅ Ready (Inspect) Visit Preview 💬 Add feedback Feb 1, 2025 11:38am
visualization.suspensive.org ✅ Ready (Inspect) Visit Preview 💬 Add feedback Feb 1, 2025 11:38am

Copy link

github-actions bot commented Jan 30, 2025

Size Change: -5.26 kB (-7.62%) ✅

Total Size: 63.8 kB

Filename Size Change
packages/react-query-4/dist/index.cjs 1.63 kB -227 B (-12.21%) 👏
packages/react-query-4/dist/index.js 372 B -22 B (-5.58%)
packages/react-query-4/dist/QueryErrorBoundary.cjs 0 B -1.12 kB (removed) 🏆
packages/react-query-4/dist/QueryErrorBoundary.js 0 B -142 B (removed) 🏆
packages/react-query-5/dist/index.cjs 1.36 kB -396 B (-22.49%) 🎉
packages/react-query-5/dist/index.js 370 B -21 B (-5.37%)
packages/react-query-5/dist/QueryErrorBoundary.cjs 0 B -1.12 kB (removed) 🏆
packages/react-query-5/dist/QueryErrorBoundary.js 0 B -142 B (removed) 🏆
packages/react-query-5/dist/SuspenseQuery.js 136 B -1 B (-0.73%)
packages/react/dist/Delay.js 158 B -1 B (-0.63%)
packages/react/dist/DevMode.cjs 0 B -530 B (removed) 🏆
packages/react/dist/DevMode.js 0 B -131 B (removed) 🏆
packages/react/dist/ErrorBoundary.cjs 2.82 kB +93 B (+3.41%)
packages/react/dist/ErrorBoundary.js 205 B +1 B (+0.49%)
packages/react/dist/index.cjs 4.19 kB -122 B (-2.83%)
packages/react/dist/index.js 331 B -36 B (-9.81%) 👏
packages/react/dist/Suspensive.cjs 0 B -1.26 kB (removed) 🏆
packages/react/dist/Suspensive.js 0 B -175 B (removed) 🏆
packages/react/dist/wrap.cjs 3.86 kB +94 B (+2.49%)
ℹ️ View Unchanged
Filename Size
packages/jotai/dist/Atom.cjs 660 B
packages/jotai/dist/Atom.js 115 B
packages/jotai/dist/AtomValue.cjs 647 B
packages/jotai/dist/AtomValue.js 120 B
packages/jotai/dist/index.cjs 755 B
packages/jotai/dist/index.js 158 B
packages/jotai/dist/SetAtom.cjs 645 B
packages/jotai/dist/SetAtom.js 118 B
packages/react-dom/dist/FadeIn.cjs 2.16 kB
packages/react-dom/dist/FadeIn.js 139 B
packages/react-dom/dist/index.cjs 2.38 kB
packages/react-dom/dist/index.js 176 B
packages/react-dom/dist/InView.cjs 2.12 kB
packages/react-dom/dist/InView.js 130 B
packages/react-dom/dist/useFadeIn.cjs 2.06 kB
packages/react-dom/dist/useFadeIn.js 133 B
packages/react-dom/dist/useInView.cjs 1.89 kB
packages/react-dom/dist/useInView.js 120 B
packages/react-native/dist/index.cjs 619 B
packages/react-native/dist/index.js 122 B
packages/react-native/dist/TestText.cjs 612 B
packages/react-native/dist/TestText.js 119 B
packages/react-query-4/dist/infiniteQueryOptions.cjs 548 B
packages/react-query-4/dist/infiniteQueryOptions.js 144 B
packages/react-query-4/dist/Mutation.cjs 821 B
packages/react-query-4/dist/Mutation.js 132 B
packages/react-query-4/dist/PrefetchInfiniteQuery.cjs 722 B
packages/react-query-4/dist/PrefetchInfiniteQuery.js 155 B
packages/react-query-4/dist/PrefetchQuery.cjs 712 B
packages/react-query-4/dist/PrefetchQuery.js 147 B
packages/react-query-4/dist/QueryClientConsumer.cjs 665 B
packages/react-query-4/dist/QueryClientConsumer.js 140 B
packages/react-query-4/dist/queryOptions.cjs 540 B
packages/react-query-4/dist/queryOptions.js 135 B
packages/react-query-4/dist/SuspenseInfiniteQuery.cjs 1.05 kB
packages/react-query-4/dist/SuspenseInfiniteQuery.js 155 B
packages/react-query-4/dist/SuspenseQueries.cjs 928 B
packages/react-query-4/dist/SuspenseQueries.js 149 B
packages/react-query-4/dist/SuspenseQuery.cjs 1.04 kB
packages/react-query-4/dist/SuspenseQuery.js 147 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.cjs 648 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.js 148 B
packages/react-query-4/dist/usePrefetchQuery.cjs 639 B
packages/react-query-4/dist/usePrefetchQuery.js 140 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.cjs 833 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.js 148 B
packages/react-query-4/dist/useSuspenseQueries.cjs 837 B
packages/react-query-4/dist/useSuspenseQueries.js 142 B
packages/react-query-4/dist/useSuspenseQuery.cjs 824 B
packages/react-query-4/dist/useSuspenseQuery.js 140 B
packages/react-query-5/dist/infiniteQueryOptions.cjs 573 B
packages/react-query-5/dist/infiniteQueryOptions.js 144 B
packages/react-query-5/dist/Mutation.cjs 821 B
packages/react-query-5/dist/Mutation.js 132 B
packages/react-query-5/dist/PrefetchInfiniteQuery.cjs 647 B
packages/react-query-5/dist/PrefetchInfiniteQuery.js 145 B
packages/react-query-5/dist/PrefetchQuery.cjs 639 B
packages/react-query-5/dist/PrefetchQuery.js 137 B
packages/react-query-5/dist/QueryClientConsumer.cjs 663 B
packages/react-query-5/dist/QueryClientConsumer.js 140 B
packages/react-query-5/dist/queryOptions.cjs 563 B
packages/react-query-5/dist/queryOptions.js 136 B
packages/react-query-5/dist/SuspenseInfiniteQuery.cjs 833 B
packages/react-query-5/dist/SuspenseInfiniteQuery.js 145 B
packages/react-query-5/dist/SuspenseQueries.cjs 671 B
packages/react-query-5/dist/SuspenseQueries.js 139 B
packages/react-query-5/dist/SuspenseQuery.cjs 825 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.cjs 577 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.js 148 B
packages/react-query-5/dist/usePrefetchQuery.cjs 569 B
packages/react-query-5/dist/usePrefetchQuery.js 140 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.cjs 577 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.js 148 B
packages/react-query-5/dist/useSuspenseQueries.cjs 571 B
packages/react-query-5/dist/useSuspenseQueries.js 142 B
packages/react-query-5/dist/useSuspenseQuery.cjs 569 B
packages/react-query-5/dist/useSuspenseQuery.js 140 B
packages/react-query/dist/index.cjs 551 B
packages/react-query/dist/index.js 121 B
packages/react-query/dist/v4.cjs 550 B
packages/react-query/dist/v4.js 116 B
packages/react-query/dist/v5.cjs 550 B
packages/react-query/dist/v5.js 116 B
packages/react/dist/ClientOnly.cjs 734 B
packages/react/dist/ClientOnly.js 141 B
packages/react/dist/DefaultProps.cjs 1.05 kB
packages/react/dist/DefaultProps.js 167 B
packages/react/dist/Delay.cjs 1.23 kB
packages/react/dist/ErrorBoundaryGroup.cjs 1.38 kB
packages/react/dist/ErrorBoundaryGroup.js 195 B
packages/react/dist/Suspense.cjs 1.29 kB
packages/react/dist/Suspense.js 171 B
packages/react/dist/wrap.js 209 B

compressed-size-action

@codecov-commenter
Copy link

codecov-commenter commented Jan 30, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 79.40%. Comparing base (4056246) to head (124238c).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1423      +/-   ##
==========================================
+ Coverage   77.21%   79.40%   +2.18%     
==========================================
  Files          71       67       -4     
  Lines         597      573      -24     
  Branches      132      126       -6     
==========================================
- Hits          461      455       -6     
+ Misses        129      113      -16     
+ Partials        7        5       -2     
Components Coverage Δ
@suspensive/react 100.00% <100.00%> (ø)
@suspensive/react-dom 95.60% <ø> (ø)
@suspensive/react-native 100.00% <ø> (ø)
@suspensive/react-query 83.47% <ø> (ø)
@suspensive/react-query-4 0.00% <ø> (ø)
@suspensive/react-query-5 0.00% <ø> (ø)
@suspensive/jotai 0.00% <ø> (ø)
@suspensive/codemods 67.03% <ø> (ø)

Copy link

changeset-bot bot commented Jan 30, 2025

🦋 Changeset detected

Latest commit: 124238c

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

This PR includes changesets to release 5 packages
Name Type
@suspensive/react-query-4 Major
@suspensive/react-query-5 Major
@suspensive/react-query Major
@suspensive/react Major
@suspensive/jotai Major

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

…error (#1409)

🚧 This PR could make a huge difference, so please help us make sure this
change gets a very thorough review. 🚧

```tsx
const Throw = {
  Error: ({ message, after = 0, children }: PropsWithChildren<{ message: string; after?: number }>) => {
    const [isNeedThrow, setIsNeedThrow] = useState(after === 0)
    if (isNeedThrow) {
      throw new Error(message)
    }
    useTimeout(() => setIsNeedThrow(true), after)
    return <>{children}</>
  }
}

const Example = () => (
  <ErrorBoundary fallback={() => <>This is expected</>}>
    <ErrorBoundary
      fallback={() => (
        <Throw.Error message={ERROR_MESSAGE} after={100}>
          ErrorBoundary's fallback before error
        </Throw.Error>
      )}
    >
      <Throw.Error message={ERROR_MESSAGE} after={100}>
        ErrorBoundary's children before error
      </Throw.Error>
    </ErrorBoundary>
  </ErrorBoundary>
)
```

## Problem: ErrorBoundary's fallback can't be treated by parent
ErrorBoundary

<!--
    A clear and concise description of what this pr is about.
 -->
 
Thrown Error in fallback will be caught by ErrorBoundary self and then
expose fallback recursively 🥲
1. ErrorBoundary's children before error
2. ErrorBoundary's fallback before error
3. ErrorBoundary's fallback before error
4. ErrorBoundary's fallback before error
5. ... expose fallback self recursively ... 

## Solution: When we meet thrown error in fallback of ErrorBoundary wrap
it as InternalFallbackError, re-throw
InternalFallbackError.fallbackError, if it is InternalFallbackError

Thrown Error in fallback will be caught by parent ErrorBoundary 👍
1. ErrorBoundary's children before error
2. ErrorBoundary's fallback before error
3. This is expected 

## PR Checklist

- [x] I did below actions if need

1. I read the [Contributing
Guide](https://github.com/toss/suspensive/blob/main/CONTRIBUTING.md)
5. I added documents and tests.

---------

Co-authored-by: Lee HyunJae (whale) <[email protected]>
Co-authored-by: lucas0530 <[email protected]>
Co-authored-by: HYUNGU KANG <[email protected]>
Co-authored-by: Brian Vaughn <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment