Skip to content

Deprecation of contract bindings typescript shipped before its replacement plugin was released #2758

Description

@y4hyya

What version are you using?

Stellar CLI 28.1.0, which added the deprecation (#2724, #2725), and @stellar/stellar-sdk 17.1.0, the latest release on npm as of Sep 26, 2026.

What did you do?

Followed the migration path from the new deprecation warning (source):

`stellar contract bindings typescript` is deprecated. Use the JavaScript Stellar SDK instead: https://github.com/stellar/js-stellar-sdk#cli

The linked README says that once the native command is removed, stellar contract bindings typescript will resolve to the stellar-contract-bindings-typescript plugin from stellar/js-stellar-sdk#1738.

What did you expect to see?

A way to keep using the command today, and a warning that tells users what they need to do.

What did you see instead?

  1. The plugin is not released. Add Stellar CLI plugin for generating TypeScript bindings js-stellar-sdk#1738 merged on Sep 21, 2026 and is still listed under Unreleased. The published 17.1.0 only ships stellar-js (package.json). So following the warning today means moving to npx @stellar/stellar-sdk generate now, then moving back to stellar contract bindings typescript once the plugin ships.
  2. The plugin is not a drop in replacement. It is a Node script that the CLI finds on PATH (lookup), so it needs Node and a global install of the SDK. Environments that only have the stellar binary, like CI images, will break once the native command is removed. The JS CLI also does not read the CLI config, so contract aliases (accepted natively) and networks added with stellar network add are not resolved. It only accepts mainnet, testnet, futurenet or localnet (source), and since the CLI's default local network is named local (source), --network local fails.
  3. The generated package changes. The native template pins @stellar/stellar-sdk to ^16.0.1 (source), while the plugin pins the SDK version it ships in, 17.x or later (source).

Suggestion

  1. Publish the SDK release that contains the plugin before the native command is removed, and name that version in the warning.
  2. Make the warning say what to do, for example: install @stellar/stellar-sdk (that version or later) globally and keep using stellar contract bindings typescript. Mention the differences above.
  3. Announce a removal date, counted from the plugin's release rather than from the deprecation, so users are not asked to migrate before the replacement exists.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      Backlog (Not Ready)

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions