Matthew,
I use a Wahoo Elemnt Bolt which works really well. My first few years I used my phone with the MapMyRide app, then changed to the RideWithGPS app, but using my phone on a mount on the bike wasn't the best.
I then bought the Wahoo, but I still carry my phone in my back pocket in a ziplock bag (so I can make phone calls, and wahoo also has the feature to do live tracking through bluetooth to my phone, so my family can always see where I am).
There is no annual fee for Wahoo. I download ridewithGPS routes to my wahoo (from my free RideWithGPS account) and get the route and turn warnings on my wahoo which works great. Wahoo can be set to automatically connect to whatever accounts you have (Strava, RidewithGPS,MapMyRide, etc.)
Hope this helps.
Chris