Sanity Library Reference Docs
    Preparing search index...

    Module @sanity/functions - v1.9.0

    @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

    BlueprintResource
    DocumentEvent
    DurableFanoutBranchContext
    FunctionContext
    ResourcesApi
    ScheduledFunctionContext
    SyncTagInvalidateContext
    SyncTagInvalidateEvent

    Type Aliases

    DocumentEventHandler
    EventHandler
    FunctionPayload
    FunctionResource
    FunctionResourceEnvelope
    GenericContext
    GenericEvent
    InvokeCallback
    InvokeOptions
    PubSubEventHandler
    ScheduledEventHandler
    SyncTagInvalidateCallback
    SyncTagInvalidateEventHandler

    Functions

    documentEventHandler
    eventHandler
    invoke
    pubSubEventHandler
    scheduledEventHandler
    syncTagInvalidateEventHandler