Skip to content

Releases: solana-foundation/solana-web3.js

The New web3.js – Technology Preview 4

02 Jul 21:17
798651e
Compare
Choose a tag to compare

tp4 (2024-07-02)

This version of the @solana/web3.js Technology Preview fixes a bug with the default RPC transport, adds a utility that you can use to get an estimate of a transaction message's compute unit cost, and introduces @solana/react hooks for interacting with Wallet Standard wallets.

To install the fourth Technology Preview:

npm install --save @solana/web3.js@tp4

For an example of how to use the new @solana/react package to interact with wallets in a React application, see the example application in examples/react-app. We hope to see similar wallet-connection packages patterned off @solana/react for other application frameworks soon.

Try a demo of Technology Preview 4 in your browser at CodeSandbox.

Changelog since Technology Preview 3

  • #2858 22a34aa Thanks @steveluscher! - Transaction signers' methods now take minContextSlot as an option. This is important for signers that simulate transactions, like wallets. They might be interested in knowing the slot at which the transaction was prepared, lest they run simulation at too early a slot.

  • #2852 cec9048 Thanks @lorisleiva! - The signAndSendTransactionMessageWithSigners function now automatically asserts that the provided transaction message contains a single sending signer and fails otherwise.

  • #2707 cb49bfa Thanks @mcintyre94! - Allow creating keypairs and keys from ReadonlyUint8Array

  • #2715 26dae19 Thanks @lorisleiva! - Consolidated getNullableCodec and getOptionCodec with their Zeroable counterparts and added more configurations

    Namely, the prefix option can now be set to null and the fixed option was replaced with the noneValue option which can be set to "zeroes" for Zeroable codecs or a custom byte array for custom representations of none values. This means the getZeroableNullableCodec and getZeroableOptionCodec functions were removed in favor of the new options.

    // Before.
    getZeroableNullableCodec(getU16Codec());
    
    // After.
    getNullableCodec(getU16Codec(), { noneValue: 'zeroes', prefix: null });

    Additionally, it is now possible to create nullable codecs that have no prefix nor noneValue. In this case, the existence of the nullable item is indicated by the presence of any remaining bytes left to decode.

    const codec = getNullableCodec(getU16Codec(), { prefix: null });
    codec.encode(42); // 0x2a00
    codec.encode(null); // Encodes nothing.
    codec.decode(new Uint8Array([42, 0])); // 42
    codec.decode(new Uint8Array([])); // null

    Also note that it is now possible for custom noneValue byte arrays to be of any length — previously, it had to match the fixed-size of the nullable item.

    Here is a recap of all supported scenarios, using a u16 codec as an example:

    encode(42) / encode(null) No noneValue (default) noneValue: "zeroes" Custom noneValue (0xff)
    u8 prefix (default) 0x012a00 / 0x00 0x012a00 / 0x000000 0x012a00 / 0x00ff
    Custom prefix (u16) 0x01002a00 / 0x0000 0x01002a00 / 0x00000000 0x01002a00 / 0x0000ff
    No prefix 0x2a00 / 0x 0x2a00 / 0x0000 0x2a00 / 0xff

    Reciprocal changes were made with getOptionCodec.

  • #2785 4f19842 Thanks @steveluscher! - The development mode error message printer no longer fatals on Safari < 16.4.

  • #2867 be36bab Thanks @steveluscher! - The innerInstructions property of JSON-RPC errors used snake case rather than camelCase for stackHeight and programId. This has been corrected.

  • #2728 f1e9ac2 Thanks @joncinque! - Simulate with the maximum quantity of compute units (1.4M) instead of u32::MAX

  • #2703 0908628 Thanks @steveluscher! - Created a utility function to estimate the compute unit consumption of a transaction message

  • #2795 ce876d9 Thanks @steveluscher! - Added React hooks to which you can pass a Wallet Standard UiWalletAccount and obtain a MessageModifyingSigner, TransactionModifyingSigner, or TransactionSendingSigner for use in constructing, signing, and sending Solana transactions and messages

  • #2772 8fe4551 Thanks @steveluscher! - Added a series of React hooks to which you can pass a Wallet Standard UiWalletAccount to extract its signMessage, signTransaction, and signAndSendTransaction features

  • #2819 7ee47ae Thanks @steveluscher! - Fixed a bug where coalesced RPC calls could end up aborted even though there were still interested consumers. This would happen if the consumer count fell to zero, then rose above zero again, in the same runloop.

  • #2868 91fb1f3 Thanks @steveluscher! - The simulateTransaction RPC method now accepts an innerInstructions param. When true, the simulation result will include an array of inner instructions, if any.

  • #2866 73bd5a9 Thanks @steveluscher! - The TransactionInstruction RPC type now has stackHeight

  • #2751 6340744 Thanks @mcintyre94! - Allow Rpc Request params to be any type, instead of requiring an array

v1.94.0

29 Jun 04:51
0936673
Compare
Choose a tag to compare

1.94.0 (2024-06-29)

Features

  • simulated_transaction: Add Inner Instructions (#2756) (0936673)

v1.93.4

28 Jun 00:26
1df9acb
Compare
Choose a tag to compare

1.93.4 (2024-06-28)

Bug Fixes

  • add deprecation notice for getConfirmedSignatureForAddress2 and update other deprecation notices' validator versions (#2871) (1df9acb), closes #2859
  • deprecate the getStakeActivation RPC method (#2864) (8bd58de)

v1.93.3

27 Jun 14:35
f9b0d6d
Compare
Choose a tag to compare

1.93.3 (2024-06-27)

Bug Fixes

  • onProgramAccountChange() and onAccountChange() now accept an encoding (#2861) (f9b0d6d), closes #2725

v1.93.2

25 Jun 16:42
17b0b99
Compare
Choose a tag to compare

1.93.2 (2024-06-25)

Bug Fixes

v1.93.1

22 Jun 00:34
Compare
Choose a tag to compare

1.93.1 (2024-06-22)

Bug Fixes

  • empty commit to force release of legacy web3.js with new rpc-websockets dependency (91732c8)

v1.93.0

12 Jun 22:09
Compare
Choose a tag to compare

1.93.0 (2024-06-12)

Features

v1.92.3

06 Jun 17:23
abbdc5b
Compare
Choose a tag to compare

1.92.3 (2024-06-06)

Bug Fixes

  • Rewrite the message printer as a parser to avoid problems with regexes in old browsers (#2785) (4f19842)

v1.92.2

05 Jun 17:36
327dc9d
Compare
Choose a tag to compare

1.92.2 (2024-06-05)

Bug Fixes

  • Add getter for logs to sendTransactionError (#2771) (327dc9d)

v1.92.1

04 Jun 16:01
Compare
Choose a tag to compare

1.92.1 (2024-06-04)

Bug Fixes