Skip to content

refactor(lazy): update component type definitions to require 'x' prop#1910

Open
manudeli wants to merge 11 commits intofeat/stable-lazyfrom
feat/stable-lazy-improve
Open

refactor(lazy): update component type definitions to require 'x' prop#1910
manudeli wants to merge 11 commits intofeat/stable-lazyfrom
feat/stable-lazy-improve

Conversation

@manudeli
Copy link
Copy Markdown
Member

@manudeli manudeli commented Mar 3, 2026

If we stablize lazy, Could we think about this type narrowing? or Promise<void> is better for return type of load?

@coauthors
Copy link
Copy Markdown

coauthors bot commented Mar 3, 2026

People can be co-author:

Candidate Reasons Count Add this as commit message
@manudeli #1910 (comment) #1910 (review) #1910 3 Co-authored-by: manudeli <61593290+manudeli@users.noreply.github.com>
@codecov-commenter #1910 (comment) 1 Co-authored-by: codecov-commenter <65553080+codecov-commenter@users.noreply.github.com>

@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Mar 3, 2026

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

Project Deployment Actions Updated (UTC)
suspensive-next-streaming-react-query Ready Ready Preview, Comment Mar 3, 2026 5:09am
v2.suspensive.org Ready Ready Preview, Comment Mar 3, 2026 5:09am
v3.suspensive.org Ready Ready Preview, Comment Mar 3, 2026 5:09am
visualization.suspensive.org Ready Ready Preview, Comment Mar 3, 2026 5:09am

Request Review

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 3, 2026

⚠️ No Changeset found

Latest commit: 79a4db6

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

…dering

- Modified test assertions in `lazy.spec.tsx` to include the `x` prop in the rendered output of lazy-loaded components.
- Ensured consistency in the expected output across multiple test cases, aligning with recent updates to the `ImportCache` class.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

Size Change: 0 B

Total Size: 81.8 kB

ℹ️ View Unchanged
Filename Size
packages/jotai/dist/Atom-********.cjs 328 B
packages/jotai/dist/Atom-********.mjs 263 B
packages/jotai/dist/Atom.cjs 93 B
packages/jotai/dist/Atom.mjs 87 B
packages/jotai/dist/AtomValue-********.cjs 315 B
packages/jotai/dist/AtomValue-********.mjs 247 B
packages/jotai/dist/AtomValue.cjs 99 B
packages/jotai/dist/AtomValue.mjs 93 B
packages/jotai/dist/index.cjs 150 B
packages/jotai/dist/index.mjs 133 B
packages/jotai/dist/SetAtom-********.cjs 313 B
packages/jotai/dist/SetAtom-********.mjs 246 B
packages/jotai/dist/SetAtom.cjs 97 B
packages/jotai/dist/SetAtom.mjs 91 B
packages/next/dist/index.cjs 256 B
packages/next/dist/index.mjs 250 B
packages/next/dist/react-******.cjs 217 B
packages/next/dist/react-******.mjs 213 B
packages/react-query-4/dist/ClientOnly-********.cjs 394 B
packages/react-query-4/dist/ClientOnly-********.mjs 323 B
packages/react-query-4/dist/createGetQueryClient-********.cjs 1.08 kB
packages/react-query-4/dist/createGetQueryClient-********.mjs 1 kB
packages/react-query-4/dist/createGetQueryClient.cjs 98 B
packages/react-query-4/dist/createGetQueryClient.mjs 91 B
packages/react-query-4/dist/index.cjs 543 B
packages/react-query-4/dist/index.mjs 448 B
packages/react-query-4/dist/infiniteQueryOptions-********.cjs 375 B
packages/react-query-4/dist/infiniteQueryOptions-********.mjs 302 B
packages/react-query-4/dist/infiniteQueryOptions.cjs 98 B
packages/react-query-4/dist/infiniteQueryOptions.mjs 91 B
packages/react-query-4/dist/IsFetching-********.cjs 477 B
packages/react-query-4/dist/IsFetching-********.mjs 399 B
packages/react-query-4/dist/IsFetching.cjs 102 B
packages/react-query-4/dist/IsFetching.mjs 96 B
packages/react-query-4/dist/Mutation-********.cjs 393 B
packages/react-query-4/dist/Mutation-********.mjs 318 B
packages/react-query-4/dist/Mutation.cjs 100 B
packages/react-query-4/dist/Mutation.mjs 94 B
packages/react-query-4/dist/mutationOptions-********.cjs 203 B
packages/react-query-4/dist/mutationOptions-********.mjs 147 B
packages/react-query-4/dist/mutationOptions.cjs 90 B
packages/react-query-4/dist/mutationOptions.mjs 84 B
packages/react-query-4/dist/objectSpread2-********.cjs 799 B
packages/react-query-4/dist/objectSpread2-********.mjs 767 B
packages/react-query-4/dist/objectWithoutProperties-********.cjs 406 B
packages/react-query-4/dist/objectWithoutProperties-********.mjs 366 B
packages/react-query-4/dist/PrefetchInfiniteQuery-********.cjs 476 B
packages/react-query-4/dist/PrefetchInfiniteQuery-********.mjs 407 B
packages/react-query-4/dist/PrefetchInfiniteQuery.cjs 114 B
packages/react-query-4/dist/PrefetchInfiniteQuery.mjs 107 B
packages/react-query-4/dist/PrefetchQuery-********.cjs 463 B
packages/react-query-4/dist/PrefetchQuery-********.mjs 396 B
packages/react-query-4/dist/PrefetchQuery.cjs 105 B
packages/react-query-4/dist/PrefetchQuery.mjs 99 B
packages/react-query-4/dist/QueriesHydration-********.cjs 1.86 kB
packages/react-query-4/dist/QueriesHydration-********.mjs 1.78 kB
packages/react-query-4/dist/QueriesHydration.cjs 93 B
packages/react-query-4/dist/QueriesHydration.mjs 87 B
packages/react-query-4/dist/QueryClientConsumer-********.cjs 356 B
packages/react-query-4/dist/QueryClientConsumer-********.mjs 285 B
packages/react-query-4/dist/QueryClientConsumer.cjs 109 B
packages/react-query-4/dist/QueryClientConsumer.mjs 102 B
packages/react-query-4/dist/queryOptions-********.cjs 366 B
packages/react-query-4/dist/queryOptions-********.mjs 295 B
packages/react-query-4/dist/queryOptions.cjs 89 B
packages/react-query-4/dist/queryOptions.mjs 83 B
packages/react-query-4/dist/SuspenseInfiniteQuery-********.cjs 653 B
packages/react-query-4/dist/SuspenseInfiniteQuery-********.mjs 564 B
packages/react-query-4/dist/SuspenseInfiniteQuery.cjs 114 B
packages/react-query-4/dist/SuspenseInfiniteQuery.mjs 107 B
packages/react-query-4/dist/SuspenseQueries-********.cjs 572 B
packages/react-query-4/dist/SuspenseQueries-********.mjs 487 B
packages/react-query-4/dist/SuspenseQueries.cjs 107 B
packages/react-query-4/dist/SuspenseQueries.mjs 101 B
packages/react-query-4/dist/SuspenseQuery-********.cjs 639 B
packages/react-query-4/dist/SuspenseQuery-********.mjs 554 B
packages/react-query-4/dist/SuspenseQuery.cjs 105 B
packages/react-query-4/dist/SuspenseQuery.mjs 99 B
packages/react-query-4/dist/usePrefetchInfiniteQuery-********.cjs 464 B
packages/react-query-4/dist/usePrefetchInfiniteQuery-********.mjs 400 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.cjs 117 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.mjs 110 B
packages/react-query-4/dist/usePrefetchQuery-********.cjs 455 B
packages/react-query-4/dist/usePrefetchQuery-********.mjs 392 B
packages/react-query-4/dist/usePrefetchQuery.cjs 108 B
packages/react-query-4/dist/usePrefetchQuery.mjs 102 B
packages/react-query-4/dist/useSuspenseInfiniteQuery-********.cjs 380 B
packages/react-query-4/dist/useSuspenseInfiniteQuery-********.mjs 305 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.cjs 117 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.mjs 110 B
packages/react-query-4/dist/useSuspenseQueries-********.cjs 375 B
packages/react-query-4/dist/useSuspenseQueries-********.mjs 300 B
packages/react-query-4/dist/useSuspenseQueries.cjs 111 B
packages/react-query-4/dist/useSuspenseQueries.mjs 104 B
packages/react-query-4/dist/useSuspenseQuery-********.cjs 369 B
packages/react-query-4/dist/useSuspenseQuery-********.mjs 298 B
packages/react-query-4/dist/useSuspenseQuery.cjs 108 B
packages/react-query-4/dist/useSuspenseQuery.mjs 102 B
packages/react-query-5/dist/ClientOnly-********.cjs 394 B
packages/react-query-5/dist/ClientOnly-********.mjs 323 B
packages/react-query-5/dist/createGetQueryClient-********.cjs 1.08 kB
packages/react-query-5/dist/createGetQueryClient-********.mjs 1.01 kB
packages/react-query-5/dist/createGetQueryClient.cjs 98 B
packages/react-query-5/dist/createGetQueryClient.mjs 91 B
packages/react-query-5/dist/index.cjs 536 B
packages/react-query-5/dist/index.mjs 447 B
packages/react-query-5/dist/infiniteQueryOptions-********.cjs 370 B
packages/react-query-5/dist/infiniteQueryOptions-********.mjs 297 B
packages/react-query-5/dist/infiniteQueryOptions.cjs 98 B
packages/react-query-5/dist/infiniteQueryOptions.mjs 91 B
packages/react-query-5/dist/IsFetching-********.cjs 432 B
packages/react-query-5/dist/IsFetching-********.mjs 351 B
packages/react-query-5/dist/IsFetching.cjs 102 B
packages/react-query-5/dist/IsFetching.mjs 96 B
packages/react-query-5/dist/Mutation-********.cjs 393 B
packages/react-query-5/dist/Mutation-********.mjs 318 B
packages/react-query-5/dist/Mutation.cjs 100 B
packages/react-query-5/dist/Mutation.mjs 94 B
packages/react-query-5/dist/mutationOptions-********.cjs 368 B
packages/react-query-5/dist/mutationOptions-********.mjs 296 B
packages/react-query-5/dist/mutationOptions.cjs 90 B
packages/react-query-5/dist/mutationOptions.mjs 84 B
packages/react-query-5/dist/objectSpread2-********.cjs 799 B
packages/react-query-5/dist/objectSpread2-********.mjs 767 B
packages/react-query-5/dist/objectWithoutProperties-********.cjs 406 B
packages/react-query-5/dist/objectWithoutProperties-********.mjs 366 B
packages/react-query-5/dist/PrefetchInfiniteQuery-********.cjs 469 B
packages/react-query-5/dist/PrefetchInfiniteQuery-********.mjs 396 B
packages/react-query-5/dist/PrefetchInfiniteQuery.cjs 114 B
packages/react-query-5/dist/PrefetchInfiniteQuery.mjs 107 B
packages/react-query-5/dist/PrefetchQuery-********.cjs 462 B
packages/react-query-5/dist/PrefetchQuery-********.mjs 390 B
packages/react-query-5/dist/PrefetchQuery.cjs 105 B
packages/react-query-5/dist/PrefetchQuery.mjs 99 B
packages/react-query-5/dist/QueriesHydration-********.cjs 1.87 kB
packages/react-query-5/dist/QueriesHydration-********.mjs 1.79 kB
packages/react-query-5/dist/QueriesHydration.cjs 93 B
packages/react-query-5/dist/QueriesHydration.mjs 87 B
packages/react-query-5/dist/QueryClientConsumer-********.cjs 358 B
packages/react-query-5/dist/QueryClientConsumer-********.mjs 281 B
packages/react-query-5/dist/QueryClientConsumer.cjs 109 B
packages/react-query-5/dist/QueryClientConsumer.mjs 102 B
packages/react-query-5/dist/queryOptions-********.cjs 361 B
packages/react-query-5/dist/queryOptions-********.mjs 290 B
packages/react-query-5/dist/queryOptions.cjs 89 B
packages/react-query-5/dist/queryOptions.mjs 83 B
packages/react-query-5/dist/SuspenseInfiniteQuery-********.cjs 654 B
packages/react-query-5/dist/SuspenseInfiniteQuery-********.mjs 566 B
packages/react-query-5/dist/SuspenseInfiniteQuery.cjs 114 B
packages/react-query-5/dist/SuspenseInfiniteQuery.mjs 107 B
packages/react-query-5/dist/SuspenseQueries-********.cjs 588 B
packages/react-query-5/dist/SuspenseQueries-********.mjs 505 B
packages/react-query-5/dist/SuspenseQueries.cjs 107 B
packages/react-query-5/dist/SuspenseQueries.mjs 101 B
packages/react-query-5/dist/SuspenseQuery-********.cjs 630 B
packages/react-query-5/dist/SuspenseQuery-********.mjs 543 B
packages/react-query-5/dist/SuspenseQuery.cjs 105 B
packages/react-query-5/dist/SuspenseQuery.mjs 99 B
packages/react-query-5/dist/usePrefetchInfiniteQuery-********.cjs 373 B
packages/react-query-5/dist/usePrefetchInfiniteQuery-********.mjs 301 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.cjs 117 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.mjs 110 B
packages/react-query-5/dist/usePrefetchQuery-********.cjs 369 B
packages/react-query-5/dist/usePrefetchQuery-********.mjs 297 B
packages/react-query-5/dist/usePrefetchQuery.cjs 108 B
packages/react-query-5/dist/usePrefetchQuery.mjs 102 B
packages/react-query-5/dist/useSuspenseInfiniteQuery-********.cjs 374 B
packages/react-query-5/dist/useSuspenseInfiniteQuery-********.mjs 299 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.cjs 117 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.mjs 110 B
packages/react-query-5/dist/useSuspenseQueries-********.cjs 369 B
packages/react-query-5/dist/useSuspenseQueries-********.mjs 294 B
packages/react-query-5/dist/useSuspenseQueries.cjs 111 B
packages/react-query-5/dist/useSuspenseQueries.mjs 104 B
packages/react-query-5/dist/useSuspenseQuery-********.cjs 363 B
packages/react-query-5/dist/useSuspenseQuery-********.mjs 292 B
packages/react-query-5/dist/useSuspenseQuery.cjs 108 B
packages/react-query-5/dist/useSuspenseQuery.mjs 102 B
packages/react-query/dist/index.cjs 351 B
packages/react-query/dist/index.mjs 201 B
packages/react-query/dist/v4.cjs 351 B
packages/react-query/dist/v4.mjs 201 B
packages/react-query/dist/v5.cjs 351 B
packages/react-query/dist/v5.mjs 201 B
packages/react/dist/ClientOnly-********.cjs 611 B
packages/react/dist/ClientOnly-********.mjs 536 B
packages/react/dist/ClientOnly.cjs 97 B
packages/react/dist/ClientOnly.mjs 91 B
packages/react/dist/DefaultProps-********.cjs 991 B
packages/react/dist/DefaultProps-********.mjs 935 B
packages/react/dist/DefaultProps.cjs 118 B
packages/react/dist/DefaultProps.mjs 114 B
packages/react/dist/DefaultPropsContexts-********.cjs 324 B
packages/react/dist/DefaultPropsContexts-********.mjs 254 B
packages/react/dist/Delay-********.cjs 1.08 kB
packages/react/dist/Delay-********.mjs 1.03 kB
packages/react/dist/Delay.cjs 94 B
packages/react/dist/Delay.mjs 88 B
packages/react/dist/ErrorBoundary-********.cjs 2.14 kB
packages/react/dist/ErrorBoundary-********.mjs 2.1 kB
packages/react/dist/ErrorBoundary.cjs 134 B
packages/react/dist/ErrorBoundary.mjs 132 B
packages/react/dist/ErrorBoundaryGroup-********.cjs 1.19 kB
packages/react/dist/ErrorBoundaryGroup-********.mjs 1.13 kB
packages/react/dist/ErrorBoundaryGroup.cjs 133 B
packages/react/dist/ErrorBoundaryGroup.mjs 132 B
packages/react/dist/index.cjs 368 B
packages/react/dist/index.mjs 329 B
packages/react/dist/lazy-********.cjs 1.97 kB
packages/react/dist/lazy-********.mjs 1.91 kB
packages/react/dist/lazy.cjs 127 B
packages/react/dist/lazy.mjs 128 B
packages/react/dist/objectSpread2-********.cjs 805 B
packages/react/dist/objectSpread2-********.mjs 773 B
packages/react/dist/objectWithoutProperties-********.cjs 413 B
packages/react/dist/objectWithoutProperties-********.mjs 372 B
packages/react/dist/Suspense-********.cjs 907 B
packages/react/dist/Suspense-********.mjs 839 B
packages/react/dist/Suspense.cjs 98 B
packages/react/dist/Suspense.mjs 92 B
packages/react/dist/SuspensiveError-********.cjs 517 B
packages/react/dist/SuspensiveError-********.mjs 444 B
packages/react/dist/useIsClient-********.cjs 306 B
packages/react/dist/useIsClient-********.mjs 246 B
packages/react/dist/useIsClient.cjs 98 B
packages/react/dist/useIsClient.mjs 92 B

compressed-size-action

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.05%. Comparing base (e037282) to head (79a4db6).

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                @@
##           feat/stable-lazy    #1910   +/-   ##
=================================================
  Coverage             94.05%   94.05%           
=================================================
  Files                    41       41           
  Lines                   656      656           
  Branches                167      168    +1     
=================================================
  Hits                    617      617           
  Misses                   36       36           
  Partials                  3        3           
Components Coverage Δ
@suspensive/react 100.00% <100.00%> (ø)
@suspensive/react-query 100.00% <ø> (ø)
@suspensive/react-query-4 100.00% <ø> (ø)
@suspensive/react-query-5 100.00% <ø> (ø)
@suspensive/jotai 100.00% <ø> (ø)
@suspensive/codemods 81.60% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@manudeli manudeli requested a review from marshallku March 3, 2026 05:17
Comment on lines +3 to +5
interface LazyOptions<TComponentType extends ComponentType<any>> {
onSuccess?: ({ load }: { load: () => Promise<{ default: TComponentType }> }) => void
onError?: ({ error, load }: { error: unknown; load: () => Promise<{ default: TComponentType }> }) => void
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@marshallku I don't know if we do type narrowing is better. but ComponentType is bad so I made suggestion

@manudeli manudeli self-assigned this Mar 3, 2026
@manudeli manudeli marked this pull request as ready for review March 3, 2026 05:23
@manudeli manudeli requested a review from kangju2000 as a code owner March 3, 2026 05:23
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.

3 participants