github anza-xyz/kit v8.3.0

3 hours ago

@solana/kit

v8.3.0 (2026-09-09)

Minor Changes

  • [@solana/addresses, @solana/transaction-messages] #2025 7a14614 Thanks @lorisleiva! - Add a new HasAddress type representing any object exposing a Solana address through an address property — e.g. a TransactionSigner, an AccountMeta or a framework's address wrapper class. The fee payer of a transaction message is now typed using HasAddress (a structurally identical change).

  • [@solana/codecs-core] #2030 a5267b3 Thanks @lorisleiva! - Add tap codec helpers for observing values and bytes without modifying them. The value family (tapEncoder/tapDecoder/tapCodec) observes the input value before encoding and the decoded value after decoding, whilst the bytes family (tapEncoderBytes/tapDecoderBytes/tapCodecBytes) observes the raw bytes after encoding and before decoding. Any tap may throw to abort the operation, making these helpers ideal for adding validation guards to existing codecs without an identity transformEncoder. For example, tapDecoderBytes(getBooleanDecoder(), (bytes, offset) => { if (bytes[offset] > 1) throw new Error('Expected a 0 or a 1 for booleans'); }).

  • [@solana/codecs-data-structures] #2042 cd2776e Thanks @lorisleiva! - Add a requireSizePrefix option to the array, map and set codecs. By default, decoding an exhausted byte array yields an empty collection so that collections can be appended to existing data layouts; with requireSizePrefix: true, a missing size prefix throws instead.

  • [@solana/codecs-numbers] #2029 3206678 Thanks @lorisleiva! - Add u256 and i256 number codecs (getU256Codec/getU256Encoder/getU256Decoder and getI256Codec/getI256Encoder/getI256Decoder), extending the number codecs beyond 128-bit integers. Both support little- and big-endian serialization via the endian option and, as with the other large-integer codecs, always decode to a bigint.

  • [@solana/codecs-strings, @solana/errors] #2041 cae725c Thanks @lorisleiva! - Add fatal, ignoreBOM and removeNullCharacters options to the UTF-8 codec. With fatal, lone surrogates when encoding and malformed byte sequences when decoding throw a SolanaError instead of being replaced with U+FFFD. With ignoreBOM: true, a leading byte order mark is preserved instead of being stripped. With removeNullCharacters: false, null characters are preserved in decoded strings instead of being stripped as padding. On React Native, a leading byte order mark is now stripped by default, consistent with other platforms.

  • [@solana/errors, @solana/program-client-core] #2025 7a14614 Thanks @lorisleiva! - Widen the accepted inputs of instruction accounts in generated program clients. The new InstructionAccountInput type accepts an Address, any address-bearing object (HasAddress) — including framework wrapper classes — a ProgramDerivedAddress or an AccountNonSignerMeta used to override the role declared by the program's IDL. Similarly, the new InstructionSignerInput type accepts a TransactionSigner or an AccountSignerMeta role override. In addition, ResolvedInstructionAccount now carries an optional isSigner flag describing the IDL's signer requirement: when set to false, TransactionSigner values act as plain address carriers instead of being upgraded to signers, and when set to true, a missing signer throws a helpful error pointing at createNoopSigner. Finally, new ResolvedInstructionAccountMeta and InstructionAccountInputAddress type helpers mirror this runtime logic at the type level so that generated instruction builders can accurately type the account metas they return.

  • [@solana/instructions] #2025 7a14614 Thanks @lorisleiva! - Add a new AccountNonSignerMeta type representing an AccountMeta whose role is guaranteed not to be a signer role — i.e. ReadonlyAccount | WritableAccount. It is the counterpart of the AccountSignerMeta type from @solana/signers. Additionally, the role member of WritableAccount, ReadonlySignerAccount and WritableSignerAccount is now marked readonly, consistently with ReadonlyAccount and AccountMeta. Note that code mutating the role of these types will now fail to compile — which was already contrary to AccountMeta's contract and would throw at runtime on frozen account metas.

  • [@solana/rpc-api, @solana/rpc-transport-http] #2016 1dd83c6 Thanks @mcintyre94! - Added support for the getAgGenesisCert RPC method, which returns the Alpenglow genesis certificate from nodes that have one

  • [@solana/signers] #2031 8af3229 Thanks @lorisleiva! - Add createLazyKeyPairSignerFromBytes, a synchronous counterpart to createKeyPairSignerFromBytes. It derives the signer's address directly from the public key half of the 64-byte secret key and defers the asynchronous CryptoKey import until the first message or transaction is signed (memoising the result). This is useful when a signer must be created in a synchronous context whilst signing can remain asynchronous. Because the key import is deferred, the returned signer implements both MessagePartialSigner and TransactionPartialSigner but does not expose a keyPair property, and the cryptographic validation of the secret key happens on the first signing attempt rather than at creation time. The internal copy of the secret key is zeroed once the import succeeds, and a failed import is not cached so signing can be retried.

Patch Changes

  • [@solana/rpc-transport-http] #2016 1dd83c6 Thanks @mcintyre94! - Fixed a bug where responses to getTransactionsForAddress requests were parsed without bigint support, risking precision loss on large integer values

Don't miss a new kit release

NewReleases is sending notifications on new releases.