Skip to content
Watch a live product demo đź‘€ See how Sanity powers richer commerce experiences
Sanity
  • Platform

    Sanity Studio

    Flexible editing environment

    APIs

    Connect to anything

    Content Lake

    Real-time database

    Watch product demo

    Features

    Real-time collaboration

    Fearlessly work with content

    Precise content querying

    Treat content as data with GROQ

    Localization

    Coherent messaging across territories

  • Use cases

    E-commerce

    Richer shopping experiences

    Marketing sites

    Control your story

    Products & services

    Innovate and automate

    Mobile apps

    Content backend for every OS

    View all

    Integrations

    Shopify
    Mux
    Vercel
    Netlify
    Algolia
    Cloudinary
    BigCommerce
    Commerce Layer
    Smartling
    Transifex
    View all
  • Learn

    Documentation
    API reference
    Guides
    GROQ cheat sheet
    Sanity UI
    Get started

    Build and share

    Templates
    Tools and plugins
    Schemas and snippets
    Project showcase
    Share your work
    Browse Exchange

    Frameworks

    React
    Vue
    Next.js
    Nuxt.js
    Svelte
    Remix
    Gatsby
    Astro
    Angular
    Eleventy
    View all
  • Discover

    Blog
    Resource library
    Agency partners
    Become a partner
    Technical support
    Talk to sales

    Case studies

    Puma

    Source of truth for global markets

    Aether

    Unique digital shopping experience

    Morning Brew

    Omnichannel media distribution

    InVision

    Delivering exceptional customer experiences

    View all

    Popular guides

    Headless CMS
    Structured content
    Content modeling
    Headless SEO
    Static websites
    View all
  • Enterprise
  • Pricing
  • Log in
  • Contact sales
  • Get started
Contact salesGet started
  1. Careers
  2. Senior Software Engineer - Developer Experience

Senior Software Engineer - Developer Experience

Sanity Studio is a real-time, collaborative, composable and highly configurable platform that gives editors an incredible amount of flexibility and gives developers a robust, extendable and reactive framework for building authoring experiences. We’re looking for someone who wants to join the Developer Experience team, in other words: someone who cares deeply about developer experience and wants to help us build a great framework and tooling to allow real-time collaborative editing of structured content.

This means you will be:

  • Building APIs: planning and implementing beautiful, minimal APIs that allow both internal and external developers to think about the high-level things they want to solve and leave the hard implementation details to us.
  • Thinking about collaboration: Everything in Sanity reacts in real-time to changes in content. Every edit sends structured patches to the server and is applied to connected clients. Presence indicators show who’s editing what. This means APIs need to be reactive - “fetch and subscribe” rather than “fetch and return”.
  • Debugging and optimizing: With a huge React-based app full of reactivity, there are a lot of updates and room for optimization. Keeping an eye on performance, figuring out the slowest paths and building good patterns to keep the user interface snappy is important.
  • Learning and teaching: With a huge community of content editors and developers using the product, you’ll have lots of opportunities to learn from what they are doing with Sanity and how we can make their lives easier. It also means there are opportunities to teach developers internally and externally about best practices and new approaches. 
  • Continuously improving: There is always room for improvement. We want to improve our test coverage, make our APIs more robust, decouple state from UI, stay up to date with the latest dependencies… In other words: always improving the product.
  • Building in the open: The Sanity studio is an open-source project. The vast majority of your contributions will be public and MIT-licensed.

This also means you will:

  • NOT create “webpages”. The Sanity studio is a complex, React-powered application. We’re looking for someone who has experience with web applications - things that run in your browser, have local state, updates in reaction to remote changes etc. It has a lifecycle much longer than a regular webpage render cycle, e.g. receive HTML, attach event handlers and done.
  • NOT be working on an internal tool that no one outside of your company will see. Sanity has a large number of customers and users who will all be using and building on our code, and our APIs. As a developer at Sanity, you will be delivering high-impact work that empowers thousands of people all over the world.
  • NOT be stagnant. There will be plenty of opportunities to explore new patterns, investigate relevant tools and keep up to date with the latest and greatest. It’s important for us to stay ahead!

Technologies we expect you to already know:

  • React. Given our entire application is rendered with React, we really do need you to know your way around useState and useEffect. We really hope you know about the React developer tools, and have gotten your way out of useEffect loops. Context isn’t always the right choice, but we hope you’ve got experience with it anyway. We’d be very happy if you’ve optimized some rendering in a React application, and we’d be absolutely over the moon if you know what useSyncExternalStore is, or know the intricacies of strict mode.
  • State management. We don’t really care if you’re an old-time Reflux user, have years of experience with Redux or if you’re on the zustand train - but we do care that you know when and why you might reach for one of these. We’d also like you to know about “selectors”, or other techniques of fine-grained subscription.
  • Core web and browser concepts. You need to know what HTTP requests are, what the event loop is (and why it matters), how promises work, how to use browser development tools and preferably also know your way around some DOM and browser APIs. In other words; you know what the fetch API is and roughly how it works, and you’ve at least heard about IntersectionObserver and getBoundingClientRect.
  • Module systems and bundling. No, we don’t need you to be an expert on Webpack. But we DO need you to know what bundlers like Webpack, Vite and Rollup DO. Similarly, we don’t expect you to solve any ESM vs CommonJS issue we may encounter, but we really hope you know what those two names mean, and how they are different.
  • TypeScript. The basics: interfaces, types, some knowledge of generics. Why you shouldn’t use any. If you care about type narrowing, discriminated unions and other fancy TypeScript features, we’d be even happier!
  • Unit testing. Using something like Jest, vitest, tap, mocha… The framework isn’t important, what is important is that you know why and how to write tests. We’d love it if you could talk about test isolation and the pros/cons of snapshot testing.

Stuff that would be a huge bonus if you know, but not a requirement:

  • RxJS. As a real-time app, the Sanity Studio has to respond (or “react” if you’d like) to a multitude of events that can happen at any point in time. We use RxJS in some areas of our codebase to drive reactivity and combine async events from various sources.
  • Automated browser testing. Tools like Cypress, Playwright, Puppeteer etc.
  • Node.js. We’re running a lot of Node-based tools, and our command line interface is written in Node, so it would be great if you knew how to navigate these things and hook up dependencies. If you’ve built some backend stuff with Node that’d be awesome, but you won’t be doing too much of it in this role.

We expect you to be:

  • A compassionate, friendly human being that cares about and shows respect to the people you work with, as well as having empathy for our users. We want everyone to feel welcome in our community while using our product, regardless of who they are and what they already know.
  • Pragmatic. While we strive to make the best possible solutions, we also need to get value to our users and make sure they are not blocked. This means that sometimes you will need to deliver an incomplete or imperfect solution which we can iterate on over time, even though you might be tempted to hold off until it is “complete”.
  • Conscious about readable, maintainable code. Thoughtful comments, consistent coding style, and following the best practices and guidelines established by the team.
  • Able to collaborate effectively with people of different roles and backgrounds. Product managers, fellow developers, external clients and content authors.

Stuff we’ve built:

Most of the stuff we build is open-source, so feel free to check us out on GitHub! Here’s a few blog posts about features we’ve released for the Sanity studio project:

  • Presence: Broadcasting and showing where people are currently editing. Finding optimal ways of exchanging the information, rendering the indicators on the page, and making APIs to allow developers full control of the experience in custom input components and tools and similar.
  • Studio v3: Modernizing the studio codebase: building scalable API foundations, improving developer experience, allowing embedding Sanity into existing React codebases, identifying inconsistent and unergonomic APIs and improving them, migrating to TypeScript
  • Review changes: Visualizing what changed between revisions of a document in a way that is easy to understand, and allowing developers to build custom React components for displaying these differences.

There is some really cool technology powering the studio that we haven’t written about, that’d we love to show and tell you about if you’re interested. Let us know! We love talking about tech, and care deeply about our product!

What we offer:

  • You will be a part of a highly-skilled, inspiring, and supportive team, and work in an environment that encourages long-term personal growth.
  • A positive, flexible, and trust-based work environment.
  • Remote/WFH on the Central/East Coast in the US or Canada.
  • Universal healthcare, support to nurture physical and mental health, and parental leave.
  • A healthy work-life balance. A balance in life is important to us, and we accommodate flexible work hours that allow for a healthy work-life balance.
  • Competitive salary and stock options program.

Not sure you meet 100% of our qualifications? Have an untraditional background? Do apply anyway!

Apply for the position here!

_______________________________________

Sanity.io is the fastest, most flexible platform for delivering content to digital devices and products. Our platform is redefining the CMS market and changing the way organizations collaborate and work with content. Our growing community of developers and editors proves we are improving the working lives of people all over the world.

Sanity is trusted by organizations from Spotify to Figma and Stack Overflow. That trust is based on our product’s ability to quickly create customized workflows and content models, drive a programmatic approach to content, and enable organizations to distribute structured content from a single source of truth.

Sanity is backed by ICONIQ Growth, Threshold Ventures, Lead Edge Capital, Heavybit, Alliance Venture, Monochrome Capital, and prominent angel investors like Twitter and Medium co-founder Ev Williams, Netlify co-founder Matthias Biilmann, ex-CEO of Heroku Adam Gross and Vercel founder Guillermo Rauch.

We believe that you cannot build a great company without a great culture. Read about our values here and join us in building a diverse and inclusive team.

Sanity.io pledges to be an organization that reflects the globally diverse audience that our product serves. We believe that in addition to hiring the best talent, a diversity of perspectives, ideas, and cultures leads to the creation of better products and services. We are committed to equal employment opportunity regardless of race, color, ancestry, religion, sex, national origin, sexual orientation, age, citizenship, marital status, disability, or gender identity.

Product

Sanity StudioAPIsContent LakeSecurity & Compliance
  • Sanity vs Contentful
  • Sanity vs Strapi
  • Sanity vs Wordpress
  • Sanity vs Adobe Experience Manager
  • Sanity vs Hygraph
  • Sanity vs Sitecore
  • Sanity vs Storyblok
  • Sanity vs Contentstack
  • Sanity vs Prismic
  • Sanity vs Drupal
  • Sanity vs ButterCMS

Resources

DocumentationBlogResource libraryCase Studies
  • React Blog
  • Gatsby Blog
  • Next.js Landing Pages
  • Progressive Web Application
  • Single Page Application
  • Svelte & Typescript App
  • Vue & Tailwind Blog
  • Developer Portfolio Templates
  • Form validation with Yup
  • Live Preview with Next.js and Sanity.io
  • Next.js blog
  • Next.js personal website
  • Clean Next.js + Sanity app
  • Clean Remix + Sanity app
  • Clean SvelteKit + Sanity app
  • All Templates
  • Agency partners
  • Technology partners
  • Headless CMS 101
  • What is an API CMS
  • Static Sites 101
  • Headless Commerce 101
  • Headless SEO
  • Localization
  • GraphQL vs REST
  • Content as a Service
  • What is a DXP?
  • Typescript 101
  • Ecommerce SEO
  • CMS for enterprise
  • React CMS
  • Next.JS CMS
  • CMS for Shopify
  • Content platform
  • Multilingual CMS
  • Static Site CMS
  • Gatsby CMS
  • Node CMS
  • E-commerce CMS
  • Vue CMS
  • Angular CMS
  • GraphQL CMS
  • Newspaper CMS
  • Magazine CMS
  • CMS for apps
  • Remix CMS

Company

Contact SalesEnterpriseCareersTerms of ServicePrivacy PolicyAccessibility Statement

Stay connected

  • GitHub
  • Slack
  • Twitter
  • YouTube
  • Stack Overflow
  • Blog RSS
  • Newsletter
©Sanity 2023