Migration Guide
May 25, 2026 · View on GitHub
Cross-cutting migration notes for the Supabase JavaScript SDK. One H2 section per migration theme.
Per-package migrations (changes scoped to a single SDK like
@supabase/auth-js) live alongside the package they affect, underpackages/core/<package>/migrations/. The notes in this file cover changes that span multiple packages or the workspace as a whole.
Node.js 18 support dropped (v2.79.0, 2025-10-31)
Starting with version 2.79.0, all Supabase JavaScript libraries require Node.js 20 or later. The @supabase/node-fetch polyfill has been removed and native fetch is now required.
Affected packages
@supabase/supabase-js, @supabase/auth-js, @supabase/postgrest-js, @supabase/realtime-js, @supabase/storage-js, @supabase/functions-js.
Why
Node.js 18 reached end-of-life on April 30, 2025 and no longer receives security updates. Node.js 20+ ships with native fetch, eliminating the need for the polyfill and reducing bundle size.
What to do
-
Upgrade Node.js to version 20 or later:
# Check current version node --version # Via nvm nvm install 20 nvm use 20 # Or download from https://nodejs.org/ -
Update your dependencies:
npm install @supabase/supabase-js@latest # or, per-package: npm install @supabase/auth-js@latest -
No code changes required — APIs are unchanged.
Supported runtimes
- Node.js 20+ (native fetch)
- Modern browsers
- Deno 2.x
- Bun 0.1+
- React Native and Expo (with the framework's bundled fetch polyfill)
Troubleshooting
fetch is not defined — you're on Node.js < 20. Upgrade Node.js. If you absolutely cannot upgrade, pin to the last version that supported Node.js 18:
npm install @supabase/supabase-js@2.78.0
⚠️ Using Node.js 18 is not recommended — it no longer receives security updates.