Developer tools
Migration guides
Node.js 1.0

Node.js SDK upgrade (v0.x to v1.0)

Learn how to upgrade to v1.0 of the Knock Node.js SDK.

Basic changes

#

Import style

#

Import the SDK using the standard ES6 import syntax:

Client initialization

#

Initialize your client with an options object:

What's new in v1.0

#

The v1.0 SDK brings complete TypeScript support, improved error handling, and new resources to the Node.js ecosystem.

Fully typed API

#

Complete TypeScript definitions for all requests and responses:

Enhanced error handling

#

Typed errors with better context:

Auto-pagination

#

Iterate through paginated resources automatically:

Request/response access

#

Get more control over raw responses:

Configurable logging

#

Better debugging capabilities:

Configurable timeouts and retries

#

Fine-tune request behavior:

New resources

#

Additional resources like Audiences, Channels, and Integrations:

Breaking changes

#

Client initialization

#

Client initialization accepts an options object instead of just the API key.

Parameter changes

#

Some parameter names have changed to match the API (e.g., cancellationKey is now cancellation_key).

Error handling

#

Error handling has been completely revamped with typed errors.

Token signing

#

The signUserToken method should now be imported from @knocklabs/node/lib/tokenSigner if referenced directly:

Method changes

#

Several method names have changed:

  • notify() is now workflows.trigger()
  • users.getSchedules() is now users.listSchedules()
  • workflows.createSchedules() is now schedules.create()
  • workflows.listSchedules() is now schedules.list()
  • workflows.updateSchedules() is now schedules.update()
  • workflows.deleteSchedules() is now schedules.delete()

Bulk operations

#

Bulk operations are now organized in their own namespaces: users.bulk.*, objects.bulk.*, schedules.bulk.*, etc.

Parameter changes

#

A PreferenceSet ID parameter is now required for users.getPreferences().

All parameters are now in camelCase in the method signature but use snake_case in the request body. Query parameters are now passed as a separate object in most list methods:

Response handling

#

The new SDK returns the data directly in most cases rather than wrapped in a data property. Pagination is handled differently with cursor-based pagination.

Common operations

#

Old version:

New version:

Old version:

New version:

Need help?

#

If you run into any issues during your migration, reach out to our support team or open an issue on GitHub.