Planning Day

Posted by Stuart Wheelwright on April 05, 2023 · 12 mins read

What can realistically be achieved in three months? It feels like a long time but it is only 58 working days. Without a plan, I know I’ll follow the rabbit down the wrong hole.

My overall goals for Shopping UK are:

  1. Fix the major issues (improve reliability of sharing)
  2. Add several long planned features
  3. Explore ways of boosting revenue generation with marketing and pricing.

My plan is to break the time into two-week blocks. At the end of each period, a new version of the app will be released to the App Store.

Week Beginning Activities Milestones
April 3rd Plan next 3 months,
Test v3.2,
Write “Embracing CloudKit” articles
April 10th Develop v3.3
Writing “Embracing CloudKit” articles
Publish v3.2 to AppStore
April 17th Develop v3.4  
April 24th Develop v3.4 Publish v3.3 to AppStore
May 1st Develop v3.4 Publish “Embracing CloudKit Part 1” article
May 8th Develop v3.5 Publish v3.4 to AppStore,
Publish “Embracing CloudKit Part 2” article
May 15th Develop v3.5 Publish “Embracing CloudKit Part 3” article
May 22nd Develop v3.6 Publish v3.5 to AppStore,
Publish “Embracing CloudKit Part 4” article
May 29th Develop v3.6 Publish “Embracing CloudKit Part 5” article
June 5th Develop v3.6 Publish v3.6 to AppStore,
Publish “Embracing CloudKit Part 6” article
June 12th   Publish “Embracing CloudKit Part 7” article
June 19th   Publish “Embracing CloudKit Part 8” article
June 26th Look for new client engagement  

What’s in each release?

This roadmap may need to change if I encounter unexpected problems or delays with the App Store review process, but I will do my best to stick to it.

Version 3.2

I started work on this release earlier this year and it is almost ready to go. This release will include foundational changes that lay the groundwork for reliable sharing using CloudKit.

What is CloudKit? CloudKit is Apple’s platform for moving structured data between an app and iCloud. It is a proven technology used by Apple’s own apps: Notes, Photos, Pages, etc.

The plan is to deploy the new CloudKit changes in a partially active form: users will be able to accept CloudKit sharing invitations, but the screen to create a new list share will continue to send old-style invitations.

This means when the next version (v3.3) is released, most of the 40,000+ devices will already have the capability to accept CloudKit style invitations. This solves the “chicken and egg” problem that would otherwise be present. Once v3.3 is released, I’ll use app analytics tools to closely monitor how many users have upgraded.

By releasing in two stages (v3.2 then v3.3), I can spread the risk of introducing such a large internal change. To implement CloudKit, many low-level changes had to be made to the app. I have tested these thoroughly, but there’s always a chance I haven’t covered all scenarios (with 40,000+ users, there’s a lot of variety in how the app is used). Fortunately, v3.2 won’t include any irreversible changes. So, if any major issues are reported that can’t be quickly fixed, I have the option to rollback to the v3.1 codebase. This would be a last resort — I always test thoroughly, and plan to fix minor issues by building on the current version — but knowing there’s a potential “Plan B” means I’ll sleep better at night.

The v3.2 release will also include some minor bug fixes and usability improvements

  • When accepting a sharing invitation, a new list will be created. At present, the current list’s contents are merged with the shared list. This causes great confusion when someone shares a second list with the same person. (The odd behaviour is a relic from the early days of the app, when it only supported a single shopping list).
  • The contrast between active and marked-off items on the planning screen will be improved to make it easier to see what has been bought. At present, when an item is marked-off it is the same colour as non-marked off items.
  • Bug fix: When returning an item to the list it should always be returned to the right category. At present, returned items are sometimes shown as uncategorised.
  • Bug fix: Prevent crash that can sometimes occur in rare circumstances while changing the name or colour of a category.

Version 3.3

This is the biggie!

If all goes well, the new CloudKit-based sharing mechanism will become fully active in this release. The old sharing mechanism will still be supported for existing shared lists, but newly created sharing invitations will be CloudKit-based.

Moving to the new CloudKit-style sharing will bring advantages:

  • Changes will be synchronised almost instantly (previously it took 10-20 seconds). An active network connection will still be required to sync but if network is not available, changes will be queued until the network returns.
  • Synchronisation will be more reliable. With the “Classic” sharing mechanism, when the servers were under heavy load, synchronisation would sometimes fail.
  • The name and coloured theme of each list will be synchronised. Currently, only added, deleted and marked-off items are synchronised.
  • Up to 100 people will be able to share a list (currently limited to five people)

The new CloudKit-style sharing will also fix some important bugs present in the current version:

  • When an item is re-added to the list from the basket view, it will replace the existing marked-off item (rather than adding a second item).
  • There is a rare but annoying bug in the authentication mechanism, which causes members to be evicted from the list.
  • If a device hasn’t opened the app in a week or two, synchronisation would fail to remove items deleted by other users.

Sharing lists will continue to be free — no Premium subscription will be required.

After v3.3. is released, I will monitor the reliability of CloudKit sharing, and track the adoption of CloudKit sharing vs “Classic” sharing. In a future release, when the time is right, the app will encourage users to upgrade to CloudKit-style sharing.

Version 3.4

For this release, I plan to introduce a new, potential revenue-generating feature (available for Premium subscribers), one that has often been requested: to see a notification when someone adds, deletes or marks-off an item on a shared list. This will be introduced for CloudKit-style shared lists.

If time, I’d also like to:

  • Show a badge (i.e. the little red circle containing a number) on the app icon to indicate the number of items left to buy.
  • Add support for Dark Mode.

These last two features are planned to be available for everyone, not just those with a “Premium” subscription.

Version 3.5

I’ve had many requests over the years to add a feature for adding up the cost of items on the shopping list.

I really like this idea, but I couldn’t think of a way to add this feature in a way that was both discoverable and not irritating for users that don’t wish to use it.

My goal with Shopping UK has always been simplicity — not expecting the user to do more than necessary. To achieve this, I avoid complex and busy user interfaces that could cause cognitive load. I’m always wary about adding a feature that would make it harder for some users to use the app. It is very difficult to remove a feature once added!

But now I think I’ve cracked it! I have a plan for how a “running total” for a list could be added in a way that is discoverable, easy-to-use, and actually improves the app in other ways for users that don’t wish to use this feature.

Plus, it is the perfect time to introduce this. The price of supermarket items is at an all-time high, and many people are finding it difficult to budget. Using a shopping list is a good way to avoid impulse buying in the supermarket and save money. If Shopping UK could provide the means to easily track spending before and during the shop, it would be very helpful for those on tight budgets.

Version 3.6

If I get this far without the schedule slipping, I will introduce support for image sharing.

At present, the shopping list is text-only. And, while it is possible to add sizes, quantities, and notes, it is sometimes helpful to take a photo of an item to help remember what it looks like, or to help someone else locate the item when they’re shopping using a shared list.

This is also likely to be a Premium feature.

Technical Articles

I plan to post regular blog updates and a series of technical posts called “Embracing CloudKit”, which will describe in detail how CloudKit can be used to add sharing support to an app.

The aim of these articles is threefold:

  1. Document the technicalities of Apple’s data sharing technology, specifically the areas that are not well documented on the web.
  2. Document the design of sharing for my own benefit (for future support and extensions).
  3. Introduce a new audience of deeply techy folk to the app.

I’ve already started writing the “Embracing CloudKit” articles but I have a lot more to cover. The articles will be split into eight parts, with a new one published each week. The first part will be published to coincide with the release of v3.3.

Is all this achievable?

There’s a lot here but it feels doable if everything goes well and I don’t hit major obstacles. If I do encounter problems, I may need to reduce the scope of releases, or delay v3.6.

I know I work best when I have a clear, ambitious goal. This plan is designed to be intense but not impossible.

This post was updated on Wednesday, 5 April 2023 16:00 to fix a typo and add missing weeks (April 24th and June 19th) into the schedule Update Tuesday, 2 May 2023: I’m using this as my TODO list. I’ll add links as I complete an item

(Day 1 of 87)

If you get a chance, please try Shopping UK and let me know what you think at @wheelies