Many apps using CloudKit work totally fine for me. I guess the reason why syncing file using iCloud is unreliable is that iCloud does not understand directory and file structure very well thus can not resolve conflict. By using CloudKit, developer can specify file infomation such as revision which can avoid conflict. Using CloudKit is much more user friendly. User does not need to set it up manually.