I've been using Immer which relies on proxies to give you a plain object interface but also copy on write immutability.
It's very nice and I think is a practical example of when proxies make sense. However it does at times suffer from the cost of doing magic: you handle them in unusual ways and suddenly they break a lot.