Skip to content

feat: add contractAddresses override and restyle custom tokens UI#610

Merged
Agilulfo1820 merged 8 commits into
mainfrom
feat/contract-address-overrides
Apr 27, 2026
Merged

feat: add contractAddresses override and restyle custom tokens UI#610
Agilulfo1820 merged 8 commits into
mainfrom
feat/contract-address-overrides

Conversation

@Agilulfo1820

@Agilulfo1820 Agilulfo1820 commented Apr 27, 2026

Copy link
Copy Markdown
Member

Summary

  • Add contractAddresses prop to VeChainKitProvider to override default contract addresses (e.g., B3TR, VOT3) for custom deployments on solo/testnet
  • Add useAppConfig() hook and appConfig context field for accessing the merged config
  • Move "Manage Custom Tokens" button inline with search bar as an icon button for easier reachability
  • Restyle the Manage Custom Tokens screen with helper text, inline add button, empty state, and clearer token list layout
  • Bump version to 2.7.0

Test plan

  • Verify contractAddresses prop overrides B3TR/VOT3 addresses on testnet/solo
  • Verify useAppConfig() returns merged config with overrides
  • Verify manage custom tokens icon button appears next to search bar in assets view
  • Verify adding/removing custom tokens works in the restyled screen
  • Verify empty state shows when no custom tokens exist

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features

    • Added ability to override network contract addresses through provider configuration
    • Redesigned custom token management interface with improved layout and inline controls
    • Added signing example to homepage
  • Improvements

    • Enhanced configuration system for better contract address management
  • Chores

    • Bumped package version to 2.7.0

Agilulfo1820 and others added 6 commits April 23, 2026 18:11
…rowser testing

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…loyments

Allow overriding default contract addresses (e.g., B3TR, VOT3) via a new
contractAddresses prop on the provider. This enables apps deploying on
solo or testnet with different contract instances to pass their addresses
without modifying the kit's built-in config.

Also adds useAppConfig() hook and appConfig context field for accessing
the merged configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Replace the full-width footer button with a compact icon button next to
the search input for easier reachability.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- Add helper text explaining what to do
- Move add button inline with input as a compact icon button
- Show empty state when no custom tokens exist
- Stack token symbol and address vertically for clearer hierarchy
- Remove separate footer, keeping all actions near the input
- Bump version to 2.7.0

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@coderabbitai

coderabbitai Bot commented Apr 27, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@Agilulfo1820 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 50 minutes and 30 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 92e88631-33d1-4352-94e1-6bff4e36fd4f

📥 Commits

Reviewing files that changed from the base of the PR and between cb55a88 and 399a538.

📒 Files selected for processing (2)
  • examples/playground/src/app/providers/VechainKitProviderWrapper.tsx
  • packages/vechain-kit/src/hooks/api/wallet/useTokenPrices.ts
📝 Walkthrough

Walkthrough

This PR refactors configuration management in vechain-kit by introducing a centralized useAppConfig() hook with provider-level override support via contractAddresses, updates multiple wallet and token hooks to consume this new pattern, redesigns token management UI in the AccountModal, bumps the package version to 2.7.0, and adds supporting language resources.

Changes

Cohort / File(s) Summary
Provider & Config System
packages/vechain-kit/src/providers/VeChainKitProvider.tsx
Adds contractAddresses?: Partial<AppConfig> prop to VechainKitProviderProps, computes merged appConfig from base and overrides, exports new useAppConfig() hook and appConfig field in VeChainKitConfig context.
Wallet & Token Hooks
packages/vechain-kit/src/hooks/api/wallet/useGetB3trBalance.ts, useGetVot3Balance.ts, useCustomTokens.ts, useTokenBalances.ts, useTokenPrices.ts
Unified migration: replaces getConfig(network.type) imports and calls with useAppConfig() to retrieve contract addresses and configuration from context instead of direct network-based lookup.
Token Management UI
packages/vechain-kit/src/components/AccountModal/Contents/Assets/AssetsContent.tsx, ManageCustomTokenContent.tsx
Restructures token search UI with inline HStack layout, moves custom-token button from footer to inline Tooltip-wrapped IconButton; redesigns ManageCustomTokenContent with inline add-token button, improved layout, updated token display with symbol and shortened address, and empty-state messaging.
Swap Component
packages/vechain-kit/src/components/AccountModal/Contents/Swap/SwapTokenContent.tsx
Updates B3TR contract address retrieval to use appConfig.b3trContractAddress from useVeChainKitConfig() instead of getConfig(network.type).
Signing Hook
packages/vechain-kit/src/hooks/signing/useSignTypedData.ts
Adds TODO comment flagging VeWorld in-app browser signTypedData support investigation; no functional changes.
Language Resources
packages/vechain-kit/src/languages/en.json
Adds two new user-facing text entries for custom token management (address paste prompt and empty-state message); fixes JSON syntax with trailing comma.
Configuration & Version
packages/vechain-kit/package.json, examples/next-template/next.config.js
Bumps @vechain/vechain-kit version from 2.6.9 to 2.7.0; updates next.config.js to derive basePath from NEXT_PUBLIC_BASE_PATH before BASE_PATH.
Examples
examples/homepage/src/app/pages/Home.tsx
Imports and renders new SigningExample component inside a centered Card section within the Home page layout.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

Possibly related PRs

  • Fix/add new wallet #570 — Both PRs modify VeChainKitProvider props/exports and the provider surface; this PR adds contractAddresses/appConfig and useAppConfig() hook for configuration override support.
  • Feat/add more tokens #592 — Both PRs alter provider-level configuration surface and downstream hook consumption patterns, centralizing how contract addresses and configuration are accessed across the kit.
  • feat: unify balance query keys and fix useRefreshBalances #602 — Both PRs refactor the same balance/price hooks (useGetB3trBalance, useGetVot3Balance, useTokenBalances) and their internal query/config logic, with this PR consolidating config retrieval through useAppConfig().

Suggested labels

safe-to-deploy, safe-to-build

Suggested reviewers

  • mikeredmond
  • victorkl400

Poem

🐰 A config's tale, once scattered wide,

Now gathers 'round the provider's side,

With hooks that sing in harmony true,

And tokens managed, shiny and new,

Our version bumps with delight! 🚀

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the two main changes: adding contractAddresses override capability and restyling the custom tokens UI, which are the core objectives of the PR.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/contract-address-overrides

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/vechain-kit/src/components/AccountModal/Contents/Swap/SwapTokenContent.tsx (1)

174-201: ⚠️ Potential issue | 🟡 Minor

Stale-closure risk and dead try/catch around appConfig.b3trContractAddress.

Two related issues here and at the symmetric block in handleSelectFromToken (lines 551–575):

  1. The dependency arrays include network.type but the actual value being read is now appConfig.b3trContractAddress. If a consumer changes contractAddresses (or any override) without changing network.type, this effect/callback won't re-run with the new B3TR address.
  2. The try/catch made sense when this called getConfig(network.type) (which throws on unsupported network), but a plain property read on appConfig cannot throw — it's now dead code.
♻️ Proposed cleanup (apply to both occurrences)
             // If not found by symbol, try finding by address from config
             if (!b3trToken) {
-                try {
-                    const b3trAddress = appConfig.b3trContractAddress;
-                    if (b3trAddress) {
-                        b3trToken = sortedTokens.find((t) =>
-                            compareAddresses(t.address, b3trAddress),
-                        );
-                    }
-                } catch (error) {
-                    console.warn(
-                        'Failed to get B3TR address from config:',
-                        error,
-                    );
-                }
+                const b3trAddress = appConfig.b3trContractAddress;
+                if (b3trAddress) {
+                    b3trToken = sortedTokens.find((t) =>
+                        compareAddresses(t.address, b3trAddress),
+                    );
+                }
             }

And update the deps:

-    }, [
-        sortedTokens,
-        fromToken,
-        toToken,
-        fromTokenAddress,
-        toTokenAddress,
-        network.type,
-    ]);
+    }, [
+        sortedTokens,
+        fromToken,
+        toToken,
+        fromTokenAddress,
+        toTokenAddress,
+        appConfig.b3trContractAddress,
+    ]);
-        [toToken, sortedTokens, network.type],
+        [toToken, sortedTokens, appConfig.b3trContractAddress],
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/vechain-kit/src/components/AccountModal/Contents/Swap/SwapTokenContent.tsx`
around lines 174 - 201, The effect reads appConfig.b3trContractAddress but the
dependency array only includes network.type, and the try/catch around reading
appConfig.b3trContractAddress is dead code; update the effect (and the symmetric
block in handleSelectFromToken) to remove the unnecessary try/catch and instead
include the B3TR address source in the dependency array (e.g.
appConfig.b3trContractAddress or the broader appConfig/contractAddresses object)
so the effect/callback re-runs when the address changes, and keep the existing
logic that finds b3trToken in sortedTokens and calls setToToken when found.
🧹 Nitpick comments (5)
packages/vechain-kit/src/hooks/signing/useSignTypedData.ts (2)

36-100: Consider adding signer to the dependency array.

The signTypedData callback uses signer (line 55) but doesn't include it in the dependency array (line 99). While this is pre-existing code, adding signer to the dependencies would align with React's exhaustive-deps best practice.

♻️ Suggested fix
        },
-       [connection, privyWalletProvider],
+       [connection, privyWalletProvider, signer],
    );
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/vechain-kit/src/hooks/signing/useSignTypedData.ts` around lines 36 -
100, The useSignTypedData hook's signTypedData callback references the signer
variable but the useCallback dependency array only lists connection and
privyWalletProvider; update the dependency array for the useCallback that
defines signTypedData to include signer (in addition to connection and
privyWalletProvider) so the callback is recreated when signer changes, ensuring
correct behavior and aligning with React's exhaustive-deps rule.

3-3: Track the TODO in an issue.

The TODO suggests an investigation is needed for VeWorld in-app browser compatibility with signTypedData. Consider creating a tracking issue to ensure this investigation isn't forgotten.

Would you like me to help draft an issue description for tracking this investigation?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/vechain-kit/src/hooks/signing/useSignTypedData.ts` at line 3, The
TODO comment in useSignTypedData.ts ("investigate signTypedData support in
VeWorld in-app browser") needs a tracked issue; create a ticket in your issue
tracker referencing the file and symbol useSignTypedData (and the TODO text)
that outlines investigation steps: reproduce signTypedData behavior in VeWorld
in-app browser, test different EIP-712 payloads, document which APIs are
supported or failing, capture console/errors and environment (browser version,
wallet), and propose fallback or polyfill approaches; link the issue ID back in
the TODO comment for traceability.
packages/vechain-kit/src/providers/VeChainKitProvider.tsx (1)

149-165: Consider narrowing contractAddresses to actual address fields.

Partial<AppConfig> allows overriding non-address fields like nodeUrl, explorerUrl, b3trIndexerUrl, network, ipfsFetchingService, etc. The prop name implies addresses only, and overriding e.g. nodeUrl here would diverge from network.nodeUrl (which is independently resolved at line 417 and is what DAppKitProvider/PrivyWalletProvider actually use), producing silent inconsistencies between appConfig.nodeUrl and the active node URL.

Consider tightening the type to a contract-address-only subset:

♻️ Proposed refactor
+type ContractAddressKeys =
+    | 'vthoContractAddress'
+    | 'b3trContractAddress'
+    | 'vot3ContractAddress'
+    | 'b3trGovernorAddress'
+    | 'timelockContractAddress'
+    | 'xAllocationPoolContractAddress'
+    | 'xAllocationVotingContractAddress'
+    | 'emissionsContractAddress'
+    | 'voterRewardsContractAddress'
+    | 'galaxyMemberContractAddress'
+    | 'treasuryContractAddress'
+    | 'x2EarnAppsContractAddress'
+    | 'x2EarnCreatorContractAddress'
+    | 'x2EarnRewardsPoolContractAddress'
+    | 'nodeManagementContractAddress'
+    | 'veBetterPassportContractAddress'
+    | 'veDelegate'
+    | 'veDelegateVotes'
+    | 'veDelegateTokenContractAddress'
+    | 'oracleContractAddress'
+    | 'accountFactoryAddress'
+    | 'cleanifyCampaignsContractAddress'
+    | 'cleanifyChallengesContractAddress'
+    | 'veWorldSubdomainClaimerContractAddress'
+    | 'vetDomainsContractAddress'
+    | 'vetDomainsPublicResolverAddress'
+    | 'vetDomainsReverseRegistrarAddress'
+    | 'vnsResolverAddress'
+    | 'sassContractAddress';
+
-    contractAddresses?: Partial<AppConfig>;
+    contractAddresses?: Partial<Pick<AppConfig, ContractAddressKeys>>;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/vechain-kit/src/providers/VeChainKitProvider.tsx` around lines 149 -
165, The contractAddresses prop on VeChainKitProvider is typed as
Partial<AppConfig>, which lets callers override non-address fields (e.g.,
nodeUrl, explorerUrl, network) and can silently diverge from the resolved
network.nodeUrl used by DAppKitProvider/PrivyWalletProvider; change
contractAddresses to a narrower type that only includes the contract address
fields (e.g., b3trContractAddress, vot3ContractAddress, and any other on-chain
contract address keys in AppConfig) instead of Partial<AppConfig>, update the
VeChainKitProvider prop type and any related usages to that new address-only
subset type, and ensure consumers and internal merges only accept/merge those
address fields so nodeUrl/explorerUrl/network remain resolved from network.
packages/vechain-kit/src/components/AccountModal/Contents/Assets/ManageCustomTokenContent.tsx (2)

156-164: Use Chakra's FormErrorMessage instead of a hard‑coded red Text.

Hard‑coding color="#ef4444" bypasses the theme/FormControl invalid state and won't respond to dark‑mode token overrides used elsewhere in this file. Since you already wrap the input in FormControl isInvalid={...}, Chakra v2 ships FormErrorMessage which is the idiomatic counterpart and will be wired to the input via aria-describedby automatically.

♻️ Suggested change
-                                {errors.newTokenAddress && (
-                                    <Text
-                                        color="#ef4444"
-                                        fontSize="sm"
-                                        mt={1}
-                                    >
-                                        {errors.newTokenAddress.message}
-                                    </Text>
-                                )}
+                                <FormErrorMessage>
+                                    {errors.newTokenAddress?.message}
+                                </FormErrorMessage>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/vechain-kit/src/components/AccountModal/Contents/Assets/ManageCustomTokenContent.tsx`
around lines 156 - 164, Replace the hard-coded red Text used for validation
feedback with Chakra's FormErrorMessage so the message follows FormControl's
isInvalid state and theme (e.g., dark mode). In ManageCustomTokenContent (the
component rendering the input with FormControl isInvalid={...}), swap the
conditional that renders errors.newTokenAddress Text to render
<FormErrorMessage>{errors.newTokenAddress.message}</FormErrorMessage> and remove
the inline color/fontSize styling; also add an import for FormErrorMessage from
`@chakra-ui/react` so the error message is correctly wired to the input's
aria-describedby.

112-142: Trim logic overrides register's onChange and is non‑idiomatic.

Spreading {...register(...)} and then declaring onChange replaces RHF's own change handler; you compensate with a manual setValue(..., { shouldValidate: true }) plus a direct mutation of e.target.value. This works but is fragile (DOM mutation on a controlled-by-RHF input) and easy to break in future edits. Prefer setValueAs (or onChange via the register options) so RHF still owns the change pipeline:

♻️ Cleaner alternative
                                     <Input
                                         {...register('newTokenAddress', {
                                             required: t('Address is required'),
+                                            setValueAs: (v: string) =>
+                                                typeof v === 'string'
+                                                    ? v.trim()
+                                                    : v,
                                             pattern: {
                                                 value: /^0x[a-fA-F0-9]{40}$/,
                                                 message: t(
                                                     'Please enter a valid contract address',
                                                 ),
                                             },
                                             validate: (value) =>
                                                 /^0x[a-fA-F0-9]{40}$/.test(
                                                     value,
                                                 ) ||
                                                 t('Invalid contract address'),
                                         })}
-                                        onChange={(e) => {
-                                            const trimmed =
-                                                e.target.value.trim();
-                                            e.target.value = trimmed;
-                                            setValue(
-                                                'newTokenAddress',
-                                                trimmed,
-                                                { shouldValidate: true },
-                                            );
-                                        }}
                                         placeholder="0x..."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/vechain-kit/src/components/AccountModal/Contents/Assets/ManageCustomTokenContent.tsx`
around lines 112 - 142, The current onChange prop on the Input in
ManageCustomTokenContent overrides the React Hook Form handler from
register('newTokenAddress') and mutates e.target.value; remove the external
onChange and DOM mutation and instead perform trimming inside RHF by using
register's options (e.g., provide setValueAs or an onChange sanitizer in the
register call for 'newTokenAddress') so RHF owns the change pipeline and
validation (keep the pattern/validate messages and ensure shouldValidate
behavior via RHF config).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@packages/vechain-kit/src/components/AccountModal/Contents/Assets/ManageCustomTokenContent.tsx`:
- Around line 110-155: The address input isn't inside a native form so Enter
doesn't submit; wrap the FormControl/HStack block in a form element (e.g., Box
as="form") with onSubmit={handleSubmit(onSubmit)} to enable keyboard submission,
ensure you keep using register('newTokenAddress') and setValue for input
handling, and change the IconButton to type="submit" (removing or keeping
onClick as redundant) so pressing Enter or clicking the button both trigger
handleSubmit(onSubmit).

---

Outside diff comments:
In
`@packages/vechain-kit/src/components/AccountModal/Contents/Swap/SwapTokenContent.tsx`:
- Around line 174-201: The effect reads appConfig.b3trContractAddress but the
dependency array only includes network.type, and the try/catch around reading
appConfig.b3trContractAddress is dead code; update the effect (and the symmetric
block in handleSelectFromToken) to remove the unnecessary try/catch and instead
include the B3TR address source in the dependency array (e.g.
appConfig.b3trContractAddress or the broader appConfig/contractAddresses object)
so the effect/callback re-runs when the address changes, and keep the existing
logic that finds b3trToken in sortedTokens and calls setToToken when found.

---

Nitpick comments:
In
`@packages/vechain-kit/src/components/AccountModal/Contents/Assets/ManageCustomTokenContent.tsx`:
- Around line 156-164: Replace the hard-coded red Text used for validation
feedback with Chakra's FormErrorMessage so the message follows FormControl's
isInvalid state and theme (e.g., dark mode). In ManageCustomTokenContent (the
component rendering the input with FormControl isInvalid={...}), swap the
conditional that renders errors.newTokenAddress Text to render
<FormErrorMessage>{errors.newTokenAddress.message}</FormErrorMessage> and remove
the inline color/fontSize styling; also add an import for FormErrorMessage from
`@chakra-ui/react` so the error message is correctly wired to the input's
aria-describedby.
- Around line 112-142: The current onChange prop on the Input in
ManageCustomTokenContent overrides the React Hook Form handler from
register('newTokenAddress') and mutates e.target.value; remove the external
onChange and DOM mutation and instead perform trimming inside RHF by using
register's options (e.g., provide setValueAs or an onChange sanitizer in the
register call for 'newTokenAddress') so RHF owns the change pipeline and
validation (keep the pattern/validate messages and ensure shouldValidate
behavior via RHF config).

In `@packages/vechain-kit/src/hooks/signing/useSignTypedData.ts`:
- Around line 36-100: The useSignTypedData hook's signTypedData callback
references the signer variable but the useCallback dependency array only lists
connection and privyWalletProvider; update the dependency array for the
useCallback that defines signTypedData to include signer (in addition to
connection and privyWalletProvider) so the callback is recreated when signer
changes, ensuring correct behavior and aligning with React's exhaustive-deps
rule.
- Line 3: The TODO comment in useSignTypedData.ts ("investigate signTypedData
support in VeWorld in-app browser") needs a tracked issue; create a ticket in
your issue tracker referencing the file and symbol useSignTypedData (and the
TODO text) that outlines investigation steps: reproduce signTypedData behavior
in VeWorld in-app browser, test different EIP-712 payloads, document which APIs
are supported or failing, capture console/errors and environment (browser
version, wallet), and propose fallback or polyfill approaches; link the issue ID
back in the TODO comment for traceability.

In `@packages/vechain-kit/src/providers/VeChainKitProvider.tsx`:
- Around line 149-165: The contractAddresses prop on VeChainKitProvider is typed
as Partial<AppConfig>, which lets callers override non-address fields (e.g.,
nodeUrl, explorerUrl, network) and can silently diverge from the resolved
network.nodeUrl used by DAppKitProvider/PrivyWalletProvider; change
contractAddresses to a narrower type that only includes the contract address
fields (e.g., b3trContractAddress, vot3ContractAddress, and any other on-chain
contract address keys in AppConfig) instead of Partial<AppConfig>, update the
VeChainKitProvider prop type and any related usages to that new address-only
subset type, and ensure consumers and internal merges only accept/merge those
address fields so nodeUrl/explorerUrl/network remain resolved from network.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0691991a-7623-4ed9-a540-22c69c66df07

📥 Commits

Reviewing files that changed from the base of the PR and between 8498d56 and cb55a88.

📒 Files selected for processing (14)
  • examples/homepage/src/app/pages/Home.tsx
  • examples/next-template/next.config.js
  • packages/vechain-kit/package.json
  • packages/vechain-kit/src/components/AccountModal/Contents/Assets/AssetsContent.tsx
  • packages/vechain-kit/src/components/AccountModal/Contents/Assets/ManageCustomTokenContent.tsx
  • packages/vechain-kit/src/components/AccountModal/Contents/Swap/SwapTokenContent.tsx
  • packages/vechain-kit/src/hooks/api/wallet/useCustomTokens.ts
  • packages/vechain-kit/src/hooks/api/wallet/useGetB3trBalance.ts
  • packages/vechain-kit/src/hooks/api/wallet/useGetVot3Balance.ts
  • packages/vechain-kit/src/hooks/api/wallet/useTokenBalances.ts
  • packages/vechain-kit/src/hooks/api/wallet/useTokenPrices.ts
  • packages/vechain-kit/src/hooks/signing/useSignTypedData.ts
  • packages/vechain-kit/src/languages/en.json
  • packages/vechain-kit/src/providers/VeChainKitProvider.tsx

@github-actions

github-actions Bot commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Size Change: +12.7 kB (+0.17%)

Total Size: 7.63 MB

Filename Size Change
packages/vechain-kit/dist/index-70LLKXnA.d.mts 0 B -153 kB (removed) 🏆
packages/vechain-kit/dist/index-70LLKXnA.d.mts.map 0 B -44.2 kB (removed) 🏆
packages/vechain-kit/dist/index-DPNOC481.d.cts 0 B -153 kB (removed) 🏆
packages/vechain-kit/dist/index-DPNOC481.d.cts.map 0 B -44.2 kB (removed) 🏆
packages/vechain-kit/dist/index-I8fe7GR2.d.cts 0 B -5.63 kB (removed) 🏆
packages/vechain-kit/dist/index-I8fe7GR2.d.cts.map 0 B -2.99 kB (removed) 🏆
packages/vechain-kit/dist/index.cjs.map 2.39 MB +4.77 kB (+0.2%)
packages/vechain-kit/dist/index.mjs.map 2.34 MB +4.78 kB (+0.2%)
packages/vechain-kit/dist/index-B_uuJsg0.d.mts 154 kB +154 kB (new file) 🆕
packages/vechain-kit/dist/index-B_uuJsg0.d.mts.map 44.1 kB +44.1 kB (new file) 🆕
packages/vechain-kit/dist/index-DfTiYZWT.d.cts 154 kB +154 kB (new file) 🆕
packages/vechain-kit/dist/index-DfTiYZWT.d.cts.map 44.1 kB +44.1 kB (new file) 🆕
packages/vechain-kit/dist/index-Y0ktF0Lw.d.cts 5.63 kB +5.63 kB (new file) 🆕
packages/vechain-kit/dist/index-Y0ktF0Lw.d.cts.map 2.99 kB +2.99 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
packages/vechain-kit/dist/assets 4.1 kB 0 B
packages/vechain-kit/dist/assets-BL24r-Yp.mjs 51.3 kB 0 B
packages/vechain-kit/dist/assets-BL24r-Yp.mjs.map 74.1 kB 0 B
packages/vechain-kit/dist/assets-DNJsQD7_.cjs 58.5 kB 0 B
packages/vechain-kit/dist/assets-DNJsQD7_.cjs.map 75.5 kB 0 B
packages/vechain-kit/dist/assets/index.cjs 716 B 0 B
packages/vechain-kit/dist/assets/index.d.cts 973 B 0 B
packages/vechain-kit/dist/assets/index.d.mts 973 B 0 B
packages/vechain-kit/dist/assets/index.mjs 718 B 0 B
packages/vechain-kit/dist/index-CWViOs1U.d.mts 5.63 kB 0 B
packages/vechain-kit/dist/index-CWViOs1U.d.mts.map 2.99 kB 0 B
packages/vechain-kit/dist/index.cjs 1.01 MB +811 B (+0.08%)
packages/vechain-kit/dist/index.d.cts 20.7 kB +34 B (+0.16%)
packages/vechain-kit/dist/index.d.mts 20.7 kB +34 B (+0.16%)
packages/vechain-kit/dist/index.mjs 978 kB +715 B (+0.07%)
packages/vechain-kit/dist/utils 4.1 kB 0 B
packages/vechain-kit/dist/utils-B3mmhtVy.cjs 26.2 kB 0 B
packages/vechain-kit/dist/utils-B3mmhtVy.cjs.map 65.3 kB 0 B
packages/vechain-kit/dist/utils-fXJ3K1K6.mjs 21.1 kB 0 B
packages/vechain-kit/dist/utils-fXJ3K1K6.mjs.map 64.6 kB 0 B
packages/vechain-kit/dist/utils/index.cjs 1.98 kB 0 B
packages/vechain-kit/dist/utils/index.d.cts 3.04 kB 0 B
packages/vechain-kit/dist/utils/index.d.mts 3.04 kB 0 B
packages/vechain-kit/dist/utils/index.mjs 2 kB 0 B

compressed-size-action

@Agilulfo1820 Agilulfo1820 merged commit ca826d9 into main Apr 27, 2026
7 checks passed
@Agilulfo1820 Agilulfo1820 deleted the feat/contract-address-overrides branch April 27, 2026 12:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant