Skip to content

dev: Use devComponent in lazy#2389

Closed
thetarnav wants to merge 2 commits into
solidjs:mainfrom
thetarnav:lazy-use-devComponent
Closed

dev: Use devComponent in lazy#2389
thetarnav wants to merge 2 commits into
solidjs:mainfrom
thetarnav:lazy-use-devComponent

Conversation

@thetarnav
Copy link
Copy Markdown
Contributor

Because lazy doesn't call the component function using JSX or createComponent it doesn't show up in the devtools properly.
This replaces the function call with devComponent if in dev mode.

Although it may be a bit odd, as devComponent is an internal-only api, and lazy should probably be fully implementable in userland, right?
Maybe there is a way to just use createComponent there, as the logic is very similar.

return createMemo(() => (Comp = comp()) ? createComponent(Comp, props) : "")

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Dec 27, 2024

⚠️ No Changeset found

Latest commit: 8492549

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

@coveralls
Copy link
Copy Markdown

Pull Request Test Coverage Report for Build 12521432658

Details

  • 3 of 3 (100.0%) changed or added relevant lines in 1 file are covered.
  • 1 unchanged line in 1 file lost coverage.
  • Overall coverage increased (+1.3%) to 86.957%

Files with Coverage Reduction New Missed Lines %
packages/solid/src/reactive/scheduler.ts 1 80.95%
Totals Coverage Status
Change from base Build 11846786421: 1.3%
Covered Lines: 2332
Relevant Lines: 2612

💛 - Coveralls

thetarnav added a commit to thetarnav/solid-devtools that referenced this pull request Dec 28, 2024
@thetarnav thetarnav changed the title Use devComponent in lazy for devtools support dev: Use devComponent in lazy Jan 3, 2025
@ryansolid
Copy link
Copy Markdown
Member

My only concern with this is does this impact hydration.. like component counting mismatch. I haven't been able to verify but when we choose to create component vs not is usually very intentional for matching hydration IDs.

@ryansolid
Copy link
Copy Markdown
Member

Thanks for the PR. The devtools issue is real: lazy currently bypasses the normal component creation path, so lazy-loaded components do not get the same dev metadata as regular JSX-created components.

I’m hesitant to merge this as-is for 1.x, though. lazy has always been a sensitive path for hydration, and switching from a direct component call to devComponent changes owner creation in dev mode. Hydration IDs/counting are very sensitive to where owners are created, so I’d want targeted SSR/hydration tests before making that change.

For Solid 2 this area has changed enough that this PR is stale it should be easy to implement because components no longer count towards ID. For 1.x, I think the issue is worth solving, but the fix needs to either prove hydration parity or use a metadata approach that does not alter the lazy component owner structure.

@ryansolid ryansolid closed this May 14, 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.

3 participants