Skip to content

[Beta]: Table vertical arrow navigation flashes an intermediate caret between cells #5084

Description

@felixfeng33

Bug type

Regression (worked before, now fails)

Testing lane: Plate next branch / beta.

The beta classification is confirmed by the reporter. The second recording shows the current next/beta failure; the exact next commit or beta package version is not verified. The first recording is a normal-working comparison, but its exact build is also not verified.

Browser surface

Yes

Owner surface

Plate framework or plugin

Summary

On the current Plate next/beta build shown in the second recording, pressing ArrowUp or ArrowDown at a table-cell boundary briefly renders a stale native caret or selection indicator before the caret settles in the adjacent cell. The first recording is a normal-working comparison and does not show this flicker.

Public reproduction URL

NOT_ENOUGH_INFO

Steps to reproduce

  1. Open the Plate AI editor demo containing the “How Plate Compares” table.
  2. Place a collapsed caret at the end of text in a table cell, such as “Suggestions” in the first column.
  3. Press ArrowUp or ArrowDown repeatedly so the caret crosses row boundaries.
  4. Watch the source cell during each cross-cell move.

Expected behavior

The caret should move directly to the adjacent cell in the same column without painting an intermediate caret or selection state. This is the behavior required by the fix in PR #4923, the @platejs/table 52.3.18 changelog, and docs/solutions/logic-errors/2026-03-29-table-arrow-navigation-must-own-moveline-and-visual-line-boundaries.md.

Actual behavior

In the second recording from the current next/beta lane, the final caret lands in the adjacent cell, but a transient caret or selection indicator appears in the prior/intermediate cell during vertical navigation. The first recording shows the expected direct movement without this transient state.

Acceptance criteria

  • Plain ArrowUp and ArrowDown cross-cell navigation paints only the final caret in the adjacent cell.
  • No stale native caret, cell selection border, or other intermediate selection state appears in a captured browser frame.
  • Native vertical movement remains inside multi-block, soft-break, and soft-wrapped cells until the caret reaches the first or last visual line.
  • Browser regression coverage exercises repeated upward and downward movement in the table demo.

Regression range

last-known-good: NOT_ENOUGH_INFO
first-known-bad: NOT_ENOUGH_INFO
evidence: "The first supplied recording shows the expected behavior and is the normal-working comparison; its exact build is not verified. The second recording shows the failure on the current next/beta lane. PR #4923 and @platejs/table 52.3.18 document the intended fix; the exact next commit or beta package version is not verified."

Reproducibility

Repeated in the second supplied recording from the current next/beta lane. The transient state is absent from the first, normal-working comparison recording. Cross-session reproducibility is not verified.

Plate / Plite / React versions

plate: NOT_ENOUGH_INFO
plite: NOT_ENOUGH_INFO
plite-react: NOT_ENOUGH_INFO
react: NOT_ENOUGH_INFO

Operating system

macOS, inferred from CleanShot X recording metadata; OS version NOT_ENOUGH_INFO

Install method

NOT_ENOUGH_INFO

Framework / app setup

Second recording: Plate next/beta AI editor demo. First recording: normal-working comparison. Exact route, framework versions, commits, and package builds are NOT_ENOUGH_INFO.

Affected packages or entry points

@platejs/table; Plate AI editor demo containing the “How Plate Compares” table

Minimal code or config excerpt

NOT_ENOUGH_INFO

Logs, screenshots, and evidence

Normal-working reference (expected direct vertical cell transitions, approximately 00:01–00:05):

CleanShot.2026-08-05.at.17.04.06.mp4

Current next/beta bug reproduction (caret moving from “Suggestions” through adjacent rows, approximately 00:01–00:05):

CleanShot.2026-08-05.at.17.04.35.mp4

Maintainer Codex context

route: NOT_ENOUGH_INFO
likely owner: packages/table/src/react/TablePlugin.tsx
prior fix: https://github.com/udecode/plate/pull/4923
expected-behavior authority: packages/table/CHANGELOG.md and docs/solutions/logic-errors/2026-03-29-table-arrow-navigation-must-own-moveline-and-visual-line-boundaries.md
duplicate scan: no open or closed udecode/plate issue matched the same table + vertical arrow + transient caret trigger; PR #4923 is the exact prior fix.
known blocker: exact demo URL, next commit, beta package version, and browser version are not visible in the recordings

Impact and severity

Affected: users navigating Plate table cells with vertical arrow keys.

Severity: annoying visual regression; the final caret position is correct in the supplied recordings, and no data loss is observed.

Frequency: repeated in the second next/beta recording; absent from the first normal-working comparison recording.

Consequence: visible selection flicker during ordinary keyboard navigation and reduced confidence in caret position.

Additional information

The failure in the second, current beta/next recording matches the behavior fixed by PR #4923, merged on 2026-03-29 and released in @platejs/table 52.3.18. The first recording demonstrates the expected behavior but does not identify an exact last-known-good build; the first-known-bad commit and beta package version also remain NOT_ENOUGH_INFO.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions