@solana/kit
8.5.0 · 13 Oct 2026MIT1.3M / weekRepositoryHomepagenpmAtom feed
Latest releases
All 40 releases- 8.x · latest line
8.5.0
13 Oct 2026[
@solana/addresses] #2115e59ed8bThanks @lorisleiva! - AllowgetAddressEncoder()andgetAddressCodec()to encode any address-bearing object (HasAddress) in addition to plainAddressvalues, so that signers and framework wrapper classes can be encoded directly without unwrapping them first. Decoders still return a plainAddress. As a result, the encoder input type of codecs composing an address codec (e.g. a struct with an address field) is now inferred asAddress | HasAddressinstead ofAddress.const addressEncoder = getAddressEncoder(); addressEncoder.encode(signer); // Same bytes as `addressEncoder.encode(signer.address)`.
[
@solana/codecs-data-structures,@solana/errors] #2089de1c63fThanks @latent-9! - Fix an infinite loop in thearray,set, andmapcodecs' sentinel and remainder decoding strategies: a zero-byte item codec (e.g.getStructCodec()) can never advance past a sentinel boundary or the end of the byte array, so decoding used to push elements until the process ran out of memory. Zero-byte fixed-size item codecs are now rejected on both the encoding and decoding sides when used with the sentinel or remainder strategies, throwing a new error instead:SOLANA_ERROR__CODECS__UNEXPECTED_ZERO_FIXED_SIZE_ITEM_FOR_ARRAY_LIKE_SIZE_STRATEGY. They remain allowed when the collection size is explicit.[
@solana/errors] #21110be380eThanks @mcintyre94! - Add theSOLANA_ERROR__WALLET__INVALID_MESSAGE_SIGNATUREandSOLANA_ERROR__WALLET__INVALID_SIGN_IN_OUTPUTerror codes, thrown when a wallet returns a message signature or a sign-in output that fails verification. Their context carries the signing account'saddressand thewalletName.Also add the
SOLANA_ERROR__WALLET__INVALID_NUMBER_OF_OUTPUTSerror code, thrown when a wallet feature returns a different number of outputs than the number of inputs it was given. Its context carries theexpectedandactualnumber of outputs, thefeatureNameand thewalletName.
@solana/kit
Minor Changes
[
@solana/addresses] #2115e59ed8bThanks @lorisleiva! - AllowgetAddressEncoder()andgetAddressCodec()to encode any address-bearing object (HasAddress) in addition to plainAddressvalues, so that signers and framework wrapper classes can be encoded directly without unwrapping them first. Decoders still return a plainAddress. As a result, the encoder input type of codecs composing an address codec (e.g. a struct with an address field) is now inferred asAddress | HasAddressinstead ofAddress.const addressEncoder = getAddressEncoder(); addressEncoder.encode(signer); // Same bytes as `addressEncoder.encode(signer.address)`.
[
@solana/codecs-data-structures,@solana/errors] #2089de1c63fThanks @latent-9! - Fix an infinite loop in thearray,set, andmapcodecs' sentinel and remainder decoding strategies: a zero-byte item codec (e.g.getStructCodec()) can never advance past a sentinel boundary or the end of the byte array, so decoding used to push elements until the process ran out of memory. Zero-byte fixed-size item codecs are now rejected on both the encoding and decoding sides when used with the sentinel or remainder strategies, throwing a new error instead:SOLANA_ERROR__CODECS__UNEXPECTED_ZERO_FIXED_SIZE_ITEM_FOR_ARRAY_LIKE_SIZE_STRATEGY. They remain allowed when the collection size is explicit.[
@solana/errors] #21110be380eThanks @mcintyre94! - Add theSOLANA_ERROR__WALLET__INVALID_MESSAGE_SIGNATUREandSOLANA_ERROR__WALLET__INVALID_SIGN_IN_OUTPUTerror codes, thrown when a wallet returns a message signature or a sign-in output that fails verification. Their context carries the signing account'saddressand thewalletName.Also add the
SOLANA_ERROR__WALLET__INVALID_NUMBER_OF_OUTPUTSerror code, thrown when a wallet feature returns a different number of outputs than the number of inputs it was given. Its context carries theexpectedandactualnumber of outputs, thefeatureNameand thewalletName.[
@solana/errors,@solana/keys,@solana/webcrypto-ed25519-polyfill] #2095cfe1d62Thanks @mcintyre94! -verifySignature()now verifies strictly, regardless of whether the underlying WebCrypto implementation does so itself (Node.js, for instance, does not). It returnsfalsewhen either the public key or theRcomponent of the signature is a point of small order. Previously, trivially forged signatures could verify against small-order public keys such as11111111111111111111111111111111.BREAKING CHANGES
verifySignature()throws unless given an extractable public key. Checking the public key requires reading its bytes, so a non-extractable public key now causes it to throw aSolanaErrorwith codeSOLANA_ERROR__KEYS__VERIFICATION_REQUIRES_EXTRACTABLE_PUBLIC_KEY. The same error is thrown for a key that is not a public key, which WebCrypto never accepted for verification anyway (it threw anInvalidAccessError). Every public key produced by Kit is extractable; if you import one yourself, setextractabletotrue.- const publicKey = await crypto.subtle.importKey('raw', bytes, 'Ed25519', false, ['verify']); + const publicKey = await crypto.subtle.importKey('raw', bytes, 'Ed25519', true, ['verify']); await verifySignature(publicKey, signature, data);getPublicKeyFromPrivateKey()always returns an extractable public key. Public keys are not secret, so this mirrors the behavior ofcrypto.subtle.generateKey(). Theextractableargument is deprecated and ignored.- const publicKey = await getPublicKeyFromPrivateKey(privateKey, true); + const publicKey = await getPublicKeyFromPrivateKey(privateKey);
The Ed25519 polyfill now also rejects public keys and signature
Rcomponents of small order, and opts out of@noble/ed25519's default ZIP-215 semantics.[
@solana/wallet-account-signer] #21129021e99Thanks @mcintyre94! -createMessageSignerFromWalletAccountnow verifies each signature returned by the wallet against the account's address and the message the wallet signed, andmodifyAndSignMessagesrejects withSOLANA_ERROR__WALLET__INVALID_MESSAGE_SIGNATUREif any of them is invalid. It also rejects withSOLANA_ERROR__WALLET__INVALID_NUMBER_OF_OUTPUTSif the wallet returns a different number of signed messages than it was asked to sign. The returned message content and signatures are copies of the wallet's output, so the wallet cannot change them after they are verified. Verifying signatures requires Ed25519 support in the WebCrypto API; in environments without it, install@solana/webcrypto-ed25519-polyfill.
Patch Changes
[
@solana/codecs-strings] #21177ea5132Thanks @Iamsohungrynow! -getBase16Encoderno longer drops the last digit of odd-length strings longer than one character:'abc'now encodes to[0xab, 0x0c]instead of[0xab, 0x00], andwriteadvances by the sizegetSizeFromValuereports.[
@solana/errors,@solana/sysvars,@solana/transaction-messages] #2110f47f025Thanks @mcintyre94! - Type-checkSolanaErrorcontexts in projects whose TypeScriptlibdoes not includeES2022.Error. TheSolanaErrorconstructor referenced the globalErrorOptionstype, which is unresolved without that lib, so withskipLibCheckenabled its context parameter silently becameanyand any context was accepted. Fixes the error contexts this was hiding:compileTransactionMessageanddecompileTransactionMessagenow report theunsupportedVersioninSOLANA_ERROR__TRANSACTION__VERSION_NUMBER_NOT_SUPPORTED, and theSlotHistorysysvar decoder now provides the expected context forSOLANA_ERROR__CODECS__INVALID_BYTE_LENGTHandSOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, so their messages no longer contain unfilled placeholders.[
@solana/fixed-points] #2102d7a1d10Thanks @lorisleiva! - Allow binary fixed-points whosefractionalBitsexceed theirtotalBits, e.g. an unsigned 8-bit value with 12 fractional bits representing values in[0, 1/16), consistently with decimal fixed-points whosedecimalsmay already exceed theirtotalBits. TheSOLANA_ERROR__FIXED_POINTS__FRACTIONAL_BITS_EXCEED_TOTAL_BITSerror is no longer thrown.[
@solana/plugin-interfaces] #210441896b7Thanks @lorisleiva! - FixClientWithTransactionPlanning,ClientWithTransactionSendingandClientWithTransactionSigningrejecting themaxInstructionsPerTransactionoption that transaction planners support per call. Their planning, sending and signing functions now accept it, making it possible to override the maximum number of instructions per transaction for a single request. Sending and signing functions only use it when their input needs to be planned first.await client.planTransactions(instructions, { maxInstructionsPerTransaction: 8 }); await client.sendTransactions(instructions, { maxInstructionsPerTransaction: 8 }); await client.signTransactions(instructions, { maxInstructionsPerTransaction: 8 });[
@solana/rpc-graphql,@solana/rpc-parsed-types] #2101abfded6Thanks @ara-stock! - Fix the parsedepochRewardssysvar type to match what Agave returns. ThejsonParsedinfo hasactive,distributedRewards,distributionStartingBlockHeight,numPartitions,parentBlockhash,totalPointsandtotalRewards, and the reward amounts and points are strings. The old type described adistributionCompleteBlockHeightfield that Agave does not return, and typed the amounts asbigint.[
@solana/sysvars] #2116534ea5eThanks @Iamsohungrynow! - TheSysvarSlotHashesandSysvarRecentBlockhashesencoders/decoders now use theu64length prefix that these sysvar accounts actually have, instead of au32one. Previously every decoded entry was shifted by four bytes, so the slots, hashes and fees came back wrong.
8.4.0
28 Sep 2026[
@solana/codecs-data-structures,@solana/errors] #20610e76741Thanks @lorisleiva! - Add a sentinel size strategy to thearray,set, andmapcodecs. Passing a{ __kind: 'sentinel', sentinel, strategy? }object as thesizeoption ends the collection when the bytes at the next item position match the givensentinel, compared at item boundaries only. The optionalstrategy('required'by default, or'optional'/'omitted') controls whether the sentinel is written when encoding and required when decoding. This provides codec support for Codama'ssentinelCountNode.Two new errors accompany this:
SOLANA_ERROR__CODECS__SENTINEL_MISSING_AT_END_OF_BYTES(thrown under the'required'strategy when the byte array ends without the sentinel) andSOLANA_ERROR__CODECS__SENTINEL_MUST_NOT_BE_EMPTY(thrown when constructing a codec with an empty sentinel).[
@solana/errors,@solana/instruction-plans] #20735be269cThanks @lorisleiva! - Add helpers for writing custom message packers.resolveMaxInstructionsPerTransaction,assertMaxInstructionsPerTransactionandassertMessageCanAccommodateSizeenforce the instruction-count and size limits the built-in packers rely on, and a newSOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_REJECTED_BY_PACKERerror lets a packer refuse a transaction message for any other reason by providing areason. The transaction planner treats this error like the existing capacity errors and opens a new transaction message. UseisMessagePackerErrorThatRequiresNewCandidateto identify every error that calls for a new transaction message.[
@solana/codecs-numbers] #206756b4960Thanks @latent-9! - FixedgetShortU16Decoder()silently accepting malformed input: a truncated buffer decoded to garbage with an offset past the end of the byte array, and continuation chains longer than the documented three-byte encoding decoded to values outside the u16 domain. Malformed input now throwsSOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, and decoded values above 65,535 now throwSOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, matching the guards every other number decoder already uses.
@solana/kit
Minor Changes
[
@solana/codecs-data-structures,@solana/errors] #20610e76741Thanks @lorisleiva! - Add a sentinel size strategy to thearray,set, andmapcodecs. Passing a{ __kind: 'sentinel', sentinel, strategy? }object as thesizeoption ends the collection when the bytes at the next item position match the givensentinel, compared at item boundaries only. The optionalstrategy('required'by default, or'optional'/'omitted') controls whether the sentinel is written when encoding and required when decoding. This provides codec support for Codama'ssentinelCountNode.Two new errors accompany this:
SOLANA_ERROR__CODECS__SENTINEL_MISSING_AT_END_OF_BYTES(thrown under the'required'strategy when the byte array ends without the sentinel) andSOLANA_ERROR__CODECS__SENTINEL_MUST_NOT_BE_EMPTY(thrown when constructing a codec with an empty sentinel).[
@solana/errors,@solana/instruction-plans] #20735be269cThanks @lorisleiva! - Add helpers for writing custom message packers.resolveMaxInstructionsPerTransaction,assertMaxInstructionsPerTransactionandassertMessageCanAccommodateSizeenforce the instruction-count and size limits the built-in packers rely on, and a newSOLANA_ERROR__INSTRUCTION_PLANS__MESSAGE_REJECTED_BY_PACKERerror lets a packer refuse a transaction message for any other reason by providing areason. The transaction planner treats this error like the existing capacity errors and opens a new transaction message. UseisMessagePackerErrorThatRequiresNewCandidateto identify every error that calls for a new transaction message.
Patch Changes
[
@solana/codecs-numbers] #206756b4960Thanks @latent-9! - FixedgetShortU16Decoder()silently accepting malformed input: a truncated buffer decoded to garbage with an offset past the end of the byte array, and continuation chains longer than the documented three-byte encoding decoded to values outside the u16 domain. Malformed input now throwsSOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, and decoded values above 65,535 now throwSOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, matching the guards every other number decoder already uses.[
@solana/instruction-plans] #207175653e9Thanks @lorisleiva! - FixgetReallocMessagePackerInstructionPlanproducing a 0-byte instruction whentotalSizeis an exact multiple of the realloc limit (10,240 bytes), which left the account one chunk short of the requested size.
8.3.0
9 Sep 2026[
@solana/addresses,@solana/transaction-messages] #20257a14614Thanks @lorisleiva! - Add a newHasAddresstype representing any object exposing a Solana address through anaddressproperty — e.g. aTransactionSigner, anAccountMetaor a framework's address wrapper class. The fee payer of a transaction message is now typed usingHasAddress(a structurally identical change).[
@solana/codecs-core] #2030a5267b3Thanks @lorisleiva! - Addtapcodec 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 identitytransformEncoder. 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] #2042cd2776eThanks @lorisleiva! - Add arequireSizePrefixoption 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; withrequireSizePrefix: true, a missing size prefix throws instead.
@solana/kit
Minor Changes
[
@solana/addresses,@solana/transaction-messages] #20257a14614Thanks @lorisleiva! - Add a newHasAddresstype representing any object exposing a Solana address through anaddressproperty — e.g. aTransactionSigner, anAccountMetaor a framework's address wrapper class. The fee payer of a transaction message is now typed usingHasAddress(a structurally identical change).[
@solana/codecs-core] #2030a5267b3Thanks @lorisleiva! - Addtapcodec 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 identitytransformEncoder. 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] #2042cd2776eThanks @lorisleiva! - Add arequireSizePrefixoption 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; withrequireSizePrefix: true, a missing size prefix throws instead.[
@solana/codecs-numbers] #20293206678Thanks @lorisleiva! - Addu256andi256number codecs (getU256Codec/getU256Encoder/getU256DecoderandgetI256Codec/getI256Encoder/getI256Decoder), extending the number codecs beyond 128-bit integers. Both support little- and big-endian serialization via theendianoption and, as with the other large-integer codecs, always decode to abigint.[
@solana/codecs-strings,@solana/errors] #2041cae725cThanks @lorisleiva! - Addfatal,ignoreBOMandremoveNullCharactersoptions to the UTF-8 codec. Withfatal, lone surrogates when encoding and malformed byte sequences when decoding throw aSolanaErrorinstead of being replaced withU+FFFD. WithignoreBOM: true, a leading byte order mark is preserved instead of being stripped. WithremoveNullCharacters: 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] #20257a14614Thanks @lorisleiva! - Widen the accepted inputs of instruction accounts in generated program clients. The newInstructionAccountInputtype accepts anAddress, any address-bearing object (HasAddress) — including framework wrapper classes — aProgramDerivedAddressor anAccountNonSignerMetaused to override the role declared by the program's IDL. Similarly, the newInstructionSignerInputtype accepts aTransactionSigneror anAccountSignerMetarole override. In addition,ResolvedInstructionAccountnow carries an optionalisSignerflag describing the IDL's signer requirement: when set tofalse,TransactionSignervalues act as plain address carriers instead of being upgraded to signers, and when set totrue, a missing signer throws a helpful error pointing atcreateNoopSigner. Finally, newResolvedInstructionAccountMetaandInstructionAccountInputAddresstype helpers mirror this runtime logic at the type level so that generated instruction builders can accurately type the account metas they return.[
@solana/instructions] #20257a14614Thanks @lorisleiva! - Add a newAccountNonSignerMetatype representing anAccountMetawhose role is guaranteed not to be a signer role — i.e.ReadonlyAccount | WritableAccount. It is the counterpart of theAccountSignerMetatype from@solana/signers. Additionally, therolemember ofWritableAccount,ReadonlySignerAccountandWritableSignerAccountis now markedreadonly, consistently withReadonlyAccountandAccountMeta. Note that code mutating theroleof these types will now fail to compile — which was already contrary toAccountMeta's contract and would throw at runtime on frozen account metas.[
@solana/rpc-api,@solana/rpc-transport-http] #20161dd83c6Thanks @mcintyre94! - Added support for thegetAgGenesisCertRPC method, which returns the Alpenglow genesis certificate from nodes that have one[
@solana/signers] #20318af3229Thanks @lorisleiva! - AddcreateLazyKeyPairSignerFromBytes, a synchronous counterpart tocreateKeyPairSignerFromBytes. It derives the signer's address directly from the public key half of the 64-byte secret key and defers the asynchronousCryptoKeyimport 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 bothMessagePartialSignerandTransactionPartialSignerbut does not expose akeyPairproperty, 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] #20161dd83c6Thanks @mcintyre94! - Fixed a bug where responses togetTransactionsForAddressrequests were parsed withoutbigintsupport, risking precision loss on large integer values
8.2.0
29 Aug 2026- breaking
[
@solana/instruction-plans] #201326edd3bThanks @mcintyre94! - AligncreateTransactionPlanExecutorWithConcurrentLeaveswithcreateTransactionPlanExecutorby giving both the sameTransactionPlanExecutorConfig. ItsexecuteTransactionMessagecallback now receives a mutable per-leafcontextobject and returns the context of a successful result, instead of building a wholeSingleTransactionPlanResultitself. The executor builds the results: on success it merges the returned context over the stored one, and when the callback throws — or the abort signal fires before it settles — it preserves the stored context on the failed result, matching the partial-context behaviour ofcreateTransactionPlanExecutor. TheConcurrentLeafTransactionPlanExecutorConfigtype is removed. This is a breaking change to thecreateTransactionPlanExecutorWithConcurrentLeavesAPI introduced in 8.1.0. [
@solana/signers] #2006d385ce3Thanks @amilz! - Relaxed the parameter type of the signer type guards (isMessagePartialSigner,isTransactionSigner,isKeyPairSigner, their siblings, and theassertIs*variants) so that class instances implementing a signer interface can be passed without casts. The guards now accept anyTValue extends { address: Address }and narrow toTValue & Signer, whereas the previous parameter type required an implicit index signature, which TypeScript never grants to class instances.
8.1.0
27 Aug 2026[
@solana/errors,@solana/transaction-messages] #19727d56e29Thanks @skyyycodes! - Validate compute unit limit and heap size when they are set on a transaction messagesetTransactionMessageComputeUnitLimit,setTransactionMessageHeapSizeandsetTransactionMessageConfignow reject values the runtime will not honor as written, throwingSOLANA_ERROR__TRANSACTION__COMPUTE_UNIT_LIMIT_OUT_OF_RANGEorSOLANA_ERROR__TRANSACTION__INVALID_HEAP_SIZEat the point the value is set. An invalid heap size fails the transaction on-chain; a compute unit limit above the maximum is instead clamped down by the runtime, so the transaction quietly runs with a budget other than the one requested. A compute unit limit must be an integer in the range [0, 1,400,000]; a heap size must be an integer multiple of 1 KiB between 32 KiB and 256 KiB inclusive.Decoding is unaffected:
decompileTransactionMessagestill returns messages carrying out-of-range values so that callers can inspect any transaction that reaches them.[
@solana/instruction-plans] #199595a2788Thanks @mcintyre94! - AddcreateTransactionPlanExecutorWithConcurrentLeavesto concurrently transform every transaction plan leaf while preserving the plan's result shape.[
@solana/codecs-core] #1970be30e32Thanks @koriyoshi2041! - FixtoArrayBufferslicing SharedArrayBuffer-backed views from a non-zero byte offset.
@solana/kit
Minor Changes
[
@solana/errors,@solana/transaction-messages] #19727d56e29Thanks @skyyycodes! - Validate compute unit limit and heap size when they are set on a transaction messagesetTransactionMessageComputeUnitLimit,setTransactionMessageHeapSizeandsetTransactionMessageConfignow reject values the runtime will not honor as written, throwingSOLANA_ERROR__TRANSACTION__COMPUTE_UNIT_LIMIT_OUT_OF_RANGEorSOLANA_ERROR__TRANSACTION__INVALID_HEAP_SIZEat the point the value is set. An invalid heap size fails the transaction on-chain; a compute unit limit above the maximum is instead clamped down by the runtime, so the transaction quietly runs with a budget other than the one requested. A compute unit limit must be an integer in the range [0, 1,400,000]; a heap size must be an integer multiple of 1 KiB between 32 KiB and 256 KiB inclusive.Decoding is unaffected:
decompileTransactionMessagestill returns messages carrying out-of-range values so that callers can inspect any transaction that reaches them.[
@solana/instruction-plans] #199595a2788Thanks @mcintyre94! - AddcreateTransactionPlanExecutorWithConcurrentLeavesto concurrently transform every transaction plan leaf while preserving the plan's result shape.
Patch Changes
[
@solana/codecs-core] #1970be30e32Thanks @koriyoshi2041! - FixtoArrayBufferslicing SharedArrayBuffer-backed views from a non-zero byte offset.[
@solana/codecs-data-structures] #1971c51b9f6Thanks @shin4141! - Preserve the literalfixedSizetype for single-field fixed-size struct codecs.[
@solana/codecs-strings] #19796852054Thanks @amilz! - FixedgetBase64Decoder()throwingRangeError: Maximum call stack size exceededin browser builds when decoding byte arrays larger than roughly 65KB. The bytes are now converted to a binary string in chunks rather than spread into a singleString.fromCharCodecall.[
@solana/rpc,@solana/transaction-confirmation] #1994490ac9eThanks @matusbalascak! - Fix transaction confirmation and coalesced RPC request cancellation in environments where abort events have a null target.
Dependency tracking · free for 3 projects
Know when your own dependencies move
@solana/kit shipped 3 new majors in the last 12 months, among 28 releases. Inlinr shows which of your projects are behind, and what the upgrade breaks.
Advisories reach you
An email when a critical or high advisory affects a project, before the next install.
Upgrades checked first
Peer ranges, Node, ESM-only and types changes read before you bump.
Only what matters
Majors and breaking notes stay; patches and sibling bumps fold into one line.
Registry facts last checked 27 Oct 2026. Releases and advisories last read 27 Oct 2026.