There are times when you’ll want to create WIP content, that’s not ready yet to be rendered on your website. Maybe you’re filling out a huge Instance with a bunch of required fields that you don’t want to fill out just yet. Hidden Blocks will help in these scenarios.
A Hidden Block will not be exposed via API, and will skip commit validation. You can hide a Block via the properties panel, or via the sidebar. You can only hide documents, components, and instances; and nested components/instances inherit hidden state from its parent for convenience.
This is not the same as the “draft/published” workflow that other systems offer. The “hidden“ state itself is committed (together with any other change throughout the Repo), meaning, everything that gets committed passes the validation and constraints you’ve set up, always. The fact that, in other systems, publishing is controlled per-entry makes it easy for users to enter an incorrect state. If you’ve started with loose constraints and at some point decided to tighten them up, then you may have fields that are “required” but that return
null from the API. While this might seem like a small thing, this means that their GraphQL APIs can never be sure if a required field will actually return content, therefore struggling to be strict with their types, and therefore making developers be really careful with every piece of data they get from the CMS. This is no good.