Skip to content

fix(map): stop mobile flicker on pin select (no behavior change)#232

Open
badjoke-lab wants to merge 1 commit into
mainfrom
codex/fix-mobile-flicker-on-pin-select
Open

fix(map): stop mobile flicker on pin select (no behavior change)#232
badjoke-lab wants to merge 1 commit into
mainfrom
codex/fix-mobile-flicker-on-pin-select

Conversation

@badjoke-lab
Copy link
Copy Markdown
Owner

Motivation

  • 目的はモバイル幅 (/map) でのピン選択時のチカつきを、GOOD=fa6a41c では発生せず TARGET=origin/main でのみ起きる問題を最小差分で消すこと(変更は components/map/MapClient.tsx のみ)。
  • GOOD と TARGET の差分から選択に紐づくトリガーを列挙すると以下が該当する:
    • selectedPlaceIduseEffect / useMemo による同期(selectedPlaceIdRef.current への反映)。
    • selectedPlaceId の変化により走る選択見た目更新(以前は全マーカーを forEach で走査して active class / zIndex を更新していた effect)。
    • renderClusters 内での全マーカー再生成と LayerGroup 差し替え(updateVisibleMarkersrenderClusters)。
    • marker.on("click") 側での伝播停止と openDrawerForPlace 呼び出し、および map.on("click") による blank-map click での closeDrawer(二重発火は現状防がれている)。

Description

  • prevSelectedMarkerIdRefsetMarkerSelectionState を追加し、選択変更時の見た目更新を「前回選択ピン + 今回選択ピン」の2点だけに限定しました。
  • これにより従来の「selectedPlaceId 変更で全マーカーを走査して更新する処理」を停止し、全件再描画トリガーを取り除きました。
  • 既存の renderClusters / updateVisibleMarkers / map.invalidateSize / クリック伝播制御 等のロジックには手を入れていません。
  • 影響範囲は components/map/MapClient.tsx のみで、フィルタ・URL 同期・フェッチ・Drawer/Sheet の挙動は変えていません。

Testing

  • npm run lint を実行して終了コードは 0 で完了し、既存の ESLint 警告のみ確認済み(成功)。
  • Headless ブラウザでのスクリーンショット検証を試行したが、実行環境の Playwright/Chromium 側でプロセス異常(SIGSEGV 等)が発生し取得できなかったため UI スクリーンショット検証は失敗しました(環境依存の問題)。

Codex Task

@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cryptopaymap-v2 Ready Ready Preview, Comment Feb 22, 2026 0:09am

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant