I have created a component for react-babylonjs that listens to movements and animations.
in my own app (not react-babylonjs) i had a similar issue as yours. I made a global variable that I could change to force a rerender. something like:
let isForced = false
....
if(isChangesInScene || isForced){
isForced = false ....
}
....
function forceRender() { isForced = true }
some inspiration for render on demand
related thread: What is the correct way to render on demand - #22 by samevision
little video: Render on Demand by dennemark · Pull Request #253 · brianzinn/react-babylonjs · GitHub