WaterMe Video 1 WaterMe Screenshot 1 WaterMe Screenshot 2 WaterMe Screenshot 3 WaterMe Screenshot 4 WaterMe Screenshot 5

Table of Contents

Overview

WaterMe is the only app that I have released on the App Store that got any sort of usage traction at all. It doesn’t have a lot of users, but at the time of this writing (September 2025) it had 993K total sessions according to App Store Connect analytics. Since these analytics are opt-in I assume that means its had about 3M total sessions… which is still not a lot, but for a nice little hobby app, I think its pretty cool

App Store Description

Never let another plant turn brown again. WaterMe reminds you when to tend to the plants in your garden:

  1. Add your plants into the app.
  2. Add reminders for watering, fertilizing, etc.
  3. Get 1 notification every day reminding you which plants need care.
  4. Take care of the plant in real life.
  5. Drag and drop the reminder to mark it as complete.

Thats it! Every day you’ll get one, and only one, notification that reminds you to take care of your plants.

  • Supports multiple kinds of reminders per plant
    • Water, Fertilize, Trim, and more
  • Easy to see which plants need to be taken care of and when.
  • Syncs data across all of your iOS devices via iCloud.
  • Supports working quickly with Drag and Drop interface.
  • Customize the time notifications are sent every day.
  • Care for your garden with your voice using Siri Shortcuts.
  • Tip Jar In-App Purchases allow you to directly support the development of WaterMe.
  • Supports Split Screen and Slide Over iPad Multitasking.
  • Supports Dynamic Type.
  • Supports Voiceover and other iOS accessibility features.

Download

Development

WaterMe was the first ever app I wrote that is 100% a CRUD app. Its just a database app with a pretty user interface placed on top of it. I also got help from a designer friend to make the watering animation video as well as the icon. Its written entirely in Swift and UIKit but has gone through a lot of iterations over the years.

Version 1 (2016)

The original version of WaterMe was extremely simple and the Core Data model was simple to match. You had a plant with a name, photo, last watered date, and watering interval. The app would then sort them categorize them as needing “Water Today”, “Water Tomorrow”, or “Water Later.” As this was the days of iOS 10, the user interface was also extremely simple.

WaterMe v1 Screenshot 1 WaterMe v1 Screenshot 2 WaterMe v1 Screenshot 3 WaterMe v1 Screenshot 4 WaterMe v1 Screenshot 5

Version 2 (2017)

This version was a major rewrite where I updated the data model to be more sophisticated. In v2.0, the data model included a hierarchy that allowed each plant to contain multiple reminders each of which had their own watering history. Also each plant and each reminder also had a type. For reminders, this resulted in watering, trimming, or other. But for the plant this field remains unusued. But I added it so that theoretically types could be added for other househeld reminders like clothes or something.

This update took advantage of the new drag and drop support that was added in iOS 11 to make it possible to perform multiple reminders at once. Lastly, I changed to the database to Realm in the hopes that I could one day add multi-device syncing.

WaterMe v2.0 Screenshot 1 WaterMe v2.0 Screenshot 2 WaterMe v2.0 Screenshot 3 WaterMe v2.0 Screenshot 4 WaterMe v2.0 Screenshot 5

Version 2.5 (2020)

This version brought few UI changes, but completely changed the database under the hood. In 2019 with iOS 13, Apple released NSPersistentCloudKitContainer which allowed syncing Core Data reliably via CloudKit. I really wanted to provide syncing to my users so I started the process of swapping the database layer. This involved writing a wrapper for Realm and Core Data so the UI would not know the difference. As well, I had to write a one-time migration capability that would do the terrifying work of performing the migration.

At this time I also added error reporting using a hacked together (but free) system built with AWS Simple Email Service. It would just send a JSON payload to AWS Lambda, and that would use the Simple Email Service to email me the errors. This way I would know if the database migrations were failing.

WaterMe Screenshot 1 WaterMe Screenshot 2 WaterMe Screenshot 3 WaterMe Screenshot 4 WaterMe Screenshot 5

Version 3 and Beyond

In 2024, I worked on a new version of WaterMe with an all new UI in SwiftUI. I created it to actually make an Apple Watch version of the app. Its mostly complete but other projects caught my interest and I have yet to finish and release it. I would also like to reuse the UI for the iPhone version as I really dislike working in UIKit. However, I am not sure if I will get the interest again to do this work.

I am at a crossing point where I could just let WaterMe fade away due updates needed for Liquid Glass or inevitable future changes, or I could keep working on it. We shall see I suppose.