App-controlled rendering via renderMode: 'external'. The app owns the rAF loop and calls needsRender() + renderFrame() to drive updates.
renderMode: 'external'
needsRender()
renderFrame()