⚠️ WARNING: This release is a new major version with breaking changes from the v2.X.X series. For help migrating from v2 releases, see the filev2_TO_v3_MIGRATION_GUIDE.md
.
With the release of v3 of this SDK, v2 is now in maintenance mode. No new features will be added to v2, and only security fixes or critical errors will be addressed. At the end of March 2025, no further updates will be made to the v2 package.
- Convert algod responses to typed by @Eric-Warehime in #776
- Align transaction fields to transaction reference spec by @algochoi in #804
- TEAL Source Map: Improve SourceMap and support columns by @jasonpaulos in #834
- Remove
IntDecoding
as a REST option & support native bigint types in models by @jasonpaulos in #852 - Refactor
Transaction
class by @jasonpaulos in #854 - Improve object encoding and decoding by @jasonpaulos in #862
- Correctly model blocks by @jasonpaulos in #875
- Fix stateproof txn representation by @jasonpaulos in #876
- Typed indexer responses by @jasonpaulos in #857
- Support special case raw binary strings by @jasonpaulos in #878
- REST API TEAL bytes fix by @jasonpaulos in #881
- Fix remaining REST untyped responses by @jasonpaulos in #882
- Remove buffer usage in favor or Uint8Array and Dataview by @algochoi in #800
- Remove
Buffer
Usage by @algochoi in #801 - Add address bytes length check in encodeAddress by @algochoi in #809
- Native esm bundle by @PhearZero in #836
- Add ability to pass through fetch options by @jasonpaulos in #883
- REST API: Allow bigints for client args by @jasonpaulos in #893
- Fix: Don't delete
dist
folder when creating release PR by @jasonpaulos in #890 - Release PR Generation: Use prerelease tag in changelog generation by @jasonpaulos in #892
- Type and formatting changes by @jasonpaulos in #853
- 3.0.0: Sync changes to develop by @jasonpaulos in #884
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.9.0...v3.0.0
- feat: add ARC22 and ARC28 interfaces for ABI contracts and methods by @joe-p in #856
- Algod: Regenerate models to include new simulate option by @jasonpaulos in #880
- API: Deprecate txn maker functions that will be removed in v3 by @jasonpaulos in #886
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.8.0...v2.9.0
- Fix: Update chromedriver deps, make install conditional in CI, and fix indexer sync error in cucumber tests by @jasonpaulos in #859
- fix: allow either boolean value for nonParticipation offline keyregs by @joe-p in #866
- API: Regenerate algod and indexer models by @jasonpaulos in #845
- Spec: Regenerate code from specification file f633b019 by @gmalouf in #870
- @gmalouf made their first contribution in #870
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.7.0...v2.8.0
- fix: remove cross-fetch by @PhearZero in #833
- @PhearZero made their first contribution in #833
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.6.0...v2.7.0
- signer: Only merge multisigs if there are more than 1 by @acfunk in #822
- Simulate: Application State Change and Hash of Executed Bytecode by @ahangsu in #818
- node: Update to node 18, drop support for node 16 by @jasonpaulos in #827
- api: Regenerate client. by @winder in #826
- @acfunk made their first contribution in #822
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.5.0...v2.6.0
- bug-fix: include currency-greater-than param for 0 value by @shiqizng in #807
- Simulation: Execution trace (PC/Stack/Scratch) support by @ahangsu in #803
- fetch: Add Cloudflare Workers support (cross-fetch v4) by @spencercap in #794
- logging: Add rn warning and logging by @Eric-Warehime in #798
- CICD: Update Chromedriver version and CI orb by @algochoi in #802
- CICD: Update chromedriver in package.json to 116+ by @algochoi in #811
- @spencercap made their first contribution in #794
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.4.0...v2.5.0
- docs: fix error message by @barnjamin in #780
- Algod: Simulation run with extra budget per transaction group by @ahangsu in #784
- DevOps: Update CODEOWNERS to only refer to the devops group by @onetechnical in #783
- Client: Don't send auth header when token is empty by @Eric-Warehime in #782
- algod: Add state delta APIs by @Eric-Warehime in #785
- deps: Remove coveralls, mocha lcov by @Eric-Warehime in #787
- algod: Add json query arg to delta endpoints by @Eric-Warehime in #793
- Bump semver-regex from 3.1.2 to 3.1.4 by @dependabot in #580
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.3.0...v2.4.0
- Docs: Repair the links in the docs to developer.algorand.org by @bbroder-algo in #755
- Fix: Allow nonParticipation flag to be a boolean by @barnjamin in #757
- BugFix: Min fee sp fix by @barnjamin in #760
- Simulation: Lift log limits option in SimulateRequest by @ahangsu in #768
- Docs: Examples by @barnjamin in #754
- API: Support updated simulate endpoint by @jasonpaulos in #764
- algod: Add blockOffsetTimestamp, syncRound APIs to algod client by @Eric-Warehime in #769
- node: Drop support for node v14, npm audit fix by @Eric-Warehime in #773
- client: Export token header types by @Eric-Warehime in #772
- DevOps: Add CODEOWNERS to restrict workflow editing by @onetechnical in #775
- Docs: Update README & FAQ by @jasonpaulos in #774
- @bbroder-algo made their first contribution in #755
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.2.0...v2.3.0
- bugfix: Satisfy typescript constraints by @aorumbayev in #741
- algod: Minor improvements to simulation support by @jasonpaulos in #749
- CICD: Update ssh fingerprint for gh-pages by @algobarb in #745
- Docs: add examples to be pulled in for docs by @joe-p in #747
- algod: Simulate Endpoint by @algochoi in #743
- @aorumbayev made their first contribution in #741
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.1.0...v2.2.0
- Enhancement: Add foreign array objects to ATC
addMethodCall
by @algochoi in #725 - API: verifyTealSign utility function by @M-Picco in #735
- Packaging: Don't use global
Buffer
object by @jasonpaulos in #733 - algod REST API: Add support for algod /v2/teal/disassemble by @michaeldiamant in #702
- @M-Picco made their first contribution in #735
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v2.0.0...v2.1.0
- Remove v1 algod API (
client.algod
) due to API end-of-life (2022-12-01). Instead, use v2 algod API (client.v2.algod.algod
). - Remove
cost
field inDryrunTxnResult
in favor of 2 fields:budget-added
andbudget-consumed
.cost
can be derived bybudget-consumed - budget-added
. - Remove logicsig templates (
logicTemplates
),logic/langspec.json
,logic.logic
depending onlangspec.json
. - Regenerate algod models so every constructor requires an object to be passed in. Previously, only constructors with more than 4 argument specified this.
- Remove unused generated types:
CatchpointAbortResponse
,CatchpointStartResponse
. - Remove following methods in favor of the methods with
WithSuggestedParams
suffix:makePaymentTxn
,makeKeyRegistrationTxn
,makeAssetCreateTxn
,makeAssetConfigTxn
,makeAssetDestroyTxn
,makeAssetFreezeTxn
,makeAssetTransferTxn
.
- Remove
makeLogicSig
in favor of either usingLogicSigAccount
(preferred) or directly invokingLogicSig
constructor. - Remove
EncodedMultisigBlob
in favor of `EncodedSignedTransaction.
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.24.1...v2.0.0
- Packaging: Improve source map and browser usage for external bundlers by @jasonpaulos in #707
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.24.0...v1.24.1
- Bug-Fix: encode ABI string with non-ASCII characters by @ahangsu in #700
- Tests: Migrate v1 algod dependencies to v2 in cucumber tests by @algochoi in #693
- REST API: Add KV counts to NodeStatusResponse by @michaeldiamant in #696
- Fix: createMultisigTransaction name in comments by @nullun in #694
- Enhancement: allowing zero-length static array by @ahangsu in #698
- ABI: Refactor ABI encoding test to round-trip by @michaeldiamant in #701
- @nullun made their first contribution in #694
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.23.2...v1.24.0
- SDK: Dryrun and transaction decoding fix for boxes by @jasonpaulos in #690
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.23.1...v1.23.2
- fix: mergeMultisigTransactions logic error by @AlgoDoggo in #675
- CI: Remove unneeded dependency & update package-lock by @jasonpaulos in #684
- Boxes: Add support for Boxes by @algochoi in #604
- Enhancement: Code generation improvements by @jasonpaulos in #663
- Network: Replace
superagent
withfetch
for HTTP requests by @jasonpaulos in #676 - API: Fix docs typo by @PabloLION in #677
- CI: Upgrade node.js from v12 to v14 by @michaeldiamant in #680
- @PabloLION made their first contribution in #677
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.22.0...v1.23.1
- Bug-Fix: Fix typo in documentation for
searchAccounts
currencyGreaterThan
by @fionnachan in #572
- REST API: Add algod block hash endpoint, add indexer block header-only param. by @winder in #665
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.21.0...v1.22.0
- Enhancement: Removing more unused steps by @tzaffi in #637
- Enhancement: Add deprecation tag to algod v1 client by @algochoi in #642
- enhancement: add unit test for ParticipationUpdates field by @shiqizng in #652
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.20.0...v1.21.0
- Bug-Fix: Pass verbosity to the harness and sandbox by @tzaffi in #630
- Enhancement: Use sandbox for SDK Testing and remove Indexer v1 steps by @algochoi in #623
- Tidy: Ignore algorand-sdk-testing test-harness dir by @michaeldiamant in #634
- Enhancement: Deprecating use of langspec by @ahangsu in #632
- enhancement: Initial stateproofs support by @Eric-Warehime in #629
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.19.1...v1.20.0
- Bug-Fix: Pass verbosity to the harness and sandbox by @tzaffi in #630
- Enhancement: Use sandbox for SDK Testing and remove Indexer v1 steps by @algochoi in #623
- Tidy: Ignore algorand-sdk-testing test-harness dir by @michaeldiamant in #634
- Enhancement: Deprecating use of langspec by @ahangsu in #632
- enhancement: Initial stateproofs support by @Eric-Warehime in #629
- @ahangsu made their first contribution in #632
Full Changelog: https://github.com/algorand/js-algorand-sdk/compare/v1.19.1...v1.20.0-beta.1
- API: Support attaching signatures to standard and multisig transactions by @jdtzmn in #595
- AVM: Consolidate TEAL and AVM versions by @michaeldiamant in #609
- Testing: Use Dev mode network for cucumber tests by @algochoi in #614
- tech-debt: Remove unused/unmaintained templates by @Eric-Warehime in #607
- Dev Tools: Source map decoder by @barnjamin in #590
- Enhancement: Upgrade typedoc and plugins by @fionnachan in #605
- Github-Actions: Adding PR title and label checks by @algojack in #600
- docs: tealSign by @AlgoDoggo in #610
- Properly set maxWidth in trace by @joe-p in #593
- fix: safe intDecoding by @AlgoDoggo in #599
- Remove code that relies on node's path module by @bmdelacruz in #598
- Add method to abi results by @barnjamin in #578
- Add getMethodByName function to Contract and Interface by @barnjamin in #583
- Allow Uint8Arrays public keys for kmd signing by @vividn in #549
- Update generated files by @Eric-Warehime in #569
- Build: Add SDK code generation workflow by @Eric-Warehime in #570
- Update codegen.yml by @Eric-Warehime in #574
- Generate updated client API code by @algoidurovic in #566
- @vividn made their first contribution in #549
- @Eric-Warehime made their first contribution in #569
- @algoidurovic made their first contribution in #566
- Dryrun stack printer
- Document more Indexer methods
- Corrected type of KMD keys
- Include foreign app addr in dryrun requests
- Support unlimited assets REST API changes. (#527)
- Fix app creation createDryrun error (#539)
- Fix cucumber tests for asset lookup step (#540)
- Fix searchForApplications filter by creator parameter type. (#546)
- Support unlimited assets REST API changes. (#527)
- Fix app creation createDryrun error (#539)
- Fix cucumber tests for asset lookup step (#540)
- Add stateproof keyreg field (#463)
- Implement C2C tests (#498)
- Moving from travis to circleci (#507)
- Add installation instructions for vite users (#512)
- Update langspec for TEAL 6 (#518)
- Docs for
lookupAssetByID
andlookupAccountTransactions
(#516) - Make FromObject parameter IntelliSense human readable (#528)
- Bump url-parse from 1.5.1 to 1.5.8 (#529)
- Use HTTP request format arg to determine response type (#532)
- Update chromedriver (#535)
- Add stateproof keyreg field (#463)
- Implement C2C tests (#498)
- Moving from travis to circleci (#507)
- Add installation instructions for vite users (#512)
- Update langspec for TEAL 6 (#518)
- Add app creator to dryrun request (#499)
- Adding note to use bigint (#501)
- Fix JSON decoding (#502)
- Create dryrun (#478)
- Support ABI reference types and other improvements (#482)
- Improve HTTP error messages (#485)
- Enabling a custom client for Algod and Indexer (#477)
- Export sdk subclasses to typedoc (#479)
- ABI Support for JS library (#454)
- ABI interaction support (#466)
- Wait for confirmation function (#469)
- Add freezeAccount encoding in display method (#460)
- Regenerate code from specification file (#456)
- Document Indexer methods (#491)
- Document Algodv2 methods (#486)
- Update chromedriver (#492)
- Fix wait for confirmation function (#480)
- Fix type for foreignAssets (#472)
- Support ABI reference types and other improvements (#482)
- Improve HTTP error messages (#485)
- Enabling a custom client for Algod and Indexer (#477)
- Export sdk subclasses to typedoc (#479)
- Fix wait for confirmation function (#480)
- ABI Support for JS library (#454)
- ABI interaction support (#466)
- Wait for confirmation function (#469)
- Add freezeAccount encoding in display method (#460)
- Regenerate code from specification file (#456)
- Fix type for foreignAssets (#472)
- Support AVM 1.0
- Support deserializing nonparticipating and offline keyreg
- Support deserializing nonparticipating transaction
- Key registration transaction with nonParticipation=true
- Properly decode transaction extra pages field (#419)
- Signing support for rekeying to LogicSig/MultiSig account
- Add missing fields
msig
andlsig
toEncodedSignedTransaction
type - Add the missing type
SignedTransaction
, which helped fix theany
return value forTransaction.from_obj_for_encoding
- More internal types are now exported
- Support the new base64 asset fields in algod models
- Add ability to install the package from a git URL with npm
- Remove BigInt literals from package
- Support encoding transactions with a first round of zero
- Fix msgpack encoding of dryrun objects
- Support for dynamic opcode accounting, backward jumps, loops, callsub, retsub
- Ability to pool fees
- Ability to pay for extra pages
- Add link to docs in readme
- Update examples on getting
suggestedParams
- Grammatical fixes
- Fix asset creation transaction types that should be optional
- Remove synthetic default imports
- Use DryrunRequest instead of DryrunSource in constructor
- Changed our browser bundle from webpack's
window
type toUMD
, which fixes issues when using the library from React (#352).
- TypeScript support (#302, #314, #315, #317, #313, #319, #323, #318, #331, #325, #337).
- Allow BigInts to be used to construct Transactions (#263).
decodeAddress
now verifies the address checksum (#269).- Add support for nonparticipating key registration transactions (#271).
- Allow LogicSigs to sign transactions with a different AuthAddr (#268).
- Support for decoding BigInts from API calls (#260).
- Add helper functions to encode and decode integers (#281).
- Support new features from indexer v2.3.2 (#296).
- Support TEAL 3 programs (#294).
- Properly validate
assetMetadataHash
andlease
(#253, #280). - Fix the
Algodv2.versionsCheck().do()
method (#258). - Fix an issue using
mergeMultisigTransactions
in React (#259). - Fix the inability to specify rekey addresses in several makeTransaction functions (#267).
- Stop the Transaction constructor from modifying input arrays (#279).
- Allow
signLogicSigTransaction
to accept Transaction objects (#290).
- Update examples to use v2 endpoints (#289).
- Improve error trace reporting (#291).
- Establish consistent code style (#299).
- Remove
dist
folder from repo (#326).
- Added
toString
and print methods to Transaction (#243). - Added functions to create Transactions from objects (#246).
- Fixed issues using the library with webpack, including switching dependencies from
keccak
tojs-sha3
(#247).
- Add
encodeAddress
anddecodeAddress
to convert between the binary and text form of Algorand addresses (#216). - Add
encodeUnsignedTransaction
,decodeUnsignedTransaction
,decodeSignedTransaction
to convert between binary transactions and transaction objects (#218). - Add optional
rekeyTo
parameter to transaction builder functions (#221). - Support testing on Chrome and Firefox in addition to Node (#228 and #235).
- Update keccak to 3.0.1, which fixes a build error that would occur every time the package was installed (#151).
- Allow
assignGroupID
to accept raw transaction objects and instances of theTransaction
class (#236). - Allow
signTransaction
to accept instances of theTransaction
class (#233). - Improve type checking and documentation (#233 and #231).
- Switch to using algo-msgpack-with-bigint, which is a fork of @msgpack/msgpack with support for encoding and decoding BigInts (#229).
- Update dependencies (#237).
- Fixed msgpack endpoints returning undefined in browsers (#210 and #215).
- Removed use of class properties (#213).
- Remove unneeded dependency js-yaml and changed mock-http-server to a dev dependency (#214 and #212).
- Fixed set Accept on GET calls
- Change algosdk.signMultisigTransaction to accept either a built Transaction or a dict of constructor args
- Support for Application Call Transactions, also known as Stateful TEAL
- Support for TEAL Compile and Dryrun
- Support for Rekeying Transactions
- An encoding failure due to an empty field will now indicate which field was empty
- Browserify can now handle newly exported modelsv2 package
- Fixed bug where submitting an array of transactions to v2 client's sendRawTransaction would cause an error.
- Fixed bug where Indexer and algod V2 clients were omitted from module exports.
- Clients for Indexer and algod V2
- additional Algorand Smart Contracts (ASC)
- support for Dynamic Fee contract
- support for Limit Order contract
- support for Periodic Payment contract
- support for Suggested Params
- Added asset decimals field.
- Added support for Algorand Standardized Assets (ASA)
- Added support for Algorand Smart Contracts (ASC)
- Added support for Hashed Time Lock Contract (HTLC)
- Added support for Split contract
- Added support for Group Transactions
- Added support for leases
- msgpack lib was replaced with the official https://github.com/msgpack/msgpack-javascript
- algod.transactionById returns the note as Uint8Array and not as base64
- Support for key registration transactions
- Support for flat fees
- Signing and verifying bytes
- deleteMultisig uses post instead of get
- "MultiSig" standardized to "Multisig"
- Support for Optional Parameters for GetTransactionsByAddress
- Support for GetTransactionByID
- Handle the case of undeclared noteField
- Support of GenesisHash and Close Remainder To fields
- Bug Fix for Suggested Fee
- Support for multisignatures
- kmd can now sign transactions
- Support in more than one token for algodClient
- Support in new Suggested Fee scheme
- Now the client handles empty transactions list
- Bug Fix
- Update to a newer msgpack version (Support 64bit numbers)
- Update algod client to convert b64 to buffer
- Support for arbitrary encoding and decoding of javascript objects
- Support for transaction information in algodClient
- Support for "genesis ID" field in transactions