Introducing Perspectives: See your content from any angle
Written by Jesus De Oliveira, Molly Friederich
For years, we’ve all focused on getting the right content to the right people at the right time; the headless CMS category emerged in response to this challenge. Now, context is joining the complexity of devices, channels, and audiences. Contexts for your customers (where in the world are they? What are their preferences and patterns?) and for your teams (how do I preview the upcoming campaign or ensure content is rendering correctly for our UK readers?).
Querying the right content to build these increasingly mosaic views of content is hard. Hard enough that teams might settle for subpar experiences. For their audiences, this means less compelling, personalized experiences. For content teams, it means time-consuming hacks to preview a given view of content (or worse, crossing their fingers and hoping everything will “work out” when they click publish).
Announcing Perspectives
Today we’re introducing Perspectives, which dramatically simplifies building audience- or use-case-specific views. With Perspectives, you can add a single parameter to pull the right content variations for any given experience without making special accommodations in code. This enhances developers’ ability to create contextual variations of content (and improves the experience for both content teams and the audiences they serve).
With the launch of our first perspectives, we’re solving the most common use case developers and content teams grapple with, creating high-confidence, comprehensive previews across any device, channel, and context. These are available for all Sanity users and API versions for the GROQ query endpoint since v2021-03-25
. To accommodate Perspectives, we've released new versions of the Vision plugin, JavaScript client, and Next.js toolkit. Customers who use GraphQL will find support for Perspectives using the GraphQL endpoint version v2023-08-01
and on. We've put Perspectives to use ourselves to improve Sanity's preview tooling by making live web previews more performant as well as expanding preview support to non-web surfaces like mobile apps.
In the future, we’ll deliver more perspectives to streamline the effort for Sanity users as they create contextual experiences. Just as the previewDrafts
perspective simplifies building previews; we want to enable developers to specify a single parameter to power things like:
- Internationalization: Personalize content for audiences worldwide with high confidence you’re pulling the right language for each region.
- Content variants (A/B/N testing): Create alternative variations for documents and develop production tests and personalization.
- Point-in-time snapshots: Preview an upcoming content release, or look back to see previously published content.
We’re excited to see what customers do with these first perspectives and to partner with them to define the next highest-value perspective to ship. Contact your customer engagement manager if you want to give us feedback, or contact our sales team if you aren’t a Sanity customer yet.
Contact UsFor now, let’s take a closer look into what’s in the hands of teams using Sanity today.
Our first Perspectives: Lay eyes on any draft experience
While most solutions offer a rigid, page-based approach to previewing content, Sanity provides the most flexible preview solution for structured content. Since 2019, we’ve supported creating previews for any use case within Sanity Studio: from how your whole site looks to how it shows up in search result pages or even on a mockup of your content for printed materials.
Of course, there’s always room to improve innovation (what if Nabisco had stopped at single-stuffed Oreos?!). Over the past few years, we noticed many customers adding the same expressions across all their queries to build previews. Truth is, doing so while composing the many pieces of content that come together to build modern user experiences often became pretty complex.
Perspectives for previews simplify this complexity; it’s now a matter of specifying a single parameter in the query URL or client configuration. This makes it trivial to pull out all draft documents for a preview mode, and strictly published content for production—regardless of complex joins and different permission models.
There are three perspectives available as part of this release, available now for all Sanity customers on any project plan:
previewDrafts
: retrieves documents in their draft version (or published if no drafts exist). It will also add anoriginalId
property to documents for additional control. As explored below, we designedpreviewDrafts
to simplify the developer experience for building content previews.published
: retrieves only the published version of documents. You can use this perspective as an extra layer of assurance to avoid draft content leaks for authenticated requests in production.raw
: preserves the same functionality of queries as they worked pre-Perspectives (and is the default perspective if one is not specified). This means that Perspectives is a non-breaking feature.
The classic before-and-after photo
Let’s do a mini-case study on how the previewDrafts
perspective untangles your queries for developing content previews. Let’s say you want to retrieve the draft content of both book
documents and the referenced author
documents with an authenticated request. Here’s what the query would look like before Perspectives: