Canvas: single click on <Link> opens the same external URL multiple times

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

In Canvas preview, a <Link> from cursor/canvas triggers multiple opens of the same external URL from one user click (multiple identical browser tabs and/or repeated “open external website” confirmations).

Minimal repro:

import { Link } from "cursor/canvas";

export default function Repro() {
  return <Link href="https://hostsailor.com/">test</Link>;
}

### Steps to Reproduce
1. Create or open a `.canvas.tsx` file and open Canvas preview.
2. Render: `import { Link } from "cursor/canvas";` and `<Link href="https://hostsailor.com/">test</Link>`.
3. Click the link exactly once in the preview.
4. If Cursor asks to allow opening an external site, confirm once.

Actual: several identical tabs/windows open for the same URL, and/or the confirmation dialog appears multiple times.
Expected: one tab and one confirmation per click.

### Expected Behavior
One click on `<Link>` in Canvas preview should open the target URL once (single browser tab / single external open).



### Operating System
Windows 10/11

### Version Information
Version: 3.2.11 (system setup)
VSCode Version: 1.105.1
Commit: e9ee1339915a927dfb2df4a836dd9c8337e17cc0
Date: 2026-04-24T14:36:47.933Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Windows_NT x64 10.0.26200

### For AI issues: which model did you use?
N/A — not an AI/chat issue; Canvas preview / Link navigation.

### For AI issues: add Request ID with privacy disabled
N/A — Canvas `<Link>` opens external URL multiple times; no chat request involved.

### Additional Information
Workaround: avoid `<Link>` in Canvas and show plain URLs as text; then the problem does not occur.

Also observed when `<Link>` was used inside `<Table>` cells; issue may be related to duplicate click/navigation handling in the Canvas webview.

### Does this stop you from using Cursor
No - Cursor works, but with this issue

believe this is the same as the bug I reported, please bump! Canvas SDK: <Link> click handlers leak across webview mounts — clicking a link opens N tabs after N canvas opens

Hey, thanks for the detailed report with steps to repro. This is the same bug as in the thread @kbrouder linked to: Canvas SDK: <Link> click handlers leak across webview mounts — clicking a link opens N tabs after N canvas opens. It’s listener accumulation in the Canvas webview, so the number of tabs opened grows with the number of Canvas tab open and close cycles.

I’ve filed it internally and linked both threads. No ETA yet, but your workaround (using a plain URL as text instead of <Link>) works, and I’d stick with that for now. I’ll reply here once there’s an update on the fix.