analogWrite, should work on the ESP32, depending on what version you are using. I've used it a fair amount. I know in recent versions of Espruino (for various reasons -- changes in the Espressif SDK specifically), there have been a few features that are currently regressed (such as WS2812 support), on the ESP32. But I did not notice anything about the analogWrite specifically.
That said, unless I am mistaken, the analogWrite is a software feature -- not a hardware one -- so its timing is not super precise (as opposed to say, if it were interrupt driven). So its possible that setting the value after the PIN parameter causes the LED to dim, due to timing issues, though I have not specifically tried to drive an LED using this feature on the ESP32.
I did try using analogWrite on the ESP8266 about a year or so ago, and it usually led to LEDs having a slight dimming. Specifically I was trying to control an RGB LED (not a WS2812, but one LED with three differently colored diodes, fed by three output pins), and there were issues with color consistency and dimness which I attributed to the software implementation.
My suggestion would be to use digitalWrite for off and fully on, and then analogWrite for dimming or brightening the LED in between. Unless you need a luminosity profile that is extremely precise, it should be good enough for most projects I would imagine.
More info here: