Vue tells you that a component re-rendered. It doesn't tell you why .
I kept hitting the same problem: a component re-renders, renderTriggered fires, but the payload says target: Proxy — useless. Which ref changed? Which prop got a new reference? Was it Pinia? The router? A computed three levels up?
So I built vue-why-render — a zero-dependency dev tool that names the exact reactive source behind every re-render.
Quick start
import { scan } from ' vue-why-render '
const app = createApp ( App ) scan ( app , { panel : true }) app . mount ( ' #app ' )
Enter fullscreen mode
Exit fullscreen mode
That's it.…