For the past two months we’ve been thinking about how to use digital to make grocery shopping easier. One of the most important aspects of that is around collaboration – when you’re shopping for a household, it can be difficult and time-consuming keeping track of what everybody wants. You could just leave a notepad somewhere and ask everyone to add their own products, but there’s a level of context missing which might leave the unlucky shopper unclear about what, and how much, they need to buy.
What if we could create a digital list that worked across smartphones, tablets and computers, and updated in realtime so that everyone involved could instantly see and edit additions and contact the people who added them?
SignalR is a library for ASP.NET that facilitates exactly that. Without it, our app would have to request information from a server in order to see updates. That can be automated – the app could check every 30 seconds or every minute – but it’s not an efficient solution. If two people are editing a list simultaneously, they won’t see each other’s updates until the next refresh, and if the app is checking the server every 30 seconds whenever it’s open it’ll race through your battery and your data.
SignalR is also pretty clever at handling applications connecting and disconnecting and also making use of the features available on those devices; meaning its support for different web browsers is pretty comprehensive. We’ve even found it pretty easy to link in an iOS app, although a dedicated iOS SDK would still be preferable!
Setting up SignalR to prove the concept across web and apps was relatively simple with web developers, interface developers and app developers collaborating to produce a quick instant messaging chat application. That proved the concept – we were able to communicate across devices in realtime, so we knew there were no fundamental barriers to what we wanted to achieve with the list. Working with an Agile development cycle we were quickly able to start building the core user journeys. That’s where the fun began.
The edge cases are where realtime updates really add value, but they’re also complicated. What happens when a user is editing a shopping item on a list and then their access to the list is removed? SignalR meant we were monitoring a lot of events taking place on all of the connected devices; inviting users, adding shopping items, locking lists because a shopping trip has begun, plus a lot more. The number of events to monitor and respond to certainly increased the complexity of the project. Every single case needed to be thought through and resolved in order to deliver the right level of experience to the end user; working with Agile meant we were free to address cases as they cropped up to an extent, but we didn’t want them to delay development of new features.
The latest release of the app incorporates a huge range of SignalR-powered realtime features, which add value both on a user experience and a business level. For example, the app has the ability to instantly check a new list entry against what’s already there, to make sure a shopper isn’t adding unnecessary duplicate items. But it can also check against a database of special offer and cross sell products, promoting contextual offers, extras and alternatives, in realtime, based on what the customer adds.
Once these realtime features are combined with real data about a customer’s past shopping habits, wider demographic information, and contextual data around time, day and location, the user and business value will exponentially increase. The ability to be able to remind a shopper that they might want milk (for example), even though it wasn’t on their list, as they enter the dairy aisle, will enable real, useful growth in basket value and loyalty.