When answering the question of why I should do a millionth shopping list app I gathered the main requirements it must satisfy to cover my use case:

  1. multi-platform – I should be able to use it on any device, including mobile and desktop

  2. interactive – users can edit items and lists, change their status, hide done items, keep track of several contexts, etc.

  3. fast – the app should load fast to decrease cognitive resistance and load

  4. works offline

Theoretically, any platform or their combination can satisfy all these requirements: native mobile and desktop apps, cross-platform apps, web services (including native-app mimicking Progressive Web Apps), chatbots. However, the investment required and implementation details will differ greatly.

A shopping list app does not require a complicated interface, involves mostly text and lists, so my choice fell on chatbots.

Advantages of chatbots

Several years ago it looked like everyone was moving to messaging apps, they seemed to be ‘the next big thing’. Now, when the hype has settled and everybody is building mobile apps, chatbots still look appealing and have their advantages.

Faster development

  1. Messaging apps are by nature multi-platform, allowing to work from any device and operating system.

  2. They seamlessly handle synchronization between devices. No need to worry about a stale state or pushing updates made on one client to others.

  3. The platform handles user registration and authentication.

  4. They remove most of the design and UX work allowing developers to concentrate on building core functionality and better user communication.

  5. Simpler communication means less place for bugs and easier testing.

  6. Chat history is (almost) immutable user history and free backup. This is the last resort measure for a user in case the bot fails.

Better security

  1. There is no direct communication between users and the backend, only the platform knows the address of the server. This reduces the attack surface and makes direct attacks much more difficult. However, it is not the reason for getting complacent: obscurity is not security.

  2. In simple cases, there is little to no personal data to keep, at most users' platform ids, names (if at all), and language preferences. No passwords, emails, phones, etc. It reduces the consequences of security incidents.

Ease of use

  1. Messaging apps are usually fast and often pre-loaded in the phone’s memory.

  2. New user needs only start a conversation with the bot, no installation is required.

These advantages significantly reduce ‘time to market’ allowing to ship the app faster and increasing ROI, provided that it is a suitable platform for the app.

Disadvantages of chatbots

However, there is no free lunch, everything comes at a cost:

  1. Chatbots have limited interface capabilities: messages, buttons, some types of notifications. You have almost no control over the screen real estate. It limits the things you can do effectively and requires building user journeys in a way different from other platforms.

  2. Chatbots cannot be completely offline, they need a connection to be interactive. However, chat history is usually available offline, which can help cover some offline scenarios. Plus, it is still possible to add a simple offline.

  3. It is a much stronger vendor lock compared to other platforms. The messaging platforms are unlikely to become completely unviable, but they can introduce new quotas or restrictions, change functionality, etc. Your bot can also be blocked, but it is a risk for other platforms as well.

  4. You entirely depend on the platform’s infrastructure. If it is down, you are down. I would say, it is not a significant risk for major messengers: outages happen, but not too often.

  5. If you want to support several messaging platforms at once you will have to build several versions of the app (maybe even with a different interface, since platforms differ in allowed chatbot capabilities) or build an abstraction layer between the platforms and business logic.

All these disadvantages can be mitigated by expanding into different platforms, for instance adding a web interface.

Having this in mind I decided to build the shopping app as a chatbot and chose Telegram as a messaging platform: first, it is my platform of choice, second, it has a simple and powerful bot API with few restrictions.