Home Features Philosophy Docs Blog Errors Security Examples FAQ
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)