{"id":13651678,"url":"https://github.com/leather-io/extension","last_synced_at":"2026-03-11T06:32:05.243Z","repository":{"id":36959978,"uuid":"203447698","full_name":"leather-io/extension","owner":"leather-io","description":"Leather browser extension","archived":false,"fork":false,"pushed_at":"2026-01-27T07:54:03.000Z","size":265510,"stargazers_count":333,"open_issues_count":409,"forks_count":160,"subscribers_count":33,"default_branch":"dev","last_synced_at":"2026-01-27T20:30:01.258Z","etag":null,"topics":["bitcoin","bitcoin-wallet","chrome-extension","cryptocurrency","react","stacks","stacks-wallet","typescript","wallet","web-extension","web3"],"latest_commit_sha":null,"homepage":"https://leather.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leather-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-08-20T20:14:18.000Z","updated_at":"2026-01-27T07:54:09.000Z","dependencies_parsed_at":"2023-09-01T09:14:13.775Z","dependency_job_id":"8da89eca-26c5-49b4-9efa-3c1fc6cf2af3","html_url":"https://github.com/leather-io/extension","commit_stats":{"total_commits":3935,"total_committers":69,"mean_commits":"57.028985507246375","dds":0.7473951715374841,"last_synced_commit":"742b38d1015c3ec997896541ebc590787c3d8502"},"previous_names":["hirosystems/stacks-wallet-web","blockstack/ux","hirosystems/wallet","leather-io/extension","leather-wallet/extension"],"tags_count":963,"template":false,"template_full_name":null,"purl":"pkg:github/leather-io/extension","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leather-io%2Fextension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leather-io%2Fextension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leather-io%2Fextension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leather-io%2Fextension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leather-io","download_url":"https://codeload.github.com/leather-io/extension/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leather-io%2Fextension/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30373460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","bitcoin-wallet","chrome-extension","cryptocurrency","react","stacks","stacks-wallet","typescript","wallet","web-extension","web3"],"created_at":"2024-08-02T02:00:51.473Z","updated_at":"2026-03-11T06:32:05.203Z","avatar_url":"https://github.com/leather-io.png","language":"TypeScript","funding_links":[],"categories":["Showcases"],"sub_categories":[],"readme":"# Leather\n\n[![Chrome Web Store](https://img.shields.io/chrome-web-store/stars/ldinpeekobnhjjdofggfgjlcehhmanlj?label=Chrome%20Web%20Store)](https://chromewebstore.google.com/detail/leather/ldinpeekobnhjjdofggfgjlcehhmanlj)\n[![coverage](https://raw.githubusercontent.com/leather-io/extension/gh-pages/badge.svg)](https://leather-io.github.io/extension/)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n[![storybook](https://raw.githubusercontent.com/storybooks/brand/master/badge/badge-storybook.svg)](https://storybook.leather.io)\n\nLeather is the most popular and trusted wallet for apps built on Bitcoin. Connect to apps and manage assets secured by Bitcoin and Bitcoin L2s with battle-tested wallet for the Stacks blockchain.\n\n[📚 See Leather Developer Documentation →](https://leather.gitbook.io/developers/home/welcome)\n\n[📩 Join the mailing list for updates →](https://forms.gle/sdZPu2jbX1AeQ8Fi9)\n\n### Contibuting\n\nPlease see our [contribution guide](.github/CONTRIBUTING.md)\n\n## Development\n\nThis application is a Web Extension. There is no ability to run it as a standalone web application.\n\nEach child of the `src` directory represents the script context in which it is ran.\n\n### Install packages\n\n```bash\npnpm i\n```\n\n### Dev mode\n\n```bash\npnpm dev\n```\n\n#### Optional: run test app\n\nWe bundle a test app to use along with the extension. It gives easy access to the various functions that the extension\ncan do.\n\nIn a separate terminal, run:\n\n```bash\npnpm dev:test-app\n```\n\n### Loading extension in your browser\n\nYou'll need to add it to your browser of choice. Leather only\nsupports Chromium and Firefox browsers. When you run `pnpm dev`, it will compile the application to the `/dist` folder\n\n- [Chrome instructions](https://developer.chrome.com/docs/extensions/mv3/faq/#faq-dev-01)\n- [Firefox instructions](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension#trying_it_out)\n\n## Testing\n\nSeveral testing scripts are available in [`package.json`](./package.json).\n\nThe integration tests expect the extension to be built prior to running. The extension can be built for tests with the command below.\n\n```bash\npnpm build:test\n```\n\nThe integration tests use Playwright, which requires the system to have the browsers it needs. The following command installs everything Playwright needs.\n\n```bash\npnpm playwright install --with-deps\n```\n\nNote that the installed browsers are tied to the version of Playwright being used, and it may be necessary to run the above command again in some situations, such as when upgrading Playwright or switching branches. [Read the documentation for more information](https://playwright.dev/docs/cli#install-system-dependencies).\n\nAll integration tests can be run using:\n\n```bash\npnpm test:integration\n```\n\nTo run a suite of tests you can use:\n\n```bash\npnpm playwright test specs/TEST.spec.ts\npnpm playwright test tests/specs --shard=3/8\n```\n\nTo get more information when running tests you can pass the `--debug` flag or the `--ui` flag to playwright.\n\nWhen running tests locally you must add the following to your `.env` file:\n\n```\nWALLET_ENVIRONMENT=testing\n```\n\n### Unit tests\n\nUnit tests can be run with vitest using:\n\n```bash\npnpm test:unit\n```\n\n### Code checks\n\nCode checks and unit tests can be run simultaneously:\n\n```bash\npnpm checks\n```\n\n## Production\n\n[See instructions on Leather.io to install from source](https://leather.io/install-extension)\n\nAlternatively, the following steps can be taken by _technical_ users with the latest version of node installed on their machines.\n\n### Build from source\n\nRun the following from within this repository's root directory if you've pulled it with Git:\n\n```bash\npnpm \u0026\u0026 pnpm prepare \u0026\u0026 pnpm build\n```\n\nThe extension is now built in the `./dist` folder.\n\n### Firefox reviewers\n\nTo build the extension in Firefox mode, the `TARGET_BROWSER=firefox` variable needs to be set.\n\n```bash\npnpm \u0026\u0026 pnpm prepare \u0026\u0026 TARGET_BROWSER=firefox pnpm build\n```\n\nNote that when building in a clean environment, some code may vary between this and the submitted build. This is because some variables are set within the scope of the production build's CI.\n\n## Security\n\nWe consider the security of our systems a top priority. But no matter how much effort we put into system security, there can still be vulnerabilities present.\n\nIf you discover a security vulnerability, please use one of the following means of communications to report it to us:\n\n- Report the security issue to our [HackerOne program](https://hackerone.com/leather_wallet)\n- Report the security issue directly at [security@leather.io](mailto:security@leather.io)\n\nPlease note this email is strictly for reporting security vulnerabilities. For support queries, contact [contact@leather.io](mailto:contact@leather.io). Your efforts to responsibly disclose your findings are sincerely appreciated and will be taken into account to acknowledge your contributions.\n\n### Audit Report\n\nIn Q1 2021, Leather partnered with [Least Authority](https://leastauthority.com/), a leading security consultancy with experience in the crypto space, to audit Leather. On April 29th 2021, after addressing the major concerns described in the initial findings, as well as a concluding sign off from the Least Authority team, a final report was delivered.\n\n[Download and read the full report here](https://github.com/leather-io/extension/blob/main/public/docs/least-authority-security-audit-report.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleather-io%2Fextension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleather-io%2Fextension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleather-io%2Fextension/lists"}