Parse Server: Missing Features, Workarounds, and What to Do About Migration
Like many in the app community, we've been big fans of Parse at Savvy Apps. We were more than surprised by the news last Thursday that the Parse service will shut down in a year. Parse allowed us to reduce the costs of backend development for our startup and early-stage customers in particular. Even some of our larger brand and media-oriented customers used Parse, especially for sending push notifications or for quickly standing up APIs.
There's hope though with Parse Server, the open source server-side code that the Parse team decided to release into the wild. Although at first glance the list of deficiencies made us think we might have to give up on Parse, within days there's been significant progress already.
List of Missing Features in Parse Server
To start, here's a list of items we believe we'd be losing by moving from Parse to Parse Server. Parse currently only lists "Push" as the feature Parse Server does not support on GitHub, although there's a much more detailed list in the Parse Server Guide (see "Compatibility Issues"):
- Simple Provisioning / Deployment
- Email Sign Up
- Twitter Sign Up
- Global Config
- Push Notifications
- In-App Purchase Receipt Validation
- System Emails
- Background Jobs
To some extent we also felt like uptime was a missing feature. While Parse dealt with some serious uptime issues after joining Facebook, they've since gotten the service to become relatively stable. Since Parse Server can be run on Heroku, AWS, or comparable setups, we're leaving it off the list.
Parse Server Features In Progress or With Workarounds
Below are some of the missing features in progress by Parse or others in the community. It's also worth noting that it appears some of the Parse team members are fully committed to helping people migrate off the Parse service and expanding the Parse Server framework.
Simple Provisioning / Deployment
Obviously Parse Server can be deployed any way you want. These options will just make it easier:
- Deploy to Heroku
- Request for official Docker image; work on automated deployments to Docker
- FatFractal considering offering Parse Server hosting
- Other one-click deployments in progress
I'm also assuming at some point Parse Server instances may be available again as a hosted service from third-party providers. Alternate options for one-click deployments are great but reliable uptime is the most important of all considerations. So if you go that route in the future, do ensure your provider has a proven history with uptime!
The folks at Admnica had reached out to us in early January about using their dashboard tool with our Parse customers. With the Parse shutdown announcement, they've pivoted their focus to Parse Server support.
Adminca will likely be the early leader for offering a dashboard for Parse Server, but they also appear to have some other features in mind. Our conversation with customers has a Dashboard alternative high on many people's list. The quote below is from an email that the Adminca team sent out after the Parse announcement:
"We will also add more functionality (e.g. trigger cloud code, adding attributes & classes) to make up for the loss of Parse."
The baseline analytics with Parse, including retention metrics, were really useful. We have at least one customer that was saving five-figures a month by switching to Parse's analytics instead of using a paid option. That being said, this missing feature is probably one of the easier replacements with options ranging from Google Analytics to Mixpanel.
Email and Twitter Sign Up
Parse says they still support signing up via email. They also gave a pointer for adding Twitter support on GitHub by referencing facebook.js and RestWrite.js.
On a related note, there’s an open issue on GitHub for OAuth providers.
The Savvy team used the Global Config regularly. It would allow us to modify the behavior of an app without having to rebuild it such as adding or removing a feature. Using the Global Config, we could update values in the Dashboard and users would see the changes reflected right away without needing to update the app.
Parse admitted they didn't value the config feature that much but suggested this feature would be a good first PR:
"The two of us building this didn't put a high value on Config, but we totally understand it is useful. I think adding support for it will be pretty simple. I'd venture that this would be a good first PR for someone learning the project."
I really like how they're acting as a curator for features like this one.
Arguably, the absence of push notifications is the single-largest missing feature from Parse Server (it's also the only one Parse listed as missing in their list on GitHub). It looks like the Parse team will be working on resolving that.
You could obviously also move push to an existing push provider. Those like OneSignal quickly jumped on this opportunity and created their Parse Push data importer to make the switch easier, as does Batch.
In-App Purchase Receipt Validation on iOS
As it stands now, there appears to be no Parse Server solution for this feature. Parse made receipt validation as simple as adding one line of code instead of writing a few hundred. It was one more nice-to-have feature Parse had out of the box, so hopefully someone will tackle it in the future.
Parse offered an easy way to send welcome, forgot password, and comparable system-generated emails. This functionality does not come out of the box with Parse Server. The Parse team gave a high-level spec on GitHub for implementing system emails. A transactional email provider like Mailgun or Mandrill will be needed as well.
One of the limitations of Parse as a service was how it supported background jobs. They were limited in number and for how long in total they could execute. So overall, using a framework like Kue will be a welcomed change for creating background jobs.
Parse's Cloud Code Webhooks were really just a convenient feature because of Parse running in a closed, hosted server environment. With the release of Parse Server, these are now not needed the way Parse had implemented them.
Migrating from Parse.com to Parse Server
Provided that the Parse team is truly committed to it's one-year migration schedule, it may make sense to not leave the Parse service immediately. Already there's been significant advancements with Parse Server. As either Parse proper or the larger new Parse Server community team develop features like a dashboard, push, the global config, or Twitter signup, it's going to be easier and easier to move from Parse.com to a Parse Server environment.
Of course, the big question is if the Parse team really will ensure the hosted service remains reliable. I'd imagine it will at least stay steady for a couple of months. I'd also guess that already many developers have moved their apps, meaning the resource usage is likely already beginning to lessen.
The response to Parse open sourcing Parse Server is nothing less than remarkable. Parse Server quickly became the top trending repo on GitHub and hit 1,500 stars in 8 hours. It's a testament to how important Parse has been to the app development community, along with the Parse team's extremely generous approach to the shutdown. Providing a one-year runway, open sourcing all of the code, and working with the community through this transition is pretty much unfounded.
We would all have loved to continue to use Parse as a service for years to come. While the shutdown of Parse itself is causing some short-term pain, the long-term benefit of having Parse Server available to the community may surpass any of our expectations. Thanks, Parse. Hello, Parse Server.
Join 20,000+ Other Readers
Sign up to be notified of new blog posts and be the first to receive helpful app goodies from Savvy.