Skip to content

Commit 16e9dd7

Browse files
committed
fix: wrap DownloadButton in ClientOnly to prevent hydration mismatch
useId() generates different IDs on server vs client, and the component uses browser-only APIs (useMediaQuery, document, Teleport). Wrapping in ClientOnly avoids the hydration mismatch entirely.
1 parent e4b803a commit 16e9dd7

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

app/pages/package/[[org]]/[name].vue

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -773,13 +773,15 @@ const showSkeleton = shallowRef(false)
773773
</h2>
774774
<!-- Package manager dropdown + Download button -->
775775
<div class="flex items-center gap-2">
776-
<PackageDownloadButton
777-
v-if="displayVersion"
778-
:package-name="pkg.name"
779-
:version="displayVersion"
780-
:install-size="installSize ?? null"
781-
size="small"
782-
/>
776+
<ClientOnly>
777+
<PackageDownloadButton
778+
v-if="displayVersion"
779+
:package-name="pkg.name"
780+
:version="displayVersion"
781+
:install-size="installSize ?? null"
782+
size="small"
783+
/>
784+
</ClientOnly>
783785
<PackageManagerSelect />
784786
</div>
785787
</div>

0 commit comments

Comments
 (0)