Sanity Library Reference Docs
    Preparing search index...

    Module @sanity/functions - v1.3.1

    @sanity/functions

    Helper methods and type definitions for Sanity Functions.

    npm install @sanity/functions
    
    import {documentEventHandler} from '@sanity/functions'
    import {createClient} from '@sanity/client'

    export const handler = documentEventHandler(async ({context, event}) => {
    // Create a Sanity client using the context options
    const client = createClient({
    apiVersion: '2025-05-01',
    ...context.clientOptions,
    })

    // Access the event data
    const data = event.data

    // Your function implementation
    console.log('Document updated:', data)
    })

    By default, the event.data property is untyped (any). If you know what the shape of the data that will be delivered is, you can specify it as a generic to the function:

    interface NotificationData {
    documentId: string
    text: string
    }

    export const handler = documentEventHandler<NotificationData>(async ({event}) => {
    console.log(event.data.text) // Typed as `string`
    console.log(event.data.notSet) // Will yield type error
    })
    import {type DocumentEventHandler} from '@sanity/functions'
    import {createClient} from '@sanity/client'

    export const handler: DocumentEventHandler = async ({context, event}) => {
    // …
    }

    // …you can also define the data type:
    export const handler: DocumentEventHandler<{text: string}> = async ({event}) => {
    console.log(event.data.text)
    }
    /** @type {import('@sanity/functions').DocumentEventHandler} */
    export const handler = async ({context, event}) => {
    console.log(event.data.text)
    }

    // …you can also define the data type:
    /** @type {import('@sanity/functions').DocumentEventHandler<{text: string}>} */
    export const handler = async ({event}) => {
    console.log(event.data.text)
    }

    To build this project:

    npm run build
    

    To run tests:

    npm test
    

    To run type checking:

    npm run lint
    

    This repository uses conventional commits and release-please. Any relevant changes to main will create a pull request for a new release. Approve it and merge it to trigger the actual release.

    MIT © Sanity.io

    Interfaces

    DocumentEvent
    FunctionContext
    ScheduledFunctionContext
    SyncTagInvalidateContext
    SyncTagInvalidateEvent

    Type Aliases

    DocumentEventHandler
    ScheduledEventHandler
    SyncTagInvalidateCallback
    SyncTagInvalidateEventHandler

    Functions

    documentEventHandler
    syncTagInvalidateEventHandler