All the limits of Parse

We have been working with Parse platform for the last few months, and now that we have gone through pretty

We have been working with Parse platform for the last few months, and now that we have gone through pretty much everything the platform offers regarding iOS SDK, web SDK and cloud code, I must say that we are very unpleased with the choice, the technology is still pretty unfinished and limited. We will write all the limits and problems found in the following paragraphs.

(featured image by venturebeat)

Few weeks after we had started using parse, my colleague wrote a blog post about parse in general. You can read it here.

Just today, one of our developers said: Parse would be a great platform if they would just improve their performances and remove all these limits. The concept is great, the realization not so much. And we are talking about a PREMIUM parse account here.

In this blog post I would like to point out all those limits, and as developers you will probably understand our problems. Basically project was working quite fine while we were building the system. We had quite experienced developers working on the platform (like we always do with new technologies), the code was well organized, and performances were taken into consideration since we already produced lots of apps which expect heavy load. But once we started to do stress testing before delivery, lots of problems occurred, and they were nowhere (or really hard) to be found in the docs:

  • 160 API requests per minute for ENTIRE app (not one instance!) (changed to 30+ req/s but it costs quite a lot
  • limited number of COUNT operations (differs every time, but surely under 160)
  • if you are counting objects with the count higher that just a 1000, the system switches to “approximate count”
  • any function can not take longer than 3 seconds
  • if that function is in a cloud that time can last 7 seconds
  • scheduled jobs can last a maximum of 15 minutes, but you have to put ALL of your code in one function (which basically makes it unreadable for later usages)
  • maximum of 2 concurrent jobs (threads)
  • no mutex/lock/semaphore logic
  • no custom atomic operations (just a few are available, and they are not that useful)
  • this makes it very very hard to solve concurrency problems
  • log system remembers only 100 last logs
  • live logging in the system has a tendency to simply skip a log or two (which makes debugging really funny)
  • you can pull a maximum of 1000 objects in a request, which also applies on inner queries
  • push notifications have delay (even up to one hour)
  • LIMIT SKIP operation can skip a maximum of 10 000 objects
  • no DISTINCT operation, you have to implement distinct yourself by parsing data
  • lack of incase sensitive string queries, you need to store additional lowercase column in your database
  • uptime of parse system is also an issues. Quite a few times, parse was unavailable in general for 30minutes
  • no native Paypal integration support, or ability to implement paypals SDK – we had to use separate node.js hosting server to support payments and cash distribution through Paypay
  • no debugger when writing cloudcode – you have to rely on logs only, and they have their own issues mentioned above
  • no option to delete an entire class from parse via API. image if you wanted to drop logs ?

parse problem

When you read up on those, and then understand that EACH database request is a separate request (even on a cloud) it is easy to understand our frustration. And no, there is no option to write complex queries and have them executed directly on the database.

As mentioned above, another huge issue are the atomic operations. When parse reaches any of its limits it simply breaks the execution, leaving your transaction opened before everything is executed. There is no execution delay, just a failed request!

Unfortunately, if parse does not improve their system, solving the above issues, it will remain an platform to build super simple apps with not so many users. For real projects with real usages, we will surely switch back to a more performance stronger and stable platform!

If you have any questions about parse, or you think we should add some stuff to the above list, please let us know in the comments section, and I will update the article.

If you are a Parse developer and ended up reading this article, give us a buzz on skype or send us an e-mail, we can provide a more detailed insight into helping you guys improve this great idea 🙂

29 thoughts on “All the limits of Parse

  1. Thanks for writing this. It’s quite disturbing because you are describing a sort of worst-case scenario: Parse works fine while you are building something, and then starts to fail the moment you rely on it to run at any serious scale.

    In particular, you mentioned you encountered limits of up to 1 hour for push notifications and only 160 API requests per minute. Were these two limits described in documentation, or only encountered in practice?

    Their plan pricing calculator offers pricing for up to 190 req/s, so I am wondering if the limits you encountered are documented, are out of date with respect to their latest offerings, or are just an instance where they are not delivering reliably.

  2. We built the backend for our app in Parse too, and we ended as dissapointed as you. Things like the 30min downtime every week feels like a showstopper issue. I would add the documentation is awful if you are looking for a detailed explanation. Also, the pricing is ridiculous: 10 requests/s more costs 100$/month!

    Do you know any BaaS alternatives similar to Parse?

  3. @Manuel, @Alexix

    YES, they did change the pricing plan regarding the number requests, and it costs quite a lot. You can find the pricing on their pages

    There are some alternatives like kinvey, sencha.io etc., they do not provide exactly the same features, but are on the same track. I have not tested any of them in a real app, but I am guessing they might have some similar issues

  4. Yes I have used Parse in a production project and have many issues regarding perfomance and data duplication because the lack of transactions.

    Parse is a wonderful system, but it’s not a swiss knife.

    For example you can’t export parse analytics programatically, you have to do it manually.
    So you must rely on external services like Count.ly or Piwik.

    What’s Parse Good For?

    In my experience Parse can:

    Good for Implementing simple User Login, and Social Media Login (Twitter Facebook)

    Good Middleware to other services using Code Cloud.

    Good for Read Operations (Writing just simple objects or updates is fine too, for more complex data writing or updating must rely on others systems that have ACID, using CodeCloud as a middleware)

    Good for Notifications (Yes sometimes they have lag, but in most cases this is fine. You can have RabittMQ or Iron.io MQ if you need more realtime messages)

    Thats my 2 cents

  5. @Camillo thanks for your contribution!

    I would agree, adding simple solutions for social logins, notifications, and other Parse Help libs has been really helpfull.

  6. Excellent article. Perfectly summaries all of the issues I’ve had over the past nine months. Thank you for confirming that we’re not the only ones and that Parse is indeed a sucky piece of ****.

  7. Pingback: Quora
  8. Did you see any improvements on the limitations you mentioned? Which service would you recommend these days?

    I started building a strong app on Parse and start reaching the limitations you mentioned. I don’t have too much time to transition so if I do I want to make sure I choose the right MBaaS

  9. Hi great article! you pretty much summarised every down side of Parse Platform, and unfortunately currently we encountered similar problems. I would like to know how did you guys get over, or did you change to another BaaS? thanks!

  10. We have exported our entire system off Parse and the performance is now an order of magnitude better. Our users love our app now we are off Parse.

    Getting our 300k users and data out of Parse and into our database was *not* a simple matter. We had to write an entire software package to deal with the export. If anyone is in a similar situation and would like to discuss our export methods please get in touch.

  11. There is no more API to implement Chat using Parse.
    Here, there developer suggested to use Push Notification,
    https://www.parse.com/questions/use-parse-as-a-messaging-server
    I think It seems to be weird suggestion. How can we use Realtime chat using Push Notification !
    They have also suggested to use Third Party APIs for implementing Chat but still as a being premium Parse user (developer), I would say, there is one of the missing API in Parse.

  12. I’m getting started with Parse now and I’m wondering how the situation has changed in the 11 months since you wrote this. Aside from pricing, how have reliability and flexibility improved (if any)? It would be great to see an update to this article as the platform gains adoption.

  13. Thanks for the great article. We are on our way to build a game using Parse, but from what you mentioned, there is no way that Parse can host a game with quite some server side logics. We are also evaluate Kii, anyone has experience with it?

    Best,

    Raven

  14. I was evaluating Parse for one week now and came across the same limitations as you, and a few others:

    – No way to export the data with the data manager. Yes there is the json export functionality that says a link to a zip file will be sent but I never received that.

    – The data browser csv import functionality is very limited (string and number only). No way to simply import a csv with Date type in it.

    – The Master key will only work with REST API, not with Javascript SDK.

    – The Master Key won’t work cross-domain with Javascript Rest API.
    (This makes it impossible to write your own data manager as a simple website. Needs cloud function or some desktop or whatever application)

    – Parse is not compatible with the newest backbone version. There are backbone methods that simply don’t exist in parse (collection.where collection.findWhere as an example)

    I decided not to go with parse but with my own backend.

  15. Hi,

    This vinay I am new to parse. I am setting limits querying for adding to the table in parse. But the problem is when dude normally in parse query it works. when do querying same thing for Parse query inside the Parsequery, It does not supports the condition. Can any solve this issue. Thanks in advance

  16. Hi everyone !!! Hope you guys are having a great time. I’ve just started implementing parse in one of my recent ios apps and I am facing a major performance issue in Parse SDK. I am just fetching some comments from my Parse database and the response time is very bad. Connection is being lost almost every time and Parse always tries to reconnect to it’s database. I am getting response in 3-5 seconds which is huge. I am just suing a simple subquery. Can anyone help me out ? Can anyone let me know why it’s taking too much time in loading objects. For your convenience, I am uuting the sample code here.

    PFQuery *query = [PFQuery queryWithClassName:@”AllPosts”];
    [query whereKey:@”mssgLocation” nearGeoPoint:geoPoint withinKilometers:MaxDistance];
    query.limit = limitQuery;
    query.skip = skipQuery;
    [query orderByDescending:@”createdAt”];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    };

    Looking forward to a positive reply from you guys.

    Thanks in advance.

    Kind Regards,
    Sharooque Naushad
    Sr. iOS Developer

  17. Another limitation:
    – `parse develop`, which tracks local changes to cloud javascript files will sometimes ignore changes to files and not deploy
    – `parse deploy` will intermittently not deploy changes to your files.

  18. Thank you for article. I want to add something about insert operation on parse. I tried to import a CSV file to parse and get some errors which are really meaningless. And then I wrote a simple java application based on Parse4J framework. This application reads the CSV file line by line and creates ParseObjects and inserts it. Each .save method call takes 1 second! I use free version of parse. Do you have any idea or advice to make it faster?

  19. I know this is a bit old, but this is a great summation of the limitations that Parse.com has. I love the platform for its ability to rapidly bring prototype and small to medium scale production quality apps to the marketplace, but the limitations really do have to be paid attention to as a concern if the app grows too big.

    I wrote an article today about the upsides and downsides of using Parse.com and referred back to this article. Here’s the blog post in case anyone is interested:

    http://www.studio-symposium.com/the-agony-and-ecstasy-of-parse/

    Anyway great job writing the article. I hope more people see this and realize that the system is not meant to be a cure all!

    Cheers

  20. We’re going through many of the same issues. We’ve been with Parse since they were a small startup and have spent tens of thousands of dollars as a client. We’re constantly reaching out to their team with issues – if we hear back, it typically takes a week and the answers are always disappointing.

  21. For a startup to use Parse in an effort to build a cost effective prototype before seeking investors, wouldn’t the integrity of the IP be accessible to Facebook even before the launch of the app since the data is monitored by them? Facebook’s launch of competing Snapchat app, Poke, showed that Facebook chooses sometimes to compete against startups that threaten their social sphere instead of rewarding them for their innovations. And, if indeed, this is a risk for every startup, what other mBAAS can be recommended? Can any at all, be recommended? Or is building out a native iOS app the best solution, even if it is not cost effective.

  22. hi. i want to use parse push notification for my application. but i have some questions about limits:

    1- what is the maximum number of notifications for a month? In parse.com, they say “1.000.000 unique recipient is free”. Are there any limits like that : “you can send maximum 10.000.000 notifications in a month”? For example, my app is downloaded by 100.000 users. I want to send 100 notifications for everybody. That means i will send 100.000 * 100 = 10.000.000 notifications in a month. Is it free?

    2- what is the maximum number of recipients for one parse push notification request (from parse.com or from parse REST API)? are there any limits for a notification like that : “you can send a notification up to XXX users with one request”? for example my application is downloaded by 100k users. can i send a notification to all that 100k users with one request in free version? And are all the notifications sent to all users at the same time?

    3- are there any limits for sending a push notification form parse REST API with query? For example I want to send a notification to 5000 device token like this:

    ‘where’ => array(

    ‘deviceToken’ => array(‘$in’ => array(‘XXXX’,’YYYY’,…….)), // there are 5000 deviceTokens in this array. i want to send

    // a notification all of that 5000 devices.

    4- according to parse pricing, 30 requests for a second is free. for the query above, is it counted as 1 request or more?

    Thank you.

  23. Its great that you guys wrote this list. We have built a relatively complex app using Parse and it has become a huge time hole and money eater.

    We are constantly having to have meetings to change the app to fit with Parse limits – finding workaround or changing the functionality of the app just to fit the database. Think of how ridiculous that is!

    Unfortunately it is too late for us, but I hope people thinking of using Parse will come to read this and seriously reconsider their options. With no exaggeration, projects will fail and start ups will bankrupt because of this platform.

    In my opinion it simply needs shutting down.

  24. At the very beginning I was in love with Parse. But then I started to meet some not-so-complex problems to solved. Which I was unable. Or I was uble but with too much effort. No I am in the phase of hating it and I really bang my head to the wall because of my bad choice.
    It is limited. It is increadible painful to debug. It is slow. It has a low service level. And it is super-expensive. Your query quickly add up. Cloud Code operations also counted as normal transactions eating up your 30 req/sec limit very quickly.
    Bad choice. No I am desperate as I am unable to solve certain key problems which I did not predict to be a problem as the project goes forward.
    Stay away from this half-ready platform for a while.

  25. Hi, and thanks for this blog. My biggest issue while using Parse (especially cloud code) is the lack of rollback support. Maybe this is something that exists and just that I am not aware of. When a cloud-code function has lots of nested operations(either with Promises or not), and an intermediate step fails, the whole operation is counted as an error. But the previous operations which succeeded stay changed(unwanted). We have to manually rollback the succeeded operation to their previous states. (And what if they fail too???) So it is nearly impossible to rollback manually. Is this an issue with other developers as well? I would like to hear your opinions on this subject too. And if it is like I said, do you think it is an eligible bullet to add to your issues list?

Leave a Reply