opencode icon indicating copy to clipboard operation
opencode copied to clipboard

fix(tui): clean up SDK event listeners on unmount

Open sauerdaniel opened this issue 19 hours ago • 2 comments

Summary

Fix memory leak in the TUI App component where SDK event listeners (onStdout, onStderr, onMessage, onFinished) are never unsubscribed.

Problem

In packages/tui/src/app.tsx, the useEffect hook sets up event listeners via sdk.on() calls but the cleanup function only calls sdk.stop() without removing the listeners. This causes:

  • Event listener accumulation over time
  • Memory retention of closed sessions
  • Potential duplicate event handling

Solution

  • Store unsubscribe functions returned by sdk.on()
  • Call all unsubscribe functions in the cleanup return
  • Ensures proper cleanup when component unmounts or session changes

Fixes #8258

sauerdaniel avatar Jan 13 '26 17:01 sauerdaniel