@buoy-gg/memory-leaks
Check what stays alive when a screen leaves. See suspects and byte growth per loop. A suspect is a clue. This tool cannot prove every leak.
pnpm add @buoy-gg/memory-leaks
The tool shows up in the Buoy dial. Reads and checks need Pro and a native dev build. Release imports are inert. Desktop shows the same report from the linked app.
Add @buoy-gg/clock for its shared timer feed. Add @buoy-gg/route-events and mount RouteTracker for route loops. Both packages are optional. Missing sources show a reason. Missing byte reads stay null.
Class instances are watched on unmount. Function checks watch props and object hook values. This includes state, refs and memo values. They use weak refs from the React unmount hook. Loop checks need growth across three loops. The owner path and route help place each hit. Use useMemoryLeakWatch(label, target) for a stable object in a function screen. This explicit hook works for your own stable targets. App timer and listener rows show the source file and line when Metro can map them. An empty report without GC proof does not prove clean.