solana_kit_memo 0.5.0
solana_kit_memo: ^0.5.0 copied to clipboard
Memo program client for the Solana Kit Dart SDK.
Changelog #
All notable changes to this project will be documented in this file.
This changelog is managed by monochange.
solana_kit_memo 0.1.0 (2026-06-01) #
๐ฅ Breaking Change #
Add Memo program package
Added solana_kit_memo with generated AddMemo codecs, current and legacy program addresses, ergonomic memo instruction helper, documentation, and tests.
import 'package:solana_kit_memo/solana_kit_memo.dart';
final instruction = getAddMemoInstruction(memo: 'Hello Solana!');
Owner: Ifiok Jr. ยท Introduced in: 02374ef ยท Last updated in: 2a9ae80
Raise minimum Dart SDK to 3.12
Raise the minimum supported Dart SDK constraint to ^3.12.0 across public Dart packages.
This is a breaking change because consumers must use Dart 3.12 or newer. Flutter consumers must use a Flutter SDK that bundles Dart 3.12 or newer.
environment:
sdk: ^3.12.0
Owner: Ifiok Jr. ยท Introduced in: 32d5d36
๐ Fixed #
Add well-known program, sysvar, SPL, Metaplex, and token mint address constants
Add centralized address constants to solana_kit_addresses so that any package can reference well-known on-chain addresses without importing the full domain package or hardcoding strings.
New exports:
program_addresses.dartโ All Agave/Solana native program addresses (system, ALT, BPF loaders, compute budget, config, stake, vote, etc.)sysvar_addresses.dartโ All sysvar addresses (clock, rent, recentBlockhashes, fees, rewards, etc.) plus the sysvar owner addressspl_addresses.dartโ SPL program addresses (Token, Token-2022, ATA, Memo, Memo Legacy)metaplex_addresses.dartโ Metaplex program addresses (Token Metadata, Bubblegum, Auth Rules, Core, SPL Account Compression, Noop)well_known_addresses.dartโ Well-known token mint addresses (Wrapped SOL, USDC, USDT)
Also re-exports from solana_kit_address (Address type, codecs, comparator, PublicKey) and solana_kit_address_constants (well-known address constants).
Owner: Ifiok Jr. ยท Introduced in: 3f596ef ยท Last updated in: 4643648
solana_kit_memo 0.1.1 (2026-06-03) #
๐ Fixed #
Update upstream program references
Update generated Solana program packages to the latest checked upstream refs:
solana_kit_system: solana-program/system js@v0.12.2
solana_kit_stake: solana-program/stake js@v0.6.1
solana_kit_memo: solana-program/memo js@v0.11.1
solana_kit_system adds the CreateAccountAllowPrefund instruction helpers. solana_kit_stake includes the authority seed u64 size-prefix fix and updated stake delegation layout.
Owner: @ifiokjr ยท Review: PR #182
solana_kit_memo 0.1.2 (2026-08-12) #
๐ Fixed #
Bump program reference pins to latest upstream tags
Updates config/reference-repos.json and docs to track the latest upstream tags for program packages whose IDLs are unchanged or tooling-only:
- Token:
js@v0.13.0โjs@v0.14.0 - Address Lookup Table:
js@v0.11.0โjs@v0.12.1 - Memo:
js@v0.11.1โjs@v0.11.2 - Compute Budget:
js@v0.15.0โjs@v0.16.0 - Stake:
js@v0.6.1โjs@v0.7.2 - Loader v3:
js@v0.3.0โjs@v0.4.0
No generated Dart API changes for these packages โ IDL comparison confirmed semantic equivalence. Updates are reference pin and documentation only.
Owner: @ifiokjr ยท Review: PR #195
๐ Documentation #
Centralize package version documentation
Centralize package version metadata in versions.json and render package installation snippets from the shared MDT data source. Published package behavior is unchanged.
Owner: @ifiokjr ยท Review: PR #188
Point package README website badges at package docs
Updated package README website badges to link directly to each package's docs catalog entry and added missing package entries to the documentation website catalog/index.
Owner: @ifiokjr ยท Review: PR #192
solana_kit_memo 0.3.0 (2026-08-18) #
๐ฅ Breaking Change #
Regenerated program packages from upstream v7 IDLs
Regenerated all 8 generated program packages from their latest upstream Codama IDLs:
- solana_kit_system: js@v0.12.2 โ v0.13.0
- solana_kit_token: js@v0.14.0 โ v0.15.0
- solana_kit_token_2022: js@v0.12.0 โ v0.14.1
- solana_kit_address_lookup_table: js@v0.12.1 โ v0.13.0
- solana_kit_memo: js@v0.11.2 โ v0.12.0
- solana_kit_compute_budget: js@v0.16.0 โ v0.17.0
- solana_kit_stake: js@v0.7.2 โ v0.8.0; applied the upstream Stake Codama preprocessing before rendering so generated defined-type imports resolve to Dart files
- solana_kit_loader: loader-v3 js@v0.4.0 โ v0.5.0; migrated planning helpers to the generated v0.5 API and retained the handwritten Loader v3 account codecs and Loader v4 client surface
Generated using node scripts/generate_program_packages.mjs โ a new generator script that runs the Codama renderer against upstream IDLs.
// Generated clients now match newer upstream IDLs, e.g. the system program:
final instruction = getCreateAccountInstruction(
payer: payer.address,
newAccount: newAccount.address,
lamports: lamports,
space: space,
owner: owner,
);
Owner: @ifiokjr ยท Review: PR #204
solana_kit_memo 0.3.1 (2026-08-19) #
๐งช Testing #
Preserve UTF-8 data exactly during decoding
UTF-8 codecs now preserve embedded null characters and reject malformed byte sequences. Lossy compatibility modes and null-character rejection modes have been removed; callers can opt into null removal explicitly with removeNullCharacters after decoding.
final value = getUtf8Codec().decode(bytes);
final withoutPadding = removeNullCharacters(value);
Owner: @ifiokjr ยท Review: PR #218
solana_kit_memo 0.4.0 (2026-08-30) #
๐ Fixed #
Refresh upstream reference pins for solana-program/* and mpl-bubblegum
- Tracks the latest upstream references in
config/reference-repos.json:solana-program/systemjs@v0.14.0(wasjs@v0.13.0),solana-program/tokenjs@v0.16.0(wasjs@v0.15.0),solana-program/token-2022js@v0.16.0(wasjs@v0.14.1),solana-program/address-lookup-tablejs@v0.14.0(wasjs@v0.13.0),solana-program/memojs@v0.13.0(wasjs@v0.12.0),solana-program/compute-budgetjs@v0.18.0(wasjs@v0.17.0),solana-program/stakejs@v0.9.0(wasjs@v0.8.0),solana-program/loader-v3js@v0.6.0(wasjs@v0.5.0),solana-program/loader-v4commit4f62fb2e(was commit1d6335be), andmpl-bubblegumcommit6a6a77e3(was commit68e4bc20). - All of the
jsreleases are@solana/kit^7 โ ^8 dependency bumps with no instructions, accounts, types, or wire-format changes; the IDL additions are Codama display metadata, which the Dart renderer does not render. Regenerating every affected client from the old and new pins produced byte-identical Dart output, so the generated clients are unchanged. Thempl-bubblegumnew commit only re-exports the JSmintV2helpers and theloader-v4new commit only bumps its JS client to@solana/kitv8; both IDLs are unchanged. Thetoken-2022pin supersedes the stale PR #222 (js@v0.15.0). solana-program/stakerestructured its IDL to the Codama v1.8.0 format (program metadata block,lockupParamsargument links renamed fromlockupArgs, IDL program node renamed fromsolanaStakeInterfacetostake).scripts/generate_program_packages.mjsnow maps both argument link names and keeps thesolanaStakeInterfacerenderer-facing program name, so the generated APIs (flattenedsetLockup/setLockupChecked/authorizeWithSeedargument fields,SolanaStakeInterfaceidentifiers) stay stable. No generated Dart code changed.- Package READMEs now cite the refreshed upstream versions they mirror.
Owner: @ifiokjr ยท Review: PR #226 ยท Related issues: #222, #225
๐ Documentation #
Unslop package docs and code comments
Rewrote every package README from a reader's perspective with verified, compilable examples, removed AI-tell phrasing from docs and code comments, and added a test that analyzes every Dart block in Markdown so examples cannot drift from the API.
Owner: @ifiokjr ยท Review: PR #223
solana_kit_memo 0.4.1 (2026-08-30) #
Changed #
- No package-specific changes were recorded;
solana_kit_memowas updated to 0.4.1.
solana_kit_memo 0.4.2 (2026-09-06) #
Changed #
- No package-specific changes were recorded;
solana_kit_memowas updated to 0.4.2.
solana_kit_memo 0.4.3 (2026-09-12) #
Fixes #
- Document program errors and the generated program-client contract. Add library doc comments synchronized from shared MDT sections to thirteen packages: program error matching (
isProgramError+TransactionMessageInput) and the generated program-client API shape are now documented inline in each library and in the errors docs page; six barrels that had no library doc comment gain one; three one-line library headers are expanded. No code changes. Owner: @ifiokjr ยท Review: PR #248
solana_kit_memo 0.5.0 (2026-09-21) #
Breaking changes #
Raise the Dart and Flutter baseline
The workspace now builds against Dart 3.13.3 and Flutter 3.47.4, and every package declares that floor instead of the previous Dart 3.12 range. Consumers on older SDKs can no longer resolve these packages, so this release is breaking even though no Dart API changed.
The Flutter floor rises from 3.44 to 3.47 for solana_kit_mobile_wallet_adapter, solana_kit_mobile_wallet_adapter_protocol, and solana_kit_wallet_adapter, matching the floor solana_kit_wallet_ui already required. solana_kit_lints ships the raised floor to consumers, so it carries the same breaking bump. Every other package raises only the Dart SDK floor.
Raising the language version also switches dart format to the tall style, so 83 files across library, test, script, and Codama-generated trees are reflowed. The renderer pipes generated output through dart format, so regenerating stays consistent.
Align your own SDK constraint with the workspace:
environment:
sdk: ^3.13.0
# Omit for pure Dart packages; required for the Flutter packages above.
flutter: ">=3.47.0"
Owner: Ifiok Jr. ยท Introduced in: 5f5fe01 ยท Last updated in: 19932db
Features #
Track the memo v4 program and add memo extraction helpers
The workspace now tracks solana-program/memo at js@v0.14.1 (previously js@v0.13.1). The mpl-token-metadata reference pin also moves to 353d01be4af3; its IDL is byte-identical, so that package is unaffected.
solana_kit_address_constants moves memoProgramAddress to the v4 memo program (Memo4c2pN8afCj432Lb7RMVKi9PbQnnW7ewFFaV3oAH), matching the upstream IDL publicKey as of js@v0.14.0. The previous v3 address stays available as the new memoLegacyProgramAddressV3 constant, and memoLegacyProgramAddress (v1) is unchanged. Code that builds new memo instructions picks up the v4 program automatically; code that must keep targeting v3 names the legacy constant explicitly.
solana_kit_memo ports the upstream extraction helpers from js@v0.14.1:
getMemosFromInstructionsscans a list of instructions, matches every deployed Memo program address, and returns the UTF-8 decoded memo text with the raw bytes, source program address, and instruction index.ExtractedMemocarries one extracted memo.supportedMemoProgramAddresseslists every deployed Memo program address ordered from oldest (v1) to newest (v4).
The generated layer is regenerated against js@v0.14.1 with the current renderer: the program page is byte-identical because the program address flows through the well-known constants, and the AddMemo data decoder now validates byte length strictly, throwing SolanaError with codecsInvalidByteLength on trailing bytes. solana_kit_errors moves from a dev dependency to a dependency because the generated decoder references it.
codama-renderers-dart maps the v4 address to memoProgramAddress and the v3 address to memoLegacyProgramAddressV3 in its well-known address registry, so regenerated clients re-export the canonical constants instead of hardcoding address strings.
Build new memo instructions against memoProgramAddress (v4). Where a memo must be executed by a program the runtime provides, check what is deployed: SurfPool, used by this repository's on-chain integration tests, ships the v1 and v3 programs as executable bytecode but resolves v4 to a placeholder, so those tests invoke memoLegacyProgramAddressV3. All three programs share the same instruction format, so only the program the transaction targets differs.
Owner: Ifiok Jr. ยท Introduced in: 9dcb59a
Fixes #
Align error code numbers with upstream and report malformed UTF-8 as a code
SolanaErrorCode numbers now match upstream @solana/kit exactly. Two port-only codes were occupying numbers upstream uses for its UTF-8 codes, which made any cross-SDK comparison of those numbers wrong.
The UTF-8 codec also stops raising a bare FormatException and reports through the error codes upstream defines:
codecsInvalidUtf8Bytes(8078026) for a malformed byte sequence, carrying theoffsetwhere decoding failed.codecsInvalidUtf8String(8078027) for a lone surrogate, carrying itsindex. This is thrown when encoding withfatal: trueand, withfatal: false, both directions keep replacing the offending unit withU+FFFD.
Two port-only codes moved or went away:
codecsInvalidBooleanmoved from8078027to8078999. The number had to change because8078027is upstream'sCODECS__INVALID_UTF8_STRING. This port validates that booleans are encoded as0or1and upstream does not, so the code has no upstream counterpart and now sits at the end of the codec block, where upstream cannot collide with it. If you match onSolanaErrorCode.codecsInvalidBoolean.value, update the number; matching on the enum member is unaffected.codecsStringContainsNullCharacterswas removed. Nothing in the workspace threw it, and upstream has no equivalent. UseUtf8CodecConfig.removeNullCharactersto control null handling instead.
try {
getUtf8Decoder().decode(bytes);
} on SolanaError catch (error) {
if (error.code == SolanaErrorCode.codecsInvalidUtf8Bytes) {
print('bad bytes at ${error.context['offset']}');
}
}
solana_kit_memo, solana_kit_offchain_messages, and solana_kit_attestation_service only had tests asserting the old FormatException for malformed UTF-8; those assertions now check the error code, and solana_kit_memo declares the solana_kit_errors dev dependency that needs.
upstream:error-codes, which also runs as part of docs:check, compares this enum against .repos/kit/packages/errors/src/codes.ts and fails on a number mismatch or an occupied number, so this cannot drift again without CI saying so.
Owner: Ifiok Jr. ยท Introduced in: a8f643f
0.0.0 #
Placeholder publication.