Skip to content

Pages Router: <Link> onClick / preventDefault() semantics broken in new-link-behavior mode #1470

Description

@james-elicx

This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-22).

Problem

The Pages Router <Link> shim does not correctly invoke onClick handlers and does not honor event.preventDefault() when running in new-link-behavior mode. Clicks on a Link with an onClick prop do not fire the user's handler, and preventDefault() inside it does not block the resulting navigation.

onClick prop not fired on Link click; preventDefault() does not block navigation

Estimated Impact

~2 test failures across the deploy suite.

Affected Test Suites

  • test/e2e/new-link-behavior/index.test.ts (2 failures)

Recommendation

  1. Reproduce first in vinext's own test suite. Add a <Link onClick={(e) => { e.preventDefault(); spy(); }} href="/x"> test and assert spy ran and the address bar did not change.

  2. Match Next.js click-handler semantics. Invoke onClick first, check event.defaultPrevented, and only call router.push() if the click is not prevented.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions