Back before I was a greybeard I used commercial flux cleaners, but since recently getting back into the field I have been using 91% isopropyl alcohol to clean flux from my personal project boards, although I have been frustrated by the gummy residue left over no matter how hard I scrub with an old toothbrush. One of the earlier posts in this thread mentioned brake cleaner, and since I recently bought about a dozen cans on sale for less than $3 each CDN I thought I would experiment with it on an inexpensive project. Brake cleaner is amazing stuff... extremely effective dissolving anything gummy or oily, dries quickly with no residue, safe on most plastics, comes in easy-to-use spray cans, and is relatively cheap (especially on sale like I got mine). It is, however, hard on rubber, but you don't find much of that on most circuit boards.
For a test I used it to clean off the flux after soldering the legs and ICSP pins onto an Arduino Nano clone. Initially I wasn't comfortable spraying it directly on the board, so instead I applied it to the old toothbrush bristles and then scrubbed the lines of header pins I had just soldered. The results were perfect... no damage to neighboring components or silkscreening, not a trace of flux or gumminess left on the board, and it air dried in about 60 seconds (blowing on it speeds up drying dramatically). I will definitely be turning to brake cleaner as my go-to flux remover.
I can't speak for all brands or formulations, but the product I used was "emzone Non-Chlorinated Brake & Parts Cleaner". The side label claims it leaves no residue, is fast drying, and has low odour, all of which I can confirm. It suggests pretesting on plastic components, and warns to avoid overspray on rubber parts, but I have used it on all kinds of plastic stuff, and almost all of it is impervious. Like I said, try it on a few lower-risk projects first, but I think you will find it fantastic for flux cleaning.