Skip to content

[Docs] Project Rebrand #7455

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 27, 2025
Merged

[Docs] Project Rebrand #7455

merged 1 commit into from
Jun 27, 2025

Conversation

saminacodes
Copy link
Member

@saminacodes saminacodes commented Jun 27, 2025

CORE-0000


PR-Codex overview

This PR focuses on rebranding the Universal Bridge feature to Payments across various files and documentation, reflecting a shift in terminology and functionality.

Detailed summary

  • Renamed Universal Bridge to Payments in multiple files.
  • Updated related descriptions and titles to reflect the new branding.
  • Adjusted sidebar and header items to use Payments terminology.
  • Modified documentation to align with the new focus on Payments.
  • Changed references from Engine to Transactions where applicable.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Summary by CodeRabbit

  • New Features

    • Expanded the Learning Resources section with updated titles, descriptions, and additional cards for improved discoverability.
  • Refactor

    • Renamed product and navigation labels throughout the app and documentation: "Connect" to "Wallets", "Universal Bridge" to "Payments", and "Engine" to "Transactions" for consistency.
    • Updated sidebar and layout headers to reflect new product names.
    • Reordered header controls for improved user experience.
  • Documentation

    • Updated all relevant documentation and FAQs to use the new product names and terminology.
    • Added new FAQ entries and clarified distinctions between product offerings.
    • Removed outdated documentation pages and updated links accordingly.

@saminacodes saminacodes requested review from a team as code owners June 27, 2025 05:00
Copy link

changeset-bot bot commented Jun 27, 2025

⚠️ No Changeset found

Latest commit: 5640d48

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

vercel bot commented Jun 27, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
docs-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 27, 2025 3:28pm
4 Skipped Deployments
Name Status Preview Comments Updated (UTC)
nebula ⬜️ Skipped (Inspect) Jun 27, 2025 3:28pm
thirdweb_playground ⬜️ Skipped (Inspect) Jun 27, 2025 3:28pm
thirdweb-www ⬜️ Skipped (Inspect) Jun 27, 2025 3:28pm
wallet-ui ⬜️ Skipped (Inspect) Jun 27, 2025 3:28pm

Copy link
Contributor

coderabbitai bot commented Jun 27, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This change rebrands product and navigation labels across the portal application: "Connect" is renamed to "Wallets," "Universal Bridge" to "Payments," and "Engine" to "Transactions." All related documentation, navigation, sidebars, and metadata are updated accordingly. Additional learning resource cards are added, and some navigation UI order is adjusted.

Changes

Files/Group Change Summary
apps/portal/src/app/Header.tsx Renamed navigation/support link labels, swapped GitHub icon and ThemeSwitcher order in top-right controls.
apps/portal/src/app/page.tsx Updated learning resource card titles/descriptions, changed grid to 3 columns, added "Contracts" and "Vault".
apps/portal/src/app/connect/... Renamed "Connect" to "Wallets" in docs, sidebar, and UI labels.
apps/portal/src/app/pay/... Renamed "Universal Bridge" to "Payments" in all docs, sidebars, metadata, and support content.
apps/portal/src/app/engine/v2/sidebar.tsx
apps/portal/src/app/engine/v3/sidebar.tsx
Changed sidebar root name from "Engine" to "Transactions"; updated wallet config link in v3 sidebar.
apps/portal/src/app/engine/v3/layout.tsx
apps/portal/src/app/engine/v3/page.mdx
Changed all "Engine" references to "Transactions" in sidebar header, metadata, and page content.
apps/portal/src/app/engine/v3/get-started/page.mdx
.../faq/page.mdx
.../migrate/page.mdx
.../troubleshoot/page.mdx
.../typescript-sdk/page.mdx
Updated all documentation and FAQs to use "Transactions" instead of "Engine" throughout.
apps/portal/src/app/engine/v3/configure-wallets/server-wallets/page.mdx Updated references from "Engine" to "thirdweb Transactions" in doc content.
apps/portal/src/app/engine/v3/configure-wallets/smart-server-wallet/page.mdx Deleted redundant/moved documentation file.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant PortalUI
    participant Docs
    participant Sidebar

    User->>PortalUI: Open portal
    PortalUI->>Sidebar: Render navigation
    Sidebar-->>PortalUI: Show "Wallets", "Payments", "Transactions"
    User->>PortalUI: Navigate to docs or features
    PortalUI->>Docs: Load relevant documentation
    Docs-->>User: Show content with updated product names
Loading

Possibly related PRs

  • thirdweb-dev/js#7369: Also renames sidebar link labels from "Connect" to "Wallets" and from "Engine" to "Transactions," directly affecting navigation elements.
  • thirdweb-dev/js#7447: Updates product titles and descriptions in support pages, reflecting the same renaming and rebranding.
  • thirdweb-dev/js#7138: Modifies the Header navigation links, including "Connect," and reorganizes navigation, overlapping with this PR's header changes.

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 399acb9 and 5640d48.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (34)
  • apps/portal/src/app/Header.tsx (3 hunks)
  • apps/portal/src/app/connect/layout.tsx (1 hunks)
  • apps/portal/src/app/connect/page.mdx (5 hunks)
  • apps/portal/src/app/connect/wallet/faq/page.mdx (1 hunks)
  • apps/portal/src/app/connect/wallet/get-started/page.mdx (2 hunks)
  • apps/portal/src/app/connect/wallet/migrate-to-thirdweb/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v2/sidebar.tsx (1 hunks)
  • apps/portal/src/app/engine/v3/configure-wallets/server-wallets/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v3/configure-wallets/smart-server-wallet/page.mdx (0 hunks)
  • apps/portal/src/app/engine/v3/faq/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v3/get-started/page.mdx (4 hunks)
  • apps/portal/src/app/engine/v3/layout.tsx (2 hunks)
  • apps/portal/src/app/engine/v3/migrate/page.mdx (5 hunks)
  • apps/portal/src/app/engine/v3/page.mdx (3 hunks)
  • apps/portal/src/app/engine/v3/sidebar.tsx (2 hunks)
  • apps/portal/src/app/engine/v3/troubleshoot/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v3/typescript-sdk/page.mdx (3 hunks)
  • apps/portal/src/app/page.tsx (2 hunks)
  • apps/portal/src/app/pay/customization/connectbutton/page.mdx (3 hunks)
  • apps/portal/src/app/pay/customization/send-transaction/page.mdx (1 hunks)
  • apps/portal/src/app/pay/faqs/page.mdx (3 hunks)
  • apps/portal/src/app/pay/fees/page.mdx (2 hunks)
  • apps/portal/src/app/pay/get-started/page.mdx (4 hunks)
  • apps/portal/src/app/pay/guides/cross-chain-swapping/page.mdx (1 hunks)
  • apps/portal/src/app/pay/guides/nft-checkout/page.mdx (2 hunks)
  • apps/portal/src/app/pay/guides/onramp-integration/page.mdx (2 hunks)
  • apps/portal/src/app/pay/guides/smart-accounts/page.mdx (4 hunks)
  • apps/portal/src/app/pay/layout.tsx (1 hunks)
  • apps/portal/src/app/pay/onramp-providers/page.mdx (1 hunks)
  • apps/portal/src/app/pay/page.mdx (3 hunks)
  • apps/portal/src/app/pay/sidebar.tsx (1 hunks)
  • apps/portal/src/app/pay/supported-chains/page.mdx (1 hunks)
  • apps/portal/src/app/pay/troubleshoot/page.mdx (2 hunks)
  • apps/portal/src/app/pay/webhooks/page.mdx (2 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

graphite-app bot commented Jun 27, 2025

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge-queue - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

@github-actions github-actions bot added the Portal Involves changes to the Portal (docs) codebase. label Jun 27, 2025
Copy link
Contributor

github-actions bot commented Jun 27, 2025

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
thirdweb (esm) 63.11 KB (0%) 1.3 s (0%) 389 ms (+105.82% 🔺) 1.7 s
thirdweb (cjs) 352.61 KB (0%) 7.1 s (0%) 1.7 s (+3.02% 🔺) 8.7 s
thirdweb (minimal + tree-shaking) 5.72 KB (0%) 115 ms (0%) 118 ms (+920.5% 🔺) 233 ms
thirdweb/chains (tree-shaking) 530 B (0%) 11 ms (0%) 84 ms (+2218.61% 🔺) 94 ms
thirdweb/react (minimal + tree-shaking) 19.59 KB (0%) 392 ms (0%) 145 ms (+376.39% 🔺) 537 ms

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🔭 Outside diff range comments (3)
apps/portal/src/app/engine/v2/sidebar.tsx (1)

131-133: Out-of-date “Engine” domain in API reference

The product has been rebranded to “Transactions” but the doc link still targets thirdweb-engine.apidocumentation.com.
Please confirm whether a dedicated “Transactions” doc host exists and update accordingly.

-      href: "https://thirdweb-engine.apidocumentation.com/",
+      href: "https://thirdweb-transactions.apidocumentation.com/",
apps/portal/src/app/pay/layout.tsx (1)

1-4: Server component should be explicitly marked as server-only

This file is a pure server component (no client-side interaction) yet misses the import "server-only"; sentinel required by the repo guidelines.
Adding it up-front prevents accidental bundling into the client build.

+import "server-only";
 import { createMetadata } from "@doc";
 import { DocLayout } from "@/components/Layouts/DocLayout";
 import { sidebar } from "./sidebar";
apps/portal/src/app/engine/v3/typescript-sdk/page.mdx (1)

34-34: Fix the server wallet instantiation to match the updated import.

The code still references Engine.serverWallet but should use Transactions.serverWallet to match the updated import statement.

// Create a server wallet
-const serverWallet = Engine.serverWallet({
+const serverWallet = Transactions.serverWallet({
  client,
  address: "<your-server-wallet-address>",
  vaultAccessToken: "<your-vault-access-token>",
});
🧹 Nitpick comments (21)
apps/portal/src/app/connect/page.mdx (3)

58-58: Tiny wording nitpick

“Get started with Wallets in your preferred language.” reads fine, but “preferred framework / language” may be clearer since React/Unity aren’t languages.

Optional change—feel free to skip.


94-94: Minor plural / singular mismatch

“Wallet APIs” is plural, but the line above treats Wallets as a product name (singular). Consider:

“You’ll need a client ID to access the Wallets API, storage, and more.”

Pure copy tweak — no functional impact.


105-105: Grammar: treat “Wallets” as a product name

Currently: “Wallets are supported on every EVM compatible chain.”
Recommended:

-Wallets are supported on every EVM compatible chain.
+Wallets is supported on every EVM-compatible chain.

This keeps subject–verb agreement consistent with earlier “Wallets is the complete toolkit…”.

apps/portal/src/app/engine/v3/configure-wallets/server-wallets/page.mdx (1)

13-14: Spelling nit – use “multidimensional” (one word)

-**Higher Throughput:** Smart server wallets can handle higher throughput by using multi-dimensional nonces.
+**Higher Throughput:** Smart server wallets can handle higher throughput by using multidimensional nonces.
apps/portal/src/app/pay/customization/send-transaction/page.mdx (1)

9-10: Missing space after product name in description

-		"thirdweb Payments- Customizing point of sale onramps and crypto purchase flows",
+		"thirdweb Payments - Customizing point of sale on-ramps and crypto purchase flows",
apps/portal/src/app/pay/layout.tsx (1)

13-21: Minor wording nit

"Learn how to use the thirdweb Payments …" reads awkwardly with the definite article.
Consider dropping “the”.

-    "thirdweb Payments documentation. Learn how to use the thirdweb Payments to send and receive tokens across different blockchains.",
+    "thirdweb Payments documentation. Learn how to use thirdweb Payments to send and receive tokens across different blockchains.",
apps/portal/src/app/pay/customization/connectbutton/page.mdx (2)

42-44: Use one spelling: “prefill”

The text flips between “pre-fill” and “prefill”. Stick to the latter (it matches the prop name).

-In the case you want your users to purchase your token by default in your application, you can choose to pre-fill the Payments purchase flow with `prefillBuy` .
+If you want users to purchase your token by default, you can prefill the Payments purchase flow with `prefillBuy`.

140-142: Missing article

Tiny grammar tweak to improve readability.

-You can set the theme for the Payments component, which is set to `"dark"` by default. theme can be set to either `"dark"` , `"light"` or a custom theme object.
+You can set the theme for the Payments component, which is `"dark"` by default. The theme can be `"dark"`, `"light"`, or a custom theme object.
apps/portal/src/app/pay/webhooks/page.mdx (1)

24-30: Label still references “Bridge”

The TabsTrigger value/label pair for "bridge" shows “Bridge & Swap”.
Given the rebrand, consider renaming to avoid confusion (e.g. value="payments" / label “Bridge & Swap (Payments)” or similar).

No code breakage, but users might assume the old product name still exists.

apps/portal/src/app/pay/faqs/page.mdx (3)

33-34: Grammar: pluralize “token” & streamline wording

Payments is able to support most token that meet the following criteria:

Consider:

-Payments is able to support most token that meet the following criteria:
+Payments can support most tokens that meet the following criteria:

36-41: Use an en dash in time-ranges

Typographic nit:

-...after 20-40 minutes...
+...after 20–40 minutes...

114-116: Minor wording tweak

Payments can support any currency...

Strictly speaking they’re tokens, not currencies.
If accuracy matters here:

-Payments can support any currency on our
+Payments can support any token on our
apps/portal/src/app/pay/guides/onramp-integration/page.mdx (1)

26-29: Possessive form – drop the extra “s”

Payments's onramp functionalityPayments' onramp functionality (or just “Payments onramp functionality”).

-Payments's onramp functionality
+Payments' onramp functionality
apps/portal/src/app/pay/fees/page.mdx (2)

11-13: Streamline wording

-To monetize applications or games, you are able to set a developer fee
+To monetize applications or games, you can set a developer fee

52-53: Remove superfluous article

-When onramping to crypto using the Payments, a fee is charged
+When onramping to crypto using Payments, a fee is charged
apps/portal/src/app/engine/v3/migrate/page.mdx (2)

17-19: Variable placeholder still references “engine_url”

After rebranding the narrative says “Transactions url” but the placeholder remains <engine_url>.
To avoid confusion:

-curl -X POST "<engine_url>/contract/<chain>/<contract_address>/write" \
+curl -X POST "<transactions_url>/contract/<chain>/<contract_address>/write" \

176-178: Tighten language

-V2 has a large number of endpoints to do specific contract calls
+V2 exposes numerous endpoints for specific contract calls
apps/portal/src/app/page.tsx (2)

185-190: Consider using a more appropriate icon for the Contracts card

The new "Contracts" card reuses the EngineIcon, which might confuse users since Engine has been rebranded to Transactions. Consider using a contracts-specific icon to avoid ambiguity.

Based on the available icons in the relevant code snippets, you might want to create a dedicated contracts icon or use a more generic icon that represents smart contracts.


203-208: Consider using a dedicated icon for the Vault card

The new "Vault" card reuses the NebulaIcon, which could confuse users since Vault and Nebula are different products. Consider creating a vault-specific icon for better clarity.

A dedicated vault icon would help users distinguish between the Vault and Nebula products more easily.

apps/portal/src/app/pay/page.mdx (2)

18-21: Fix grammar issues for better readability

Address the following grammar improvements:

  1. Add hyphen: "brand new" → "brand-new"
  2. Add comma after "and more"
  3. Consider "are supported" instead of "is supported" for better subject-verb agreement
-Learn how to integrate Payments into your application for cross-chain payments, bridging, swapping, and fiat onramps. This guide covers the core SDK modules and practical implementation examples.
+Payments allows you to create both simple and advanced payment flows for bridging, swapping, onramping, and peer-to-peer purchases. It's been used to drive millions in NFT sales, bridge native tokens to brand-new chains, send stablecoins between users, and more.

-To get started check out the [SDK functions](https://portal.thirdweb.com/typescript/v5/buy/quote), [API reference](https://bridge.thirdweb.com/reference), or [playground](https://playground.thirdweb.com/connect/pay).
+To get started, check out the [SDK functions](https://portal.thirdweb.com/typescript/v5/buy/quote), [API reference](https://bridge.thirdweb.com/reference), or [playground](https://playground.thirdweb.com/connect/pay).

82-82: Consider improving subject-verb agreement

"Payments are supported" would be more grammatically correct than "Payments is supported" since "Payments" refers to the service/functionality rather than a singular product.

-Payments is supported on select EVM compatible chains.
+Payments are supported on select EVM compatible chains.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 277c2e2 and 28c0fe4.

📒 Files selected for processing (30)
  • apps/portal/src/app/Header.tsx (3 hunks)
  • apps/portal/src/app/connect/page.mdx (5 hunks)
  • apps/portal/src/app/engine/v2/sidebar.tsx (1 hunks)
  • apps/portal/src/app/engine/v3/configure-wallets/server-wallets/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v3/configure-wallets/smart-server-wallet/page.mdx (0 hunks)
  • apps/portal/src/app/engine/v3/faq/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v3/get-started/page.mdx (4 hunks)
  • apps/portal/src/app/engine/v3/layout.tsx (1 hunks)
  • apps/portal/src/app/engine/v3/migrate/page.mdx (5 hunks)
  • apps/portal/src/app/engine/v3/page.mdx (3 hunks)
  • apps/portal/src/app/engine/v3/sidebar.tsx (2 hunks)
  • apps/portal/src/app/engine/v3/troubleshoot/page.mdx (1 hunks)
  • apps/portal/src/app/engine/v3/typescript-sdk/page.mdx (3 hunks)
  • apps/portal/src/app/page.tsx (2 hunks)
  • apps/portal/src/app/pay/customization/connectbutton/page.mdx (3 hunks)
  • apps/portal/src/app/pay/customization/send-transaction/page.mdx (1 hunks)
  • apps/portal/src/app/pay/faqs/page.mdx (3 hunks)
  • apps/portal/src/app/pay/fees/page.mdx (2 hunks)
  • apps/portal/src/app/pay/get-started/page.mdx (4 hunks)
  • apps/portal/src/app/pay/guides/cross-chain-swapping/page.mdx (1 hunks)
  • apps/portal/src/app/pay/guides/nft-checkout/page.mdx (2 hunks)
  • apps/portal/src/app/pay/guides/onramp-integration/page.mdx (2 hunks)
  • apps/portal/src/app/pay/guides/smart-accounts/page.mdx (4 hunks)
  • apps/portal/src/app/pay/layout.tsx (1 hunks)
  • apps/portal/src/app/pay/onramp-providers/page.mdx (1 hunks)
  • apps/portal/src/app/pay/page.mdx (3 hunks)
  • apps/portal/src/app/pay/sidebar.tsx (1 hunks)
  • apps/portal/src/app/pay/supported-chains/page.mdx (1 hunks)
  • apps/portal/src/app/pay/troubleshoot/page.mdx (2 hunks)
  • apps/portal/src/app/pay/webhooks/page.mdx (2 hunks)
💤 Files with no reviewable changes (1)
  • apps/portal/src/app/engine/v3/configure-wallets/smart-server-wallet/page.mdx
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.@(ts|tsx)`: Accept a typed 'props' object and export a named function (e.g...

**/*.@(ts|tsx): Accept a typed 'props' object and export a named function (e.g., export function MyComponent()).
Combine class names via 'cn', expose 'className' prop if useful.
Reuse core UI primitives; avoid re-implementing buttons, cards, modals.
Local state or effects live inside; data fetching happens in hooks.
Merge class names with 'cn' from '@/lib/utils' to keep conditional logic readable.
Stick to design-tokens: background ('bg-card'), borders ('border-border'), muted text ('text-muted-foreground') etc.
Use the 'container' class with a 'max-w-7xl' cap for page width consistency.
Spacing utilities ('px-', 'py-', 'gap-*') are preferred over custom margins.
Responsive helpers follow mobile-first ('max-sm', 'md', 'lg', 'xl').
Never hard-code colors – always go through Tailwind variables.
Tailwind CSS is the styling system – avoid inline styles or CSS modules.
Prefix files with 'import "server-only";' so they never end up in the client bundle (for server-only code).

📄 Source: CodeRabbit Inference Engine (.cursor/rules/dashboard.mdc)

List of files the instruction was applied to:

  • apps/portal/src/app/pay/sidebar.tsx
  • apps/portal/src/app/engine/v2/sidebar.tsx
  • apps/portal/src/app/engine/v3/layout.tsx
  • apps/portal/src/app/Header.tsx
  • apps/portal/src/app/pay/layout.tsx
  • apps/portal/src/app/engine/v3/sidebar.tsx
  • apps/portal/src/app/page.tsx
🧠 Learnings (21)
📓 Common learnings
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
apps/portal/src/app/connect/page.mdx (6)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Wallet architecture should unify Wallet and Account interfaces, support in-app wallets (social/email login), smart wallets with account abstraction, and EIP-1193, EIP-5792, EIP-7702 standards.
Learnt from: CR
PR: thirdweb-dev/js#0
File: .cursor/rules/dashboard.mdc:0-0
Timestamp: 2025-06-23T13:49:58.951Z
Learning: Client components must begin with 'use client'; before imports to ensure correct rendering behavior in Next.js.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Client components should begin files with 'use client' and use React hooks for interactivity.
Learnt from: joaquim-verges
PR: thirdweb-dev/js#7268
File: packages/thirdweb/src/wallets/in-app/core/wallet/in-app-core.ts:210-216
Timestamp: 2025-06-03T23:44:40.243Z
Learning: EIP7702 wallets do not need special handling for switching chains, unlike EIP4337 wallets which require reconnection when switching chains. In the switchChain method condition, EIP7702 should be intentionally excluded from the reconnection logic.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Use FORKED_ETHEREUM_CHAIN for mainnet interactions and ANVIL_CHAIN for isolated tests.
apps/portal/src/app/engine/v3/configure-wallets/server-wallets/page.mdx (1)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Wallet architecture should unify Wallet and Account interfaces, support in-app wallets (social/email login), smart wallets with account abstraction, and EIP-1193, EIP-5792, EIP-7702 standards.
apps/portal/src/app/pay/guides/cross-chain-swapping/page.mdx (2)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
apps/portal/src/app/pay/faqs/page.mdx (1)
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
apps/portal/src/app/engine/v3/layout.tsx (3)
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/direct-listings/shared-direct-listings-page.tsx:47-52
Timestamp: 2025-05-26T16:29:54.317Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractDirectListingsPage` component in the direct listings shared page, following the same pattern as other server components in the codebase where `projectMeta` is only needed for client components.
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/tokens/shared-page.tsx:41-48
Timestamp: 2025-05-26T16:28:50.772Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractTokensPage` component in the tokens shared page, unlike some other shared pages where it's needed for consistency.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
apps/portal/src/app/pay/guides/smart-accounts/page.mdx (4)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Wallet architecture should unify Wallet and Account interfaces, support in-app wallets (social/email login), smart wallets with account abstraction, and EIP-1193, EIP-5792, EIP-7702 standards.
Learnt from: MananTank
PR: thirdweb-dev/js#7081
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/assets/create/create-token-page-impl.tsx:110-118
Timestamp: 2025-05-20T18:54:15.781Z
Learning: In the thirdweb dashboard's token asset creation flow, the `transferBatch` function from `thirdweb/extensions/erc20` accepts the raw quantity values from the form without requiring explicit conversion to wei using `toUnits()`. The function appears to handle this conversion internally or is designed to work with the values in the format they're already provided.
Learnt from: joaquim-verges
PR: thirdweb-dev/js#7268
File: packages/thirdweb/src/wallets/in-app/core/wallet/in-app-core.ts:210-216
Timestamp: 2025-06-03T23:44:40.243Z
Learning: EIP7702 wallets do not need special handling for switching chains, unlike EIP4337 wallets which require reconnection when switching chains. In the switchChain method condition, EIP7702 should be intentionally excluded from the reconnection logic.
apps/portal/src/app/pay/webhooks/page.mdx (6)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: gregfromstl
PR: thirdweb-dev/js#7450
File: packages/thirdweb/src/bridge/Webhook.ts:57-81
Timestamp: 2025-06-26T19:46:04.024Z
Learning: In the onramp webhook schema (`packages/thirdweb/src/bridge/Webhook.ts`), the `currencyAmount` field is intentionally typed as `z.number()` while other amount fields use `z.string()` because `currencyAmount` represents fiat currency amounts in decimals (like $10.50), whereas other amount fields represent token amounts in wei (very large integers that benefit from bigint representation). The different naming convention (`currencyAmount` vs `amount`) reflects this intentional distinction.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/tokens/shared-page.tsx:41-48
Timestamp: 2025-05-26T16:28:50.772Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractTokensPage` component in the tokens shared page, unlike some other shared pages where it's needed for consistency.
Learnt from: AmineAfia
PR: thirdweb-dev/js#7173
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/WebhooksTable.tsx:59-73
Timestamp: 2025-05-27T21:57:09.248Z
Learning: In the webhooks functionality, form validation prevents users from reaching test webhook functionality without entering a valid URL, ensuring data integrity before testing operations.
Learnt from: AmineAfia
PR: thirdweb-dev/js#7173
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/hooks/useTestWebhook.ts:87-89
Timestamp: 2025-05-27T21:57:57.175Z
Learning: In the webhook testing functionality, error detection using string matching (e.g., checking if error message includes "Failed to send test event") is intentional and based on specific error messages returned by the backend API, not frontend-generated errors.
apps/portal/src/app/pay/fees/page.mdx (1)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
apps/portal/src/app/pay/onramp-providers/page.mdx (2)
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/direct-listings/shared-direct-listings-page.tsx:47-52
Timestamp: 2025-05-26T16:29:54.317Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractDirectListingsPage` component in the direct listings shared page, following the same pattern as other server components in the codebase where `projectMeta` is only needed for client components.
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/tokens/shared-page.tsx:41-48
Timestamp: 2025-05-26T16:28:50.772Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractTokensPage` component in the tokens shared page, unlike some other shared pages where it's needed for consistency.
apps/portal/src/app/pay/guides/onramp-integration/page.mdx (2)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: gregfromstl
PR: thirdweb-dev/js#7450
File: packages/thirdweb/src/bridge/Webhook.ts:57-81
Timestamp: 2025-06-26T19:46:04.024Z
Learning: In the onramp webhook schema (`packages/thirdweb/src/bridge/Webhook.ts`), the `currencyAmount` field is intentionally typed as `z.number()` while other amount fields use `z.string()` because `currencyAmount` represents fiat currency amounts in decimals (like $10.50), whereas other amount fields represent token amounts in wei (very large integers that benefit from bigint representation). The different naming convention (`currencyAmount` vs `amount`) reflects this intentional distinction.
apps/portal/src/app/engine/v3/get-started/page.mdx (1)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
apps/portal/src/app/Header.tsx (3)
Learnt from: jnsdls
PR: thirdweb-dev/js#7364
File: apps/dashboard/src/app/(app)/account/components/AccountHeader.tsx:36-41
Timestamp: 2025-06-18T02:13:34.500Z
Learning: In the logout flow in apps/dashboard/src/app/(app)/account/components/AccountHeader.tsx, when `doLogout()` fails, the cleanup steps (resetAnalytics(), wallet disconnect, router refresh) should NOT execute. This is intentional to maintain consistency - if server-side logout fails, client-side cleanup should not occur.
Learnt from: MananTank
PR: thirdweb-dev/js#7315
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/launch-nft.tsx:155-160
Timestamp: 2025-06-10T00:46:58.580Z
Learning: In the dashboard application, the route structure for team and project navigation is `/team/[team_slug]/[project_slug]/...` without a `/project/` segment. Contract links should be formatted as `/team/${teamSlug}/${projectSlug}/contract/${chainId}/${contractAddress}`.
Learnt from: CR
PR: thirdweb-dev/js#0
File: .cursor/rules/dashboard.mdc:0-0
Timestamp: 2025-06-23T13:49:58.951Z
Learning: Prefer composable UI primitives (Button, Input, Select, Tabs, Card, Sidebar, Separator, Badge) over custom markup for maintainability and design consistency.
apps/portal/src/app/pay/customization/send-transaction/page.mdx (2)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
apps/portal/src/app/pay/layout.tsx (2)
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/tokens/shared-page.tsx:41-48
Timestamp: 2025-05-26T16:28:50.772Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractTokensPage` component in the tokens shared page, unlike some other shared pages where it's needed for consistency.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
apps/portal/src/app/pay/get-started/page.mdx (2)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
apps/portal/src/app/engine/v3/page.mdx (3)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/tokens/shared-page.tsx:41-48
Timestamp: 2025-05-26T16:28:50.772Z
Learning: The `projectMeta` prop is not required for the server-rendered `ContractTokensPage` component in the tokens shared page, unlike some other shared pages where it's needed for consistency.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Use FORKED_ETHEREUM_CHAIN for mainnet interactions and ANVIL_CHAIN for isolated tests.
apps/portal/src/app/engine/v3/typescript-sdk/page.mdx (7)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Extensions should be modular, support composable functions, and provide TypeScript safety.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Write idiomatic TypeScript with explicit function declarations and return types.
Learnt from: MananTank
PR: thirdweb-dev/js#7356
File: apps/nebula/src/app/not-found.tsx:1-1
Timestamp: 2025-06-17T18:30:52.976Z
Learning: In the thirdweb/js project, the React namespace is available for type annotations (like React.FC) without needing to explicitly import React. This is project-specific configuration that differs from typical TypeScript/React setups.
Learnt from: MananTank
PR: thirdweb-dev/js#7332
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/nft/overview/nft-drop-claim.tsx:82-90
Timestamp: 2025-06-13T13:03:41.732Z
Learning: The thirdweb `contract` object is serializable and can safely be used in contexts (e.g., React-Query keys) that require serializable values.
Learnt from: MananTank
PR: thirdweb-dev/js#7298
File: apps/dashboard/src/app/nebula-app/move-funds/move-funds.tsx:424-424
Timestamp: 2025-06-06T23:46:08.795Z
Learning: The thirdweb project has an ESLint rule that restricts direct usage of `defineChain`. When it's necessary to use `defineChain` directly, it's acceptable to disable the rule with `// eslint-disable-next-line no-restricted-syntax`.
Learnt from: MananTank
PR: thirdweb-dev/js#7227
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/OpenEditionMetadata.tsx:26-26
Timestamp: 2025-05-30T17:14:25.332Z
Learning: The ModuleCardUIProps interface already includes a client prop of type ThirdwebClient, so when components use `Omit<ModuleCardUIProps, "children" | "updateButton">`, they inherit the client prop without needing to add it explicitly.
Learnt from: MananTank
PR: thirdweb-dev/js#7152
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/analytics/shared-analytics-page.tsx:33-39
Timestamp: 2025-05-26T16:30:24.965Z
Learning: In the thirdweb dashboard codebase, redirectToContractLandingPage function already handles execution termination internally (likely using Next.js redirect() which throws an exception), so no explicit return statement is needed after calling it.
apps/portal/src/app/pay/page.mdx (4)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: MananTank
PR: thirdweb-dev/js#7177
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx:15-17
Timestamp: 2025-05-27T19:54:55.885Z
Learning: The `fetchDashboardContractMetadata` function from "@3rdweb-sdk/react/hooks/useDashboardContractMetadata" has internal error handlers for all promises and cannot throw errors, so external error handling is not needed when calling this function.
Learnt from: joaquim-verges
PR: thirdweb-dev/js#7268
File: packages/thirdweb/src/wallets/in-app/core/wallet/in-app-core.ts:210-216
Timestamp: 2025-06-03T23:44:40.243Z
Learning: EIP7702 wallets do not need special handling for switching chains, unlike EIP4337 wallets which require reconnection when switching chains. In the switchChain method condition, EIP7702 should be intentionally excluded from the reconnection logic.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Use FORKED_ETHEREUM_CHAIN for mainnet interactions and ANVIL_CHAIN for isolated tests.
apps/portal/src/app/page.tsx (1)
Learnt from: jnsdls
PR: thirdweb-dev/js#7188
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/accounts/components/accounts-count.tsx:15-15
Timestamp: 2025-05-29T00:46:09.063Z
Learning: In the accounts component at apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/accounts/components/accounts-count.tsx, the 3-column grid layout (md:grid-cols-3) is intentionally maintained even when rendering only one StatCard, as part of the design structure for this component.
apps/portal/src/app/engine/v3/migrate/page.mdx (6)
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Keep documentation focused on developer experience and practical usage, and surface breaking changes prominently in PR descriptions.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Use FORKED_ETHEREUM_CHAIN for mainnet interactions and ANVIL_CHAIN for isolated tests.
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-25T02:13:08.257Z
Learning: Extensions should be modular, support composable functions, and provide TypeScript safety.
Learnt from: MananTank
PR: thirdweb-dev/js#7081
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/assets/create/create-token-page-impl.tsx:160-165
Timestamp: 2025-05-20T19:03:35.954Z
Learning: The `claimTo` function in Thirdweb's ERC20 extension does not require converting the quantity to the smallest units (using toUnits) as it handles unit conversion internally or works with the units as provided.
Learnt from: MananTank
PR: thirdweb-dev/js#7081
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/assets/create/create-token-page-impl.tsx:110-118
Timestamp: 2025-05-20T18:54:15.781Z
Learning: In the thirdweb dashboard's token asset creation flow, the `transferBatch` function from `thirdweb/extensions/erc20` accepts the raw quantity values from the form without requiring explicit conversion to wei using `toUnits()`. The function appears to handle this conversion internally or is designed to work with the values in the format they're already provided.
Learnt from: MananTank
PR: thirdweb-dev/js#7298
File: apps/dashboard/src/app/nebula-app/move-funds/move-funds.tsx:255-277
Timestamp: 2025-06-06T23:47:55.122Z
Learning: The `transfer` function from `thirdweb/extensions/erc20` accepts human-readable amounts via the `amount` property and automatically handles conversion to base units (wei) by fetching the token decimals internally. Manual conversion using `toWei()` is not required when using the `amount` property.
🧬 Code Graph Analysis (2)
apps/portal/src/app/Header.tsx (1)
apps/portal/src/components/others/theme/ThemeSwitcher.tsx (1)
  • ThemeSwitcher (10-33)
apps/portal/src/app/page.tsx (4)
apps/portal/src/icons/products/ConnectIcon.tsx (1)
  • ConnectIcon (1-21)
apps/portal/src/icons/products/BridgeIcon.tsx (1)
  • BridgeIcon (1-24)
apps/portal/src/icons/products/EngineIcon.tsx (1)
  • EngineIcon (1-21)
apps/portal/src/icons/products/NebulaIcon.tsx (1)
  • NebulaIcon (1-24)
🪛 LanguageTool
apps/portal/src/app/connect/page.mdx

[grammar] ~39-~39: Did you mean “are” or “were”?
Context: ..."thirdweb", }, }); # Wallets Wallets is the complete toolkit for connecting eve...

(SENT_START_NNS_IS)

apps/portal/src/app/engine/v3/configure-wallets/server-wallets/page.mdx

[misspelling] ~13-~13: This word is normally spelled as one.
Context: ...s can handle higher throughput by using multi-dimensional nonces. While thirdweb Transactions han...

(EN_COMPOUNDS_MULTI_DIMENSIONAL)

apps/portal/src/app/pay/faqs/page.mdx

[typographical] ~40-~40: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...ase check back the Payments modal after 20-40 minutes for the requested token. </Det...

(HYPHEN_TO_EN)

apps/portal/src/app/pay/customization/connectbutton/page.mdx

[uncategorized] ~42-~42: Do not mix variants of the same word (‘pre-fill’ and ‘prefill’) within a single text.
Context: ... in your application, you can choose to pre-fill the Payments purchase flow with `prefil...

(EN_WORD_COHERENCY)


[uncategorized] ~140-~140: You might be missing the article “the” here.
Context: ...t, which is set to "dark" by default. theme can be set to either "dark" , `"light...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

apps/portal/src/app/pay/fees/page.mdx

[style] ~11-~11: As a shorter alternative for ‘able to’, consider using “can”.
Context: ... To monetize applications or games, you are able to set a developer fee on each crypto-to-c...

(BE_ABLE_TO)

apps/portal/src/app/pay/page.mdx

[grammar] ~18-~18: ‘brand new’ seems to be a compound adjective before a noun. Use a hyphen: “brand-new”.
Context: ...s in NFT sales, bridge native tokens to brand new chains, send stablecoins between users,...

(CA_BRAND_NEW)


[uncategorized] ~20-~20: A comma might be missing here.
Context: ...coins between users, and more. To get started check out the [SDK functions](https://p...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~82-~82: Did you mean “are” or “were”?
Context: ...tus()` | ## Supported Chains Payments is supported on select EVM compatible chai...

(SENT_START_NNS_IS)

apps/portal/src/app/engine/v3/migrate/page.mdx

[style] ~176-~176: To reduce wordiness, try specifying a number or using “many” or “numerous” instead.
Context: ...r. --- ## Extension functions V2 has a large number of endpoints to do specific contract calls...

(LARGE_NUMBER_OF)


[style] ~178-~178: ‘In the meantime’ might be wordy. Consider a shorter alternative.
Context: ...ndpoints yet, but they are coming soon. In the meantime, if your backend is written in typescri...

(EN_WORDINESS_PREMIUM_IN_THE_MEANTIME)

⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: Size
  • GitHub Check: E2E Tests (pnpm, esbuild)
  • GitHub Check: E2E Tests (pnpm, webpack)
  • GitHub Check: E2E Tests (pnpm, vite)
  • GitHub Check: Unit Tests
  • GitHub Check: Build Packages
  • GitHub Check: Lint Packages
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (34)
apps/portal/src/app/pay/sidebar.tsx (2)

130-131: Rename looks good

The sidebar label now reads “Payments”, matching the new product name. No other changes required here.


99-101: [web_search]

Does https://pay.thirdweb.com/reference exist and represent the official Thirdweb Payments API reference?
apps/portal/src/app/engine/v2/sidebar.tsx (1)

166-167: Sidebar label updated — all good

The root name property is now “Transactions”, aligning with the rebrand.

apps/portal/src/app/engine/v3/troubleshoot/page.mdx (1)

3-5: Consistent terminology but double-check “Transactions Cloud” offering

Heading and summary were updated correctly. Just make sure the managed product is indeed marketed as “Transactions Cloud” everywhere else (support docs, UI, billing) to avoid user confusion.

apps/portal/src/app/pay/troubleshoot/page.mdx (2)

3-3: Title update confirmed

Heading now reflects “Payments”. Looks good.


15-15: Good catch on service name

Reference to “Payments service” is correct. No further action.

apps/portal/src/app/connect/page.mdx (1)

81-88: ```shell
#!/bin/bash
echo "== Directory tree under apps/portal/src/app/pay =="
ls -R apps/portal/src/app/pay


</details>
<details>
<summary>apps/portal/src/app/pay/guides/cross-chain-swapping/page.mdx (1)</summary>

`13-24`: **Branding update looks good**

All references correctly switched to “Payments”; no issues spotted in the modified metadata and headings.

</details>
<details>
<summary>apps/portal/src/app/pay/supported-chains/page.mdx (1)</summary>

`5-15`: **LGTM – consistent re-branding**

Title, description and link text now align with “Payments”.

</details>
<details>
<summary>apps/portal/src/app/pay/guides/smart-accounts/page.mdx (1)</summary>

`70-90`: **Inconsistent property names in example code**

`step.transactions[0].chain` (line 113 below) and `Bridge.status({ … chainId … })` use different keys (`chain` vs `chainId`).  
Unless `transactions[x]` really exposes **both** properties, readers will get a runtime error when copy-pasting.

```diff
-    chain: step.transactions[0].chain,
+    chainId: step.transactions[0].chainId,

Double-check the SDK typings and keep the same identifier throughout the snippet.

apps/portal/src/app/pay/onramp-providers/page.mdx (1)

15-17: LGTM – content update only

Branding replacement looks correct and no functional code is involved.

apps/portal/src/app/pay/faqs/page.mdx (1)

48-49: Verify link path after rebrand

/connect/pay/onramp-providers still lives under the old “connect” namespace.
If the docs were moved to /pay/onramp-providers, please update the link.

apps/portal/src/app/pay/guides/onramp-integration/page.mdx (1)

199-200: Confirm external URL reflects new branding

The API reference still points to bridge.thirdweb.com.
If the public endpoint was renamed, update accordingly; otherwise ignore.

apps/portal/src/app/pay/guides/nft-checkout/page.mdx (1)

695-696: Branding consistency

Footer is now “Powered by thirdweb Payments” – 👍.
No action needed, just acknowledging consistency.

apps/portal/src/app/pay/fees/page.mdx (1)

7-8: Clarify phrasing

-Understand how protocol, developer, and onramp fees work with Payments.
+Understand how protocol, developer, and onramp fees work with Payments.

Sentence is fine; no change required.

apps/portal/src/app/engine/v3/migrate/page.mdx (1)

242-244: Update namespace mention

Transactions namespace link text points to #engine.
Confirm the anchor was updated; otherwise users land on a 404.

apps/portal/src/app/Header.tsx (3)

36-44: Navigation link updates look consistent with the rebranding effort.

The systematic renaming from "Connect" → "Wallets", "Bridge" → "Payments", and "Engine" → "Transactions" aligns with the PR's rebranding objectives.


184-184: Support link label updated appropriately.

The change from "Get thirdweb support" to "Articles" provides clearer navigation context for users.


219-232: Verify the intentional reordering of header components.

The GitHub icon and ThemeSwitcher components have been reordered in the XL layout. Please confirm this visual change aligns with the intended UI design.

apps/portal/src/app/engine/v3/sidebar.tsx (2)

85-85: Sidebar name updated consistently with rebranding.

The change from "Engine" to "Transactions" aligns with the overall product rebranding effort.


48-48: ```shell
#!/bin/bash

Verify that the new Next.js route for "server-wallets" exists and contains a page

1. Check for a directory named "server-wallets" under configure-wallets

echo "Looking for route directory:"
fd "server-wallets" --type d apps/portal/src/app/engine/v3/configure-wallets/

2. If found, list its contents to confirm a page file exists (page.tsx or page.mdx)

echo -e "\nListing contents of the server-wallets directory:"
fd "server-wallets" --type d apps/portal/src/app/engine/v3/configure-wallets/ | while read dir; do
echo "Directory: $dir"
ls -1 "$dir"
done


</details>
<details>
<summary>apps/portal/src/app/engine/v3/get-started/page.mdx (3)</summary>

`7-45`: **Comprehensive documentation updates align with rebranding.**

The systematic replacement of "Engine" with "Transactions" throughout the documentation is thorough and consistent with the product rebranding effort.

---

`58-249`: **Verify API endpoint URLs are still valid after rebranding.**

The code examples still use `engine-cloud-dev-l8wt.chainsaw-dev.zeet.app` endpoints. Please confirm whether these URLs remain valid or if they should be updated to reflect the "Transactions" branding.

---

`258-258`: **SDK description updated consistently.**

The description now correctly states that the SDK signs transactions to "Transactions" instead of "Engine".

</details>
<details>
<summary>apps/portal/src/app/engine/v3/typescript-sdk/page.mdx (3)</summary>

`1-7`: **Title and description updates are consistent with rebranding.**

The documentation title and SDK description have been properly updated to reflect the change from "Engine" to "Transactions".

---

`23-24`: **Import statement updated correctly.**

The import has been properly changed from "Engine" to "Transactions".

---

`52-52`: **Comment updated consistently.**

The comment now correctly references sending transactions via "Transactions".

</details>
<details>
<summary>apps/portal/src/app/engine/v3/faq/page.mdx (1)</summary>

`3-28`: **FAQ content updated comprehensively for rebranding.**

All references have been systematically updated from "Engine" to "Transactions" while maintaining the accuracy and usefulness of the FAQ content. The new FAQ entry explaining the difference between "Transactions Cloud" and "Dedicated" adds valuable clarity for users.

</details>
<details>
<summary>apps/portal/src/app/pay/get-started/page.mdx (1)</summary>

`16-16`: **LGTM: Consistent rebranding from Universal Bridge to Payments**

The rebranding changes are consistent throughout the documentation, updating metadata, titles, descriptions, and content text while preserving all technical accuracy and code examples.



Also applies to: 19-19, 21-21, 26-26, 42-42, 234-234, 267-267

</details>
<details>
<summary>apps/portal/src/app/page.tsx (2)</summary>

`166-166`: **Good layout adjustment for additional cards**

Expanding to 3 columns accommodates the new cards while maintaining good visual balance.

---

`168-168`: **LGTM: Consistent rebranding of existing products**

The rebranding from "Connect" to "Wallets", "Universal Bridge" to "Payments", and "Engine" to "Transactions" is applied consistently across all cards.



Also applies to: 171-171, 177-177, 183-184

</details>
<details>
<summary>apps/portal/src/app/engine/v3/page.mdx (2)</summary>

`8-8`: **LGTM: Comprehensive rebranding from Engine to Transactions**

The rebranding is consistent throughout the documentation, updating metadata, headings, content, and product tier names appropriately.



Also applies to: 12-12, 14-14, 19-20, 79-79, 92-92

---

`16-16`: **Verify GitHub repository reference consistency**

The GitHub link still points to "thirdweb-dev/engine" while the product is now called "Transactions". Verify if this is intentional (repository name unchanged) or if it should be updated to match the new branding.

</details>
<details>
<summary>apps/portal/src/app/pay/page.mdx (1)</summary>

`8-8`: **LGTM: Consistent rebranding from Universal Bridge to Payments**

The rebranding is comprehensive and maintains technical accuracy throughout the documentation while updating all metadata, headings, and content references.



Also applies to: 11-11, 13-13, 16-16, 18-21, 69-69, 82-82

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@vercel vercel bot temporarily deployed to Preview – wallet-ui June 27, 2025 05:12 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground June 27, 2025 05:12 Inactive
@vercel vercel bot temporarily deployed to Preview – nebula June 27, 2025 05:12 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb-www June 27, 2025 05:12 Inactive
@vercel vercel bot temporarily deployed to Preview – wallet-ui June 27, 2025 05:15 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb-www June 27, 2025 05:15 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground June 27, 2025 05:15 Inactive
@vercel vercel bot temporarily deployed to Preview – nebula June 27, 2025 05:15 Inactive
@vercel vercel bot temporarily deployed to Preview – wallet-ui June 27, 2025 05:20 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground June 27, 2025 05:20 Inactive
@vercel vercel bot temporarily deployed to Preview – nebula June 27, 2025 05:20 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb-www June 27, 2025 05:20 Inactive
Copy link

codecov bot commented Jun 27, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 51.92%. Comparing base (9d6739e) to head (5640d48).
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #7455   +/-   ##
=======================================
  Coverage   51.92%   51.92%           
=======================================
  Files         947      947           
  Lines       63932    63932           
  Branches     4216     4216           
=======================================
  Hits        33194    33194           
  Misses      30632    30632           
  Partials      106      106           
Flag Coverage Δ
packages 51.92% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@saminacodes saminacodes added the merge-queue Adds the pull request to Graphite's merge queue. label Jun 27, 2025
Copy link
Member Author

saminacodes commented Jun 27, 2025

Merge activity

CORE-0000

<!-- start pr-codex -->

---

## PR-Codex overview
This PR focuses on renaming and rebranding various components and documentation from `Universal Bridge` and `Engine` to `Payments` and `Transactions`, respectively, to better reflect their functionality and purpose.

### Detailed summary
- Renamed `Universal Bridge` to `Payments` across multiple files.
- Renamed `Engine` to `Transactions` across various components and documentation.
- Updated metadata and titles in numerous `.mdx` files to reflect the new branding.
- Changed references in UI components and layout files to match new naming conventions.
- Adjusted descriptions and summaries in documentation to align with the new terms.
- Updated links and API references to point to the correct services.

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`

<!-- end pr-codex -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Expanded the learning resources section with updated and additional cards, including new topics like "Contracts" and "Vault".

* **Style**
  * Updated navigation and sidebar labels for improved clarity (e.g., "Connect" to "Wallets", "Bridge" to "Payments", "Engine" to "Transactions").
  * Swapped the order of the GitHub icon and theme switcher in the header for better usability.

* **Documentation**
  * Renamed all references from "Universal Bridge" to "Payments" and from "Engine" to "Transactions" across guides, FAQs, and documentation.
  * Updated instructions, headings, and content to reflect new product names and improved clarity.
  * Added a new FAQ entry explaining the difference between "Transactions Cloud" and "Dedicated" infrastructure.
  * Updated links and navigation paths to match new terminology.
  * Adjusted terminology in wallet-related documentation to replace "Connect" with "Wallets".
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@vercel vercel bot temporarily deployed to Preview – thirdweb-www June 27, 2025 15:26 Inactive
@vercel vercel bot temporarily deployed to Preview – wallet-ui June 27, 2025 15:26 Inactive
@vercel vercel bot temporarily deployed to Preview – nebula June 27, 2025 15:26 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground June 27, 2025 15:26 Inactive
@graphite-app graphite-app bot merged commit 5640d48 into main Jun 27, 2025
22 of 23 checks passed
@graphite-app graphite-app bot deleted the rebrand-docs branch June 27, 2025 15:29
@graphite-app graphite-app bot removed the merge-queue Adds the pull request to Graphite's merge queue. label Jun 27, 2025
@vercel vercel bot temporarily deployed to Production – wallet-ui June 27, 2025 15:29 Inactive
@vercel vercel bot temporarily deployed to Production – thirdweb_playground June 27, 2025 15:29 Inactive
@vercel vercel bot temporarily deployed to Production – thirdweb-www June 27, 2025 15:29 Inactive
@vercel vercel bot temporarily deployed to Production – nebula June 27, 2025 15:29 Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Portal Involves changes to the Portal (docs) codebase.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants