JS SDK to interact with Supabase Functions.
npm install @supabase/functions-js
Guides
·
Reference Docs
·
TypeDoc




- Node.js 20 or later (Node.js 18 support dropped as of October 31, 2025)
- For browser support, all modern browsers are supported
> ⚠️ Node.js 18 Deprecation Notice
>
> Node.js 18 reached end-of-life on April 30, 2025. As announced in our deprecation notice, support for Node.js 18 was dropped on October 31, 2025.
``bash`
npm install @supabase/functions-js
`js
import { FunctionsClient } from '@supabase/functions-js'
const functionsUrl = 'https://
const anonKey = '
const functions = new FunctionsClient(functionsUrl, {
headers: {
Authorization: Bearer ${anonKey},
},
})
// Invoke a function
const { data, error } = await functions.invoke('hello-world', {
body: { name: 'Functions' },
})
`
This package is part of the Supabase JavaScript monorepo. To work on this package:
`bashComplete build (from monorepo root)
npx nx build functions-js
#### Build Outputs
- CommonJS (
dist/main/) - For Node.js environments
- ES Modules (dist/module/) - For modern bundlers (Webpack, Vite, Rollup)
- TypeScript definitions (dist/module/index.d.ts) - Type definitions for TypeScript projects$3
Docker Required for relay tests. The functions-js tests use testcontainers to spin up a Deno relay server for testing Edge Function invocations.
`bash
Run all tests (from monorepo root)
npx nx test functions-jsRun tests with coverage report
npx nx test functions-js --coverageRun tests in watch mode during development
npx nx test functions-js --watchCI test command (runs with coverage)
npx nx test:ci functions-js
`#### Test Requirements
- Node.js 20+ - Required for testcontainers
- Docker - Must be installed and running for relay tests
- No Supabase instance needed - Tests use mocked services and testcontainers
#### What Gets Tested
- Function invocation - Testing the
invoke()` method with various optionsWe welcome contributions! Please see our Contributing Guide for details on how to get started.
For major changes or if you're unsure about something, please open an issue first to discuss your proposed changes.