Having owned both, my feedback is comparing the software modules between Apex and GHL.
I purchased an Apex controller a few years ago and while intrigued by the program-ability of the Apex, I found myself disappointed in the overall product and support. As a software developer, I was actually looking forward to being able to write my own logic. I was disappointed in how I would run into bugs that resulted in poor reliability after power failures. In addition, power switches would occasionally get stuck in the "on" position, causing too much of one thing or another to happen. I don't mean any disrespect towards folks who have a great experience with the Apex products. That just wasn't my own experience.
I more recently switched to a GHL Profilux 4 Controller and two of their 2.1 controllable dosers. This is just my personal opinion, but I find the GHL software to be a lot better all around. Most importantly, GHL support in the USA is absolutely incredible thanks to Marco Reef and Sleif. They both reply to emails and calls very quickly, and even drop shipped a plastic pump housing on one occasion that had a known noise issue. With the GHL controller, I don't get to do any real programming because the GHL is all graphical user interface driven and it already meets my needs with flexible setting options. It's a simple interface for even the most novice user to understand and "just works".
Is GHL perfect? Not by a long shot. The documentation is in broken german/english so I found myself asking Marco what a certain paragraphs meant. He speaks both languages fluently and could explain what the manual was supposed to say. Once I had the proper translation to a technical matter, I was on my way.
When I experience the occasional power failure using the GHL equipment, the GHL controller reconnects to wifi without issue every time.