A big area where iCloud is falling short is for third-party developers. The tip of the iceberg is the out-of-the-box experience — the iCloud features supported by the apps built into iOS. Calendar, Mail, contact syncing, Safari tab and bookmark syncing. And that stuff actually works very well.
The stuff that works is either using open protocols or is heavily dogfooded. Calendar and Contacts use Core Data internally, but they don’t use it for syncing; they use CalDAV and CardDAV. Mail uses IMAP. Safari tab syncing uses NSUbiquitousKeyValueStore, which has its problems such as not reporting success or errors, but it is comparatively simple and has been used by iBooks and other services for a long time. Third-party developers need to use NSDocument or Core Data syncing, which are newer and less used by Apple itself. The APIs are not well designed, and the services behind them are unreliable. They’re just much less mature. Brent Simmons calls Core Data syncing “the worst thing possible.”