I've been using the commercial Dive Log [1] app for many years, which is okay, but for my type of recreational diving, it requires a lot of manual data entry for each dive. It's got plenty of "pro" features, but lacks obvious features relevant to recreational diving. In particular, its location support is awful -- a good dive app really should be built around a central dive site database so that the dive app becomes useful not just after a dive (to log your dive) but also before (to read about the under- and over-water geography, local wildlife, etc.). Dive Log doesn't even know about countries -- you have to enter them manually!
Having tried a lot of these apps, they are all pretty bad, and very few of them are free. I think the worst one I've encountered is the official PADI app. I've still not figured out how to edit a previously logged dive in that app.