tl;dr: Every aspect of GraphCMS will be greatly improved by a large redesign. New backend architecture and infrastructure, new open sourced web app, new staging workflow.
Hello everyone 👋
We are incredibly excited to share what we are currently working on! We wanted to improve and redesign parts of our stack - with performance, stability, extensibility, and usability in mind. Basically, we are applying all of our learnings from six months in production. In this blog post, we want to give you an update on our progress and share some insights on our decisions.
New Backend Stack and API improvements
Most GraphCMS users know that we teamed up with Graphcool a while ago to provide state of the art GraphQL APIs for our product. While this gave us a solid foundation for the product, it limits our flexibility and sometimes comes with performance implications. Our upcoming stack will give us complete hosting flexibility.
Say Good Bye to Noisy Neighbor Effects
Since GraphCMS instances are running within the Graphcool shared cloud, all projects are living in the same clusters as Graphcool projects do. This is sometimes leading to performance issues, also called noisy neighbor effects. To get rid of those, we are preparing our own API clusters and databases that will get rolled out over the next two months.
The new architecture also allows our clients to run their projects on a dedicated database. Those can be hosted in any region or datacenter, which is also important for some compliance and security requirements.
Migration to the New Stack
Your migration will be fairly easy. You will be able to clone your existing GraphCMS projects to the new stack at any time and use them in parallel. With this, you can stay live in production, while preparing your application for the changes in the API.
New API Capabilities
The exposed GraphQL APIs will come with a completely new set of functionality. However, this introduces a few breaking changes that might break your frontend applications. This is mostly due to an improved query and mutation syntax and we are soon going to release a migration guide. Don't worry, the changes are marginal and the APIs work basically the same. Our customer success team will gladly help you with the migration and you decide when this will happen, as both APIs will be operated in parallel.
These are some of the most important changes:
- The Simple and Relay API will be merged into one and will be supported by all GraphQL clients
- Improved service deployment reliability
- Ability to hide unpublished entries completely from the API
- Reference by any unique field
- Cascading Deletes
- DeleteMany and updateMany mutations
- WIP: Filters on lists (multiple value fields)
- WIP: GroupBy and aggregated values (avg, median, max, min, count, sum)
Introducing the New Proxy Layer
We won't expose the generated APIs directly anymore, as we currently do. We will introduce a proxy layer that will expose them and will allow modification and extension of the generated schemas. This will allow you to add custom resolver functions to your API and enable a great set of integrations. Pretty much any transformation you can think of is possible.
We are excited to see what you will be building!
New Content Management Interface
A major redesign wouldn't be a major redesign if we would only improve the backend side of things. Our frontend team is working really hard to deliver a much-improved content management experience.
The new web app is built with performance and usability in mind. Besides the improved UX and friendlier visual language, it will work much better on smaller screens.
Oh, and by the way: we are also working on a customizable permission and workflow model.
The following screenshots will give you an idea of how the new web app will look like. 🌈
Please join the #feedback channel in our slack if you want to share some thoughts or ideas on the new user interface.
New Staging Workflow
Most developers are used to develop applications in a multi-environment setting. This allows you to have a stable environment for production and one or more volatile environments for development and QA. Basically, you don't want to break your apps by changing the schema in production!
Until now, we didn't support a streamlined workflow for this, but with the upcoming changes, we've got you covered! The new version of GraphCMS will allow you to create multiple stages for your feature developments and also enable you to merge them afterwards. ✨
Each stage will get its own GraphQL endpoint.
Beta Will Be Launched Soon
We are going to onboard the first beta testers by the end of March. Please join our slack community and send a quick message to @mlukaszczyk or @fabian if you like to participate! 🙏