sanity-secrets

React hooks and UI for reading and managing secrets in a Sanity Studio. This is a good pattern for keeping configuration secret. Instead of using environment variables which would be bundled with the Studio source (it is an SPA), we store secret information in a document in the dataset. This document will not be readable to externals even in a public dataset. With custom access controls you can also specify which users can read the configuration in your Studio.

Usage no npm install needed!

<script type="module">
  import sanitySecrets from 'https://cdn.skypack.dev/sanity-secrets';
</script>

README

sanity-secrets

React hooks and UI for reading and managing secrets in a Sanity Studio. This is a good pattern for keeping configuration secret. Instead of using environment variables which would be bundled with the Studio source (it is an SPA), we store secret information in a document in the dataset. This document will not be readable to externals even in a public dataset. With custom access controls you can also specify which users can read the configuration in your Studio.

Example

Quick example of both using the secrets and putting up a dialog to let user enter them.

import {useSecrets, SettingsView} from 'sanity-secrets'

const namespace = "myPlugin"

const pluginConfigKeys = [{
  key: 'apiKey',
  title: 'Your secret API key'
}]

const MyComponent = () => {
  const {secrets} = useSecrets(namespace)
  const [showSettings, setShowSettings] = useState(false)
  
  useEffect(() => {
    if (!secrets) { setShowSettings(true)}
  }, [secrets])
  
  return (
    {showSettings && (
      <SettingsView
        namespace={namespace}
        keys={pluginConfigKeys}
        onClose={() => {
          setShowSettings(false)
        }}
      />
    )}
  )
}