Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@supabase/functions-js

supabase16.8mMIT2.78.0TypeScript support: included

JS SDK to interact with Supabase Functions.

functions, supabase

readme


<picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/supabase/supabase/master/packages/common/assets/images/supabase-logo-wordmark--dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/supabase/supabase/master/packages/common/assets/images/supabase-logo-wordmark--light.svg"> Supabase Logo </picture>

Supabase Functions JS SDK

JavaScript SDK to interact with Supabase Edge Functions.

Guides · Reference Docs · TypeDoc

Build Package License: MIT pkg.pr.new

Quick Start

Installation

npm install @supabase/functions-js

Usage

import { FunctionsClient } from '@supabase/functions-js'

const functionsUrl = 'https://<project_ref>.supabase.co/functions/v1'
const anonKey = '<anon_key>'

const functions = new FunctionsClient(functionsUrl, {
  headers: {
    Authorization: `Bearer ${anonKey}`,
  },
})

// Invoke a function
const { data, error } = await functions.invoke('hello-world', {
  body: { name: 'Functions' },
})

Development

This package is part of the Supabase JavaScript monorepo. To work on this package:

Building

# Complete build (from monorepo root)
npx nx build functions-js

# Build with watch mode for development
npx nx build functions-js --watch

# Individual build targets
npx nx build:main functions-js    # CommonJS build (dist/main/)
npx nx build:module functions-js  # ES Modules build (dist/module/)

# Other useful commands
npx nx clean functions-js         # Clean build artifacts
npx nx typecheck functions-js     # TypeScript type checking
npx nx docs functions-js          # Generate documentation

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

Testing

Docker Required for relay tests. The functions-js tests use testcontainers to spin up a Deno relay server for testing Edge Function invocations.

# Run all tests (from monorepo root)
npx nx test functions-js

# Run tests with coverage report
npx nx test functions-js --coverage

# Run tests in watch mode during development
npx nx test functions-js --watch

# CI 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 options
  • Relay functionality - Using a containerized Deno relay to test real Edge Function scenarios
  • Error handling - Ensuring proper error responses and retries
  • Request/response models - Validating headers, body, and response formats

Contributing

We 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.

changelog

2.77.0 (2025-10-29)

🚀 Features

  • auth: add OAuth 2.1 authorization consent management API calls (#1793)
  • auth: add OAuth client update support (#1812)
  • storage: add support for bucket pagination and sorting (#1790)

🩹 Fixes

  • auth: handle 204 No Content response in OAuth client delete (#1786)
  • auth: remove redirection in getAuthorizationDetails (#1811)
  • postgrest: add incoming major 14 support (#1807)
  • repo: add missing tslib dependency to core packages (#1789)
  • repo: cleanup package-lock.json and bun.lock (#1799)
  • storage: remove unnecessary filter (#1809)

🔥 Performance

  • precompile RegExp (#1806)

❤️ Thank You

  • Andrew Valleteau @avallete
  • Cemal Kılıç @cemalkilic
  • Fabrizio @fenos
  • Katerina Skroumpelou @mandarini
  • Kevin Grüneberg @kevcodez
  • Lenny @itslenny

2.76.1 (2025-10-21)

🩹 Fixes

  • repo: add missing tslib dependency to core packages (#1789)

❤️ Thank You

  • Katerina Skroumpelou @mandarini

2.76.0 (2025-10-20)

🚀 Features

  • realtime: realtime explicit REST call (#1751)
  • realtime: enhance RealtimeChannel type (#1747)
  • storage: storage vectors and analytics in storage-js (#1752)

🩹 Fixes

  • functions: missing body when Content-Type header supplied by dev (#1758)
  • functions: add application/pdf response parsing to FunctionsClient (#1757)
  • realtime: manipulate URLs using URL object (#1769)
  • repo: convert postbuild to explicit codegen (#1778)
  • storage: correct list v2 types to correctly match data returned from api (#1761)
  • storage: use backward compatible return type in download function (#1750)
  • storage: api types (#1784)

❤️ Thank You

  • Fabrizio @fenos
  • Filipe Cabaço @filipecabaco
  • Guilherme Souza
  • Katerina Skroumpelou @mandarini
  • Lenny @itslenny

2.75.1 (2025-10-17)

🩹 Fixes

  • storage: use backward compatible return type in download function (#1750)

❤️ Thank You

  • Lenny @itslenny

2.75.0 (2025-10-09)

🚀 Features

  • postgrest: add embeded functions type inference (#1632)

❤️ Thank You

  • Andrew Valleteau @avallete

2.74.0 (2025-10-07)

🚀 Features

  • auth: add deprecation notice to onAuthStateChange with async function (#1580)
  • auth: add OAuth 2.1 client admin endpoints (#1582)
  • docs: explicitly mark options as optional (#1622)
  • realtime: add support to configure Broadcast Replay (#1623)
  • release: enable trusted publishing (#1592)
  • storage: add support for sorting to list v2 (#1606)

🩹 Fixes

  • storage: remove trailing slash from baseUrl normalization (#1589)

❤️ Thank You

  • Cemal Kılıç @cemalkilic
  • Doğukan Akkaya
  • Eduardo Gurgel
  • Etienne Stalmans @staaldraad
  • Lenny @itslenny
  • Stojan Dimitrovski @hf
  • Taketo Yoshida