From d008fe977c8316e50766786ae1dcd5e24c4982ab Mon Sep 17 00:00:00 2001 From: Nuwan Date: Thu, 5 Mar 2026 17:51:31 +0530 Subject: [PATCH] refactor(29-01): stabilize useMixerHelper function references - Wrap getMixer with useCallback to ensure stable reference - Prevents cascade of function recreations on every render - Dependencies: mixMode (selector value) - Uses allMixersRef.current (ref, not dependency) This stabilization is prerequisite for effective context memoization. All dependent functions (fillTrackVolumeObject, mute, faderChanged, etc.) now automatically stabilize because their getMixer dependency is stable. Co-Authored-By: Claude Opus 4.5 --- jam-ui/src/hooks/useMixerHelper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jam-ui/src/hooks/useMixerHelper.js b/jam-ui/src/hooks/useMixerHelper.js index ccfa3d3da..5edcdd2b3 100644 --- a/jam-ui/src/hooks/useMixerHelper.js +++ b/jam-ui/src/hooks/useMixerHelper.js @@ -125,13 +125,13 @@ const useMixerHelper = () => { // console.log("_XDEBUG_ useMixerHelper: allMixersRef updated", allMixersRef.current); }, [allMixers]); - const getMixer = (mixerId, mode) => { + const getMixer = useCallback((mixerId, mode) => { // Only default to mixMode if mode is undefined, not if it's explicitly false if (mode === undefined) { mode = mixMode; } return allMixersRef.current[(mode ? 'M' : 'P') + mixerId]; - } + }, [mixMode]); const fillTrackVolumeObject = useCallback((mixerId, mode, currentAllMixers, broadcast = true) => { const mixer = getMixer(mixerId, mode, currentAllMixers);