The above was taken from a lengthy discussion on an Arduino/ESP8266 issue.
https://github.com/esp8266/Arduino/issues/2070
One solution to reduce the noise was to disable the radio in order to take a measurement. And that may be an option in some circumstances.
I have used the A/D to make a six button analog keypad interface. More recently as a 100 step stepper motor controlled throttle position sensor for remote control of a gas motor water pump. Accuracy wasn't the primary requirement. Stability was more important. I finally found a useful filter for that application.
ResponsiveAnalogRead https://github.com/dxinteractive/ResponsiveAnalogRead
I have another application that I am using the ESP32. Temperature and AC current monitoring, for a customer where I work. I had thought they learned from the ESP8266 and had a good A/D in the ESP32. But it also has serious issues. 12 bit A/D that I consider to be equivalent to an 8 bit A/D on a microcontroller.