Dharmen Shah Thanks, but I tried that. Chrome seems to always first draw a white viewport unless it has the dark mode CSS already cached. I ended up with backend rendering like I said, with a cookie to hold the state instead of local storage. Works flawlessly in practice, but it feels old-school and I wish your approach would have worked as I think it's a more appropriate SoC fulfillment.