
Security News
ECMAScript 2025 Finalized with Iterator Helpers, Set Methods, RegExp.escape, and More
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
@latticexyz/cli
Advanced tools
docs coming soon
Version 2.2.22
Release date: Thu Jun 26 2025
chore(explorer): remove rhodolite support (#3704) (@latticexyz/explorer)
Removed Rhodolite chain support.
feat(store-sync): add support for upper bound in fetchRecords (#3744) (@latticexyz/store-sync)
The fetchRecords
util now supports specifying an upper bound for the block height of SQL queries.
feat(explorer): resolve ENS (#3731) (@latticexyz/explorer)
Address input fields in the "Interact" tab now accept ENS names, which are automatically resolved to their underlying address.
fix(explorer): editable cells keep focus (#3664) (@latticexyz/explorer)
Editable table cells no longer lose focus during editing when the query is set to "live".
fix(store-sync): backoff on failed connection, close websockets (#3752) (@latticexyz/store-sync)
The preconfirmed logs stream now waits before reconnecting if a previous connection attempt failed.
feat(world,entrykit): add sendUserOperationFrom
(#3675) (@latticexyz/world)
Added a sendUserOperationFrom
Viem action decorator to automatically route user operation calls through callFrom
.
feat(explorer): decode function calls (#3710) (@latticexyz/explorer)
The Worlds Explorer explorer now supports decoding function data.
fix(explorer): array args encoding (#3748) (@latticexyz/explorer)
Array function arguments are now correctly encoded on the "Interact" page.
fix(entrykit): refetch prerequisites after balance top-up (#3694) (@latticexyz/entrykit)
Onboarding prerequisites are now re-fetched when the quarry gas balance is updated.
fix(store-sync): ignore store logs with invalid keys (#3720) (@latticexyz/store-sync)
The sync stack now skips store logs with invalid key tuples instead of throwing errors.
MUD doesn’t validate schemas for onchain writes or deletions, it's the developer's responsibility to use correct encoding. Using the wrong key schema onchain is effectively a no-op, since the data ends up in a storage slot that won’t be read when using the correct schema. The expectation is that the sync stack ignores these no-op logs, but it was previously throwing during decode.
fix(explorer): display remotely updated table values (#3737) (@latticexyz/explorer)
Table values updated remotely are now also reflected in the table viewer.
chore(explorer): append base world ABI to API endpoint (#3653) (@latticexyz/explorer)
World ABI endpoint is now includes the base world ABI.
feat(entrykit): loosen min gas balance (#3689) (@latticexyz/entrykit)
Loosened minimum gas balance requirement in onboarding to allow for any gas balance above zero.
fix(explorer): fetch from sqlite indexer in production (#3679) (@latticexyz/explorer)
Fixed fetching data from @latticexyz/store-indexer
/q
API endpoint in production builds.
feat(explorer): url params for interact and decode forms (#3713) (@latticexyz/explorer)
Interact and Decode forms now support URL parameters.
refactor(store-sync): migrate to isomorphic-ws (#3762) (@latticexyz/store-sync)
The preconfirmed logs stream is now using isomorphic-ws
for more control over error handling and reconnection logic.
fix(common): improve codegen error visibility (#3662) (@latticexyz/common)
Improved surfacing of errors during code generation.
feat(explorer): collapsible sections for functions (#3727) (@latticexyz/explorer)
Interact page is now organized into collapsible namespace and system sections.
fix(explorer): wallets connect options (#3732) (@latticexyz/explorer)
Restore wallet connection options in the wallet connect modal.
fix(explorer): various fixes (#3712) (@latticexyz/explorer)
feat(world-module-metadata): remove resource existence check (#3650) (@latticexyz/world-module-metadata)
Adding/deleting resource tags no longer checks if resource exists, only if you're the resource namespace owner.
feat(store-sync): system/world ABI from metadata (#3642) (@latticexyz/store-sync)
getWorldAbi
now returns a full world ABI (errors, parameter names, mutability, etc.) registered by the deployer using the metadata module.
Also added internal functions getSystemAbi
and getSystemAbis
to retrieve system-specific ABIs.
feat(entrykit): move to connectkit (#3721) (@latticexyz/entrykit)
Migrated EntryKit's underlying wallet connection handling from RainbowKit to ConnectKit.
feat(store-indexer): format sql queries (#3687) (@latticexyz/store-indexer)
The local SQLite indexer now automatically converts camelCase column names to snake_case to comply with the SQL API.
fix(store-sync): handle pending deleted dynamic value in stash storage adapter (#3714) (@latticexyz/store-sync)
Fixed a bug that caused the stash storage adapter to crash when deleting a dynamic field and writing to it again in the same block.
fix(store-sync): handle pending deletion in stash storage adapter (#3672) (@latticexyz/store-sync)
Pending deletions immediately followed by field updates are now handled correctly by the Stash storage adapter.
feat(explorer): read-only mode (#3701) (@latticexyz/explorer)
Added read-only mode with no wallet connection that only shows non-editable sections of the Explorer.
chore(explorer): remove indexer endpoint (#3678) (@latticexyz/explorer)
Removed the Explorer’s SQLite indexer API endpoint in favor of the equivalent /q
endpoint from @latticexyz/store-indexer
.
fix(world): batchCall
in sendUserOperationFrom
(#3693) (@latticexyz/world)
Fixed a bug related to batchCall
in sendUserOperationFrom
.
feat(explorer): use systems abis in decode form (#3646) (@latticexyz/explorer)
/system-abis
endpoint to retrieve ABIs by system IDs.ABI
page has been renamed to Decode
.fix(explorer): re-render externally updated table (#3692) (@latticexyz/explorer)
Table row data now correctly re-renders when updated outside the Explorer.
feat(world,entrykit): add sendUserOperationFrom
(#3675) (@latticexyz/entrykit)
EntryKit's SessionClient
now automatically routes sendUserOperation
through callFrom
like it does with writeContract
calls.
chore(entrykit): various improvements (#3699) (@latticexyz/entrykit)
fix(world): fix static array arguments in system libraries (#3661) (@latticexyz/world)
Fix static array arguments in system libraries.
feat(explorer): add chain switch (#3705) (@latticexyz/explorer)
Chain switching between supported networks is now accessible on the homepage and the world page.
chore(explorer): coinbase wallet support (#3749) (@latticexyz/explorer)
Coinbase wallet is now supported.
feat(entrykit): fork walletconnect connector (#3725) (@latticexyz/entrykit)
Replaced WalletConnect connector with our own internal fork to resolve some chain switching issues (see https://github.com/wevm/wagmi/pull/4691).
feat(entrykit): add pyrope fee estimation (#3640) (@latticexyz/entrykit)
Added explicit gas estimation for Pyrope to avoid overpaying.
refactor(entrykit): use skipToken instead of enabled (#3686) (@latticexyz/entrykit)
Updated React Query usages to use skipToken
instead of conditional a queryFn
to avoid warnings in newer versions of React Query.
feat(explorer): resolve paths using chain ID or name (#3735) (@latticexyz/explorer)
Explorer will now automatically resolve and redirect deep links using a chain ID to their corresponding chain name, e.g.
https://explorer.mud.dev/690/worlds/0x2d70F1eFFbFD865764CAF19BE2A01a72F3CE774f
feat(entrykit): quarry paymaster relay.link top-up (#3688) (@latticexyz/entrykit)
Added support for Quarry paymaster top-up via relay.link deposit form.
feat(entrykit): show only deposit chains with balance (#3730) (@latticexyz/entrykit)
The chain selector dropdown for bridged deposits now only displays chains with available funds.
feat(explorer): fetch deprecated world ABI (#3654) (@latticexyz/store-sync)
getWorldAbi()
now returns an ABI that is a combination of:
feat(entrykit): enable copying session wallet address (#3698) (@latticexyz/entrykit)
Session wallet address can now be copied from EntryKit modal.
fix(world): support generating libraries for systems without function registration (#3670) (@latticexyz/world)
Support generating libraries for systems without function registration.
chore(explorer): optional systemIds param for system ABIs endpoint (#3651) (@latticexyz/explorer)
systemIds
parameter is now optional for the system ABIs API endpoint.
fix(explorer): read env vars (#3709) (@latticexyz/explorer)
Environment variables are now loaded from the .env
file alongside those specified via CLI flags.
feat(entrykit): gas balance withdraw (#3724) (@latticexyz/entrykit)
You can now withdraw your gas balance from the Quarry paymaster.
feat(entrykit): separate loading state from invalid state (#3767) (@latticexyz/entrykit)
useSessionClient
will now return an error state when no user is connected. This separates the session client's pending state (querying data to determine if prerequisites are met) from invalid state (EntryKit misconfigured, user not connected, or prerequisites not met), allowing apps to provide better loading indicators within connect buttons.
The built-in AccountButton
already uses this new behavior to show a pending icon while querying for the session client's prerequisites.
feat(store-sync): add flag to define chunking behavior during initial hydration (#3745) (@latticexyz/store-sync)
The sync stack now supports defining the chunking behavior during initial hydration. Chunking remains enabled by default.
Chunking is useful to avoid blocking the main thread for too long, but it can lead to updates that happened in the same block being split across multiple chunks.
If chunking is enabled, clients should account for this by waiting for full hydration before using the update stream.
If atomicity of updates is important and blocking the main thread is not an issue, set this to false
.
feat(explorer): interact system calls (#3718) (@latticexyz/explorer)
The Interact tab now supports system functions. The functions can be searched by namespace, system name, or function name.
feat(store-sync): make pending logs sync more resilient (#3743) (@latticexyz/store-sync)
The sync stack now handles downtime in the pending logs API and reconnects once it's available again.
fix(entrykit): make required gas balance non-zero (#3691) (@latticexyz/entrykit)
Increased required balance/allowance to greater than zero.
fix(store-sync): setup message listener before setting up subscription (#3765) (@latticexyz/store-sync)
Fixed a race condition in the preconfirmed logs stream by setting up the message listener before setting up the subscription.
feat(world-module-metadata): add metadata system lib (#3645) (@latticexyz/world-module-metadata)
Added experimental system library for metadata system. Note that this is marked experimental as we may make breaking changes to the interface.
import { metadataSystem } from "@latticexyz/world-metadata-module/src/codegen/experimental/systems/MetadataSystemLib.sol";
metadataSystem.setResourceTag(namespaceId, bytes32("label"), "hello");
feat(world): find systems based on inheritance (#3649) (@latticexyz/world, @latticexyz/cli)
mud
CLI commands will now recognize systems if they inherit directly from the base System
imported from @latticexyz/world/src/System.sol
, allowing you to write systems without a System
suffix.
import {System} from "@latticexyz/world/src/System.sol";
contract EntityProgram is System {
...
}
If you have contracts that inherit from the base System
that aren't meant to be deployed, you can mark them as abstract contract
or disable the system's deploy via config.
chore: increase react peer dep range (#3728) (@latticexyz/stash, @latticexyz/store-sync)
Added React 19.x to the peer dependency range.
feat(store-sync): stream json from indexer snapshot (#3761) (@latticexyz/store-sync)
Fetching a snapshot from the indexer will now parse JSON as a stream, avoiding issues with large snapshots where the string is too long to parse in one go.
fix: assert -> with (#3739) (@latticexyz/cli, @latticexyz/entrykit, @latticexyz/store-sync)
Updated JSON imports to use with
annotation instead of assert
.
fix(stash): maintain update atomicity in subscribeQuery
(#3663) (@latticexyz/stash)
Stash now preserves batch updates when subscribing to query results. Previously, while Stash supported batching table updates for atomic onchain changes, subscribing to query results would split these updates by table.
feat(explorer): textarea string fields (#3746) (@latticexyz/explorer)
String fields in the "Interact" tab now support multiline values.
feat(entrykit): add wiresaw transport (#3703) (@latticexyz/entrykit)
Added experimental support for fast user operations on Wiresaw-enabled chains.
fix(cli): don't deploy abstract contracts (#3669) (@latticexyz/cli, @latticexyz/common)
CLI will no longer deploy abstract systems and contracts without bytecode.
fix(world): support functions with missing argument names in system libraries (#3671) (@latticexyz/world)
Adds support for functions with missing argument names in system libraries.
fix(entrykit): sign session wallet after top-up (#3697) (@latticexyz/entrykit)
The login flow now only attempts to register the session account after it has been successfully funded.
fix(explorer): update only changed table values (#3733) (@latticexyz/explorer)
Table cell edits are now saved only when the value has changed.
feat(explorer): verified worlds (#3707) (@latticexyz/explorer)
Verified worlds are now shown in the world selection form.
feat(common): add paymaster for testnet chains, remove rhodolite (#3770) (@latticexyz/common)
Added Quarry paymaster address for Garnet and Pyrope chain configs. And removed defunct Rhodolite chain config.
feat(entrykit): move to connectkit (#3721) (create-mud)
Bumped Viem and Wagmi versions in templates.
feat(entrykit): move to connectkit (#3721) (@latticexyz/entrykit)
Until we can add ERC-6492 support to our CallWithSignature
module, EntryKit will now throw a readable error when signing a message using ERC-6492 instead of failing the transaction.
feat(store-indexer): add experimental/local SQL API endpoint (#3676) (@latticexyz/store-indexer)
Added experimental SQL API endpoint /q
to the SQLite indexer. This is only intended for local development purposes and should not be used in production.
FAQs
Command line interface for mud
The npm package @latticexyz/cli receives a total of 2,180 weekly downloads. As such, @latticexyz/cli popularity was classified as popular.
We found that @latticexyz/cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
Security News
A new Node.js homepage button linking to paid support for EOL versions has sparked a heated discussion among contributors and the wider community.
Research
North Korean threat actors linked to the Contagious Interview campaign return with 35 new malicious npm packages using a stealthy multi-stage malware loader.