DJE-013
Error
WebSocket
_skip_render not checked in server_push
Error message
Phantom renders and VDOM version mismatches after server push
The server_push() method (used by push_to_view) did not check the _skip_render flag, causing unnecessary full re-renders even when the view indicated it should skip rendering. This led to VDOM version mismatches and ghost updates. Fixed by adding the _skip_render guard to server_push().
bug-fixed
rendering
websocket
Affected versions: <0.3.0
Solution
Before (problematic)
# In server_push (old behavior)
async def server_push(self):
html = self.render() # Always renders, ignoring _skip_render
await self.send_html(html)
After (fixed)
# In server_push (fixed)
async def server_push(self):
if getattr(self, "_skip_render", False):
self._skip_render = False
return
html = self.render()
await self.send_html(html)