Jules 838d20c153 fix(wallet): recover from stuck transactions instead of breaking the session (#1316)
* fix(wallet): poll receipts on the node that took the broadcast

Chain 1 now proxies to the same `/alchemy` path `nodes.broadcastTransaction`
and `nodes.getNonce` use. A node that does not hold the transaction answers
receipt lookups with null forever.

* fix(wallet): only commit the nonce on a validated broadcast

The result was read unvalidated, so a broadcast that produced no transaction
still burned its nonce and gapped every later one. Failures now carry the
node's own reason instead of the status code.

* fix(wallet): reconcile the nonce down against an empty pool

Nothing lowered the local counter, so one dropped transaction left every
later one signed at a gapped nonce until the browser restarted. When the
node's pending and latest counts agree it holds nothing for the account, so
a counter above that is lowered once it has stayed ahead for 5 blocks.

* feat(wallet): detect and notify dropped transactions

A never-mined transaction kept its 30s alarm forever, since only receipt
`0x1` and `0x0` settled it. `eth_getTransactionByHash` is now the probe: a
null receipt means nothing on its own, but three consecutive polls where the
node has no record of the hash settle it as dropped. RPC failures do not
count towards that.

* fix(wallet): sync pending transactions from the background monitor

The page read the list once at mount and wrote its own copy back over the
monitor's removals, leaving settled transactions pending. It now watches the
key it shares with the monitor.

* fix(wallet): keep the earliest mark for a pending count

The post-send mark overwrote the block a held one carried, so every send
from the address restarted the 5-block window and the counter was never
lowered -- each retry only added another gapped transaction. `resolveNonce`
now reports when a mark for the pool count is already held.
2026-08-27 13:21:36 +00:00
2025-09-10 22:47:28 +09:00
2024-11-01 19:29:14 +01:00
2025-09-29 16:59:55 +09:00
2026-07-14 11:20:51 +02:00
2022-02-25 14:56:28 +01:00
2026-06-12 13:52:47 +09:00
2025-11-26 17:01:48 +09:00
2024-11-01 19:29:14 +01:00
2025-11-26 17:01:48 +09:00
2024-11-01 19:29:14 +01:00
2025-09-10 22:47:28 +09:00
2024-11-14 06:50:42 +01:00
2024-09-25 17:17:58 +02:00
2025-09-10 22:47:28 +09:00
2025-09-29 16:59:55 +09:00
2023-05-12 15:06:04 +02:00

status-web

CI

Packages for building user interfaces, websites, web applications, dapps, browser extensions, and APIs in the Status ecosystem.

Packages

Name Deployments Builds Description
@status-im/colors vercel npm version Auto-generated color palette based on our design system.
@status-im/icons vercel npm version Auto-generated icon library based on our design system.
@status-im/components vercel npm version Component library built with Radix UI, React Aria, Tailwind CSS.
@status-im/js npm version
@status-im/wallet
@status-im/eslint-config npm version Shared ESLint configuration for consistent code style across projects.

Apps

Name Deployments Builds Description
./apps/status.app vercel
./apps/get.status.app vercel Download-focused subset of status.app (home, apps, legal, security).
./apps/status.network vercel
./apps/hub vercel
./apps/connector chrome web store jenkins job Status Desktop Wallet extended to decentralised applications in your browser.
./apps/portfolio
./apps/wallet chrome web store jenkins job Easily view and manage your crypto portfolio in real time — Beta crypto wallet and Web3 portfolio tracker in one.
./apps/api

Prerequisites

Required:

Optional:

Stack

  • Turborepo: Manages our monorepo and speeds up builds
  • TypeScript: Adds type safety to our code
  • React: Our main library for building UIs
  • Radix UI / React Aria: Provides accessible UI primitives
  • Tailwind CSS: Used for styling
  • Vite: Our build tool and dev server
  • Storybook: For developing and showcasing components
  • ESLint: Keeps our code consistent and catches potential issues
  • Prettier: Formats our code

Getting Started

Clone the repository:

      git clone https://github.com/status-im/status-web.git
      cd status-web
      git submodule update --init --recursive

2. Initialize and update submodules:

      git submodule init
      git submodule update

[!TIP] If submodule URLs have changed (e.g., after a repo migration), sync them first:

git submodule sync --recursive
git submodule update --init --recursive

[!TIP] To update all submodules to the latest commit from their remote:

git submodule update --remote
  1. (Optional) If using Nix, enter development shell:

      nix develop
    
  2. Install dependencies:

     pnpm install
    
  3. Build all packages:

     pnpm build
    
  4. Run tests:

     pnpm test
    
  5. Start development mode:

     pnpm dev
    

Contributing

To contribute changes via a pull request:

  1. Fork the repository on GitHub: open status-im/status-web, click "Fork", and create your fork under your account.

  2. Clone your fork and add the official repo as upstream:

    git clone https://github.com/YOUR_USERNAME/status-web.git
    cd status-web
    git remote add upstream https://github.com/status-im/status-web.git
    git submodule update --init --recursive
    
  3. Create a branch, make your changes, then push to your fork:

    git checkout -b your-branch-name
    # make changes, then:
    git add .
    git commit -m "your commit message"
    git push origin your-branch-name
    
  4. Open a pull request on GitHub: go to your fork, click "Compare & pull request" for your branch, and open the PR against status-im/status-web (base: main).

Note

Keep your fork in sync before starting new work:

git fetch upstream
git checkout main
git merge upstream/main
git push origin main

Storybook

To view and interact with the components, you can run Storybook:

pnpm storybook

This will start the Storybook server, allowing you to browse and test components in isolation.

Sponsors

This project is sponsored by Browserstack.

S
Description
Packages for building user interfaces, websites, web applications, dapps, browser extensions, and APIs in the Status ecosystem.
Readme
353 MiB
Languages
TypeScript 82.4%
MDX 14.9%
JavaScript 1.7%
CSS 0.5%
Shell 0.3%
Other 0.2%