Solved

Customer List is very slow to load and doesn't appear to reflect new customers or changes to state?

  • 9 November 2021
  • 3 replies
  • 484 views

Badge +3

Hi Folks,

I really want to love RevenueCat since it comes so highly recommended by so many people, but I'm having a few issues that are making that hard. 

The first is that the Customers List page (https://app.revenuecat.com/lists/) is very slow - a fresh load takes ~6 seconds before any information is shown. Looks like there are 2-3 requests that are queuing in the backend to me (me, subscriber_lists and manifest).  These requests are taking nearly ~2s each.
The `query` request can also be slow, around ~1s. 

Timing from Safari:

 

And query:

Note that I have less than 10 customers, I am a little worried about what might happen when I (hopefully) have hundreds.

The second problem is that (unless I’m doing something wrong, which is very possible) even after I’ve waited for the list to load it doesn’t appear to accurately reflect the state of my subscribers. For instance, if I register a new customer via AnonymousID it doesn’t appear in any of the lists, I need to search specifically for that ID in order to get to the customer details. At first I thought this just might be slow, but I left it overnight and it still didn’t update (I’m not 100% on this but it seems like the _latest_ new customer is not represented at all times, so perhaps there’s a cache there that's not updating properly? I’m totally guessing since).

Then, the third problem is (possibly related to the second) after I’ve waited for the page to load, figured out how to search down my customer, the individual page doesn’t seem to reflect the same subscription status as the API. 

As you can see in this screenshot, the results from my `Purchases.shared.getCustomerInfo` call in-app are showing me that my entitlement is active, hence why I’m getting the “Thank you for your support” screen. However, the customer information doesn’t show any active entitlements or subscriptions (it’s a little confusing as to which, since the box titled “Entitlements” says “no active subscriptions” - which is it, entitlements or subscriptions?) Additionally (and it may be an artefact of Xcode testing) there’s no revenue booked against the customer despite the subscription being processed successfully.

 

I’m new to this, so apologies if I’ve misunderstood how these things work. For now I’m going to assume I’ve implemented everything successfully and move on and not worry too much about the view on Revenue Cat :) 

 

Thanks,

 

Nik

icon

Best answer by ryan 10 November 2021, 00:45

View original

3 replies

Userlevel 5
Badge +9

Hey @nikz!

The Customer Lists are slow, it’s something we’re working to improve. The good news is that this feature was built to handle apps with millions of active subscriptions so there shouldn’t be much of a degradation in performance as your app scales. 

 

The second problem is that (unless I’m doing something wrong, which is very possible) even after I’ve waited for the list to load it doesn’t appear to accurately reflect the state of my subscribers.

The cache on this is should be around an hour. It’s not meant to be a real-time feed, but again it will scale as you get to millions of subscribers. In future iterations we can improve things by changing how things work under-the-hood a bit for apps of different sizes, for now we went with the same infrastructure that will work for any app on the system. This unfortunately can make it more difficult in the testing / implementation phase if you’re expecting to get a list of all the App User IDs as they install your app. In this case, navigating the the App User ID page directly will always get you the real-time information.

 

As you can see in this screenshot, the results from my `Purchases.shared.getCustomerInfo` call in-app are showing me that my entitlement is active, hence why I’m getting the “Thank you for your support” screen. However, the customer information doesn’t show any active entitlements or subscriptions (it’s a little confusing as to which, since the box titled “Entitlements” says “no active subscriptions” - which is it, entitlements or subscriptions?) Additionally (and it may be an artefact of Xcode testing) there’s no revenue booked against the customer despite the subscription being processed successfully.

Looks like you may need to flip the “View sandbox data” toggle to see the test purchases from this customer. This toggle is from the old days, when we didn’t have a designer or product manager so hopefully it will be killed soon and replaced with something much more intuitive :) 

 

Hope this helps clear some things up, and thanks for taking the time to share your feedback - it’s super valuable. I’ll pass this along to our head of product @Jens

 

 

Badge +3

Thanks for your reply @Ryan, I appreciate it.

Good to hear you’re working on the speed, I would be interested to read details if you are planning on blogging them or similar (it sounds like a fun problem - you have a pretty nice shard key in terms of per app, but then you’re definitely going to have some very hot shards vs some that are barely used...)

If the list isn’t meant to be a real-time feed then I feel like front footing that would be a nice idea - something like “This data is current as of [timestamp]”. If I’d seen that I would have said “ah great that’s why the customer isn’t there” instead of heading down a rabbit hole of “what am I doing wrong!?”

On the toggle: You are indeed right, that does the trick! Thank you! What threw me there is that the toggle is disabled on the list page (and by default if you have just set up your account I believe) so I assumed it was “viewing” sandbox data and would therefore tick over when I shipped my app (a la Stripe’s “viewing test data” toggle which you’re no doubt familiar with!)

One suggestion would be to add a notification on the top of the Customer Profile page IFF they have sandbox data that says something like “This is production data - this customer also has sandbox data [View now]” 
No idea how easy or hard that is but would definitely have headed this off at the pass for me.

 

Userlevel 5
Badge +9

Hey @nikz,

Thanks for the great feedback! Always good to hear suggestions that would have cleared things up from the get-go. I’ll make sure to share with @Jens as well.

Yes, lot of fun scalability problems to work on here :) We never save enough time for public engineering write-ups but Customer Lists would be a good one.  

Reply