v2.1.0

Migration to v3 (legacy REST surface removal)

How to migrate off the deprecated REST surface that is removed in Bitrix24 JS SDK 3.0.0.

This guide lists everything that is @deprecated in 2.0.0 and removed in 3.0.0, with the canonical replacement for each symbol.

The symbols below still ship in 2.0.0 — they keep working but emit a runtime deprecation warning on every call. They are removed in 3.0.0. Migrate before upgrading to 3.0.0.
Step-by-step diff examples for every method are in the v0 → v1 guide under "Deprecated" — this page is the at-a-glance removal checklist.

What is removed in 3.0.0

Legacy REST shortcuts on AbstractB24

These instance shortcuts ignore the restApi:v2 / restApi:v3 split and are replaced by the explicit action surface:

RemovedReplacement
b24.callMethod(method, params, start)b24.actions.v{2,3}.call.make(options)
b24.callListMethod(method, params, progress, customKeyForResult)b24.actions.v{2,3}.callList.make(options) 1
b24.fetchListMethod(method, params, idKey, customKeyForResult)b24.actions.v{2,3}.fetchList.make(options) 1
b24.callBatch(calls, isHaltOnError, returnAjaxResult)b24.actions.v{2,3}.batch.make(options)
b24.callBatchByChunk(calls, isHaltOnError)b24.actions.v{2,3}.batchByChunk.make(options)
- await b24.callMethod('crm.deal.list', { filter: { '>id': 123 } }, 100)
+ await b24.actions.v2.call.make({
+   method: 'crm.deal.list',
+   params: { filter: { '>id': 123 }, start: 100 },
+   requestId: 'unique-request-id'
+ })

AbstractB24.batchSize

Maximum length for batch response.

The static const is removed. Inline the value 50 if you relied on it.

- if (size < AbstractB24.batchSize) {
+ if (size < 50) {
  // some code ...
}

AjaxResult paging helpers

These are tied to the restApi:v2 envelope fields next / total, which restApi:v3 does not return:

RemovedReplacement
result.isMore()use the list helpers — they hide pagination entirely
result.hasMore()use the list helpers
result.getNext(http)use the list helpers
result.fetchNext(http)use the list helpers
result.getTotal()restApi:v2: use the list helpers; restApi:v3 has no element-count yet (an aggregate action is planned)

Replace manual paging with callList.make (collect everything) or fetchList.make (async generator):

- // legacy manual paging on the deprecated surface
- const res = await b24.callMethod('crm.deal.list', {})
- let list = res.getData().result
- while (res.isMore()) { res = await res.getNext(http); list.push(...res.getData().result) }
+ // the list helper iterates for you — `chunk` is the next array of items
+ for await (const chunk of b24.actions.v2.fetchList.make({ method: 'crm.deal.list' })) {
+   // handle chunk
+ }

LoggerBrowser and LoggerType

Replaced by the universal Logger / LoggerFactory system. The LoggerType enum is removed with no replacement — LoggerFactory manages levels itself, so just drop the import:

- import { LoggerBrowser, LoggerType } from '@bitrix24/b24jssdk'
+ import { LoggerFactory } from '@bitrix24/b24jssdk'

- const $logger = LoggerBrowser.build('MyApp', import.meta.env?.DEV === true)
+ const $logger = LoggerFactory.createForBrowser('MyApp', import.meta.env?.DEV === true)

- $logger.info('response', dataList)
+ $logger.info('response', { someInfo: dataList })

Runtime: Node 20 is dropped in 3.0.0

3.0.0 raises the Node floor. engines.node moves from ^20.0.0 || >=22.0.0 to >=22.0.0, so Node 20 is no longer supported.

Node 20 reached end-of-life on 2026-04-30 — it no longer receives security fixes — and the SDK already tests only Node 22 and 24 in CI, so 2.x advertises Node 20 without exercising it. 3.0.0 closes that gap by dropping it.

What this means for you:

  • On Node 22 or newer, nothing changes.
  • On Node 20, npm install will print an EBADENGINE warning, and under engine-strict=true (or pnpm's default for a workspace) the install fails outright. Move to Node 22 (LTS) or newer before upgrading to 3.0.0.

This is a packaging floor, not an API change: no code has to change, only the Node version you run on. There is nothing to migrate in your source.

No 3.0.0 date is set yet — this is documented ahead of time so you can plan the runtime move, not because a release is imminent.

How to find every call site

The deprecated symbols emit a JSSDK_CORE_DEPRECATED_METHOD warning at runtime, and LoggerBrowser logs @deprecated: use Logger. A quick static check:

grep -rnE 'callMethod|callListMethod|fetchListMethod|callBatch|callBatchByChunk|\.isMore\(|\.hasMore\(|\.getNext\(|\.fetchNext\(|\.getTotal\(|LoggerBrowser|LoggerType' src

Once that returns nothing, you are ready for 3.0.0.

Footnotes

  1. Pass the correct idKey'ID' for classic list methods, 'id' for crm.item.* / restApi:v3. Omitting it can yield a silently empty result. 2