| Reference | Contribution |
|---|---|
| #360 | Memory leak fix in bc-buttonPerformance Problem Store subscriptions created within the bc-button component were never cleaned up on unmount, causing memory leaks during repeated mounts and state updates. Over time, this could degrade performance in long-running applications using Bitcoin Connect. Proposed Fix Implemented proper unsubscribe logic using component lifecycle callbacks, ensuring subscriptions are consistently cleaned up when the component is disposed. |
| #49 | npm install workaround for Storybook peer conflictsValidation
Problem Fresh clones of the repository failed during npm install due to unresolved Storybook peer dependency conflicts. The error originated from transitive dependencies, not application code, making the project appear broken to new contributors. Proposed Fix Documented a safe and reproducible workaround (npm install --legacy-peer-deps) in the README to unblock local development while upstream dependencies stabilize. |
| #50 | Keyboard accessibility for nostr-profile-badgeAccessibility Problem The nostr-profile-badge component relied entirely on mouse interaction, making it inaccessible to keyboard-only users and assistive technologies. This excluded users who navigate via keyboard and violated basic accessibility expectations for interactive identity components. Proposed Fix Implemented keyboard activation using standard key events, added proper focus handling, and resolved nested interactive element conflicts to ensure predictable behavior across input methods. |
| #3437 | Windows npm install workaroundCompatibility Problem On Windows systems, npm install failed due to unresolved peer dependency conflicts in the React Native toolchain. This prevented Windows developers from building and contributing to Zeus Wallet, a production Lightning Network application. Proposed Fix Documented a stable npm install --legacy-peer-deps workaround in the README, restoring a working setup path without modifying the existing dependency graph. |
| #3441 | Optional cross-env start scriptCompatibility
Problem NODE_ENV was set differently across Windows shells (PowerShell, CMD, Git Bash), leading to inconsistent runtime behavior and confusing environment-specific bugs during local development and testing. Proposed Fix Added an optional start:prod script using cross-env to provide consistent environment variable handling across platforms, without altering or breaking existing scripts. |
| #3448 | Frontend validation for NWC inputsValidation
## PROJECT: Alby / Bitcoin Connect Problem Invalid Nostr Wallet Connect (NWC) inputs were only detected after initiating deeper flows, resulting in generic error messages that obscured the real cause of failure. For wallet software, delayed and unclear validation reduces user trust and increases support overhead. Proposed Fix Implemented early frontend validation using existing localized strings, allowing input issues to be detected and communicated before network or wallet operations begin. |
| #1992 | Accessibility semantics for ResponsiveButtonAccessibility Problem Icon-only buttons lacked accessible labels and proper disabled semantics, making their purpose unclear to screen-reader users and causing disabled states to be incorrectly announced. Proposed Fix Added descriptive aria-labels, applied correct aria-disabled semantics, and marked decorative icons as hidden from the accessibility tree to ensure accurate announcements by assistive technologies. |
| #52 | Disabled state support for nostr-follow-buttonAccessibility
Problem The follow button remained interactive during loading and unavailable states, allowing users to trigger actions that could not be completed. This caused inconsistent behavior for keyboard users and unclear state announcements for screen readers. Proposed Fix Implemented proper disabled-state handling by applying the disabled attribute, blocking focus when unavailable, and improving ARIA semantics to accurately reflect interaction state. |
| #606 | Investment amount validation feedback (Angor)Validation
Problem Invalid investment amounts were not clearly communicated to users, resulting in silent failures or ambiguous feedback during a financial interaction. In investment-related flows, unclear validation increases user error and reduces confidence in the platform. Proposed Fix Added UI-level validation feedback by leveraging the existing validity state, surfacing precise and immediate error messages without modifying backend logic. |
| #1992 | Accessibility semantics exploration (Closed)Accessibility Problem Accessibility semantics were initially implemented at an inappropriate abstraction level, increasing complexity and making the solution harder to maintain across the component system. Proposed Fix Closed the PR after maintainer feedback, documented the learnings, and adjusted the approach in subsequent accessibility-focused contributions to apply semantics at the correct layer. |
| #997 | Windows Compatibility for Dev ScriptsCompatibility Problem Local development for JoinMarket Web UI silently assumed a Unix shell environment. On Windows, environment variables failed to resolve, blocking contributors at the very first setup step. This disproportionately excluded Windows developers from contributing to a Bitcoin privacy project. Proposed Fix Replaced inline Unix-style environment variables with cross-env, ensuring scripts behave consistently across Windows, macOS, and Linux — without changing existing workflows. |
| #361 | Accessibility & interaction refactor for bc-pay-buttonAccessibility Problem The bc-pay-button relied on non-semantic div elements for user interaction, preventing reliable keyboard navigation and limiting screen-reader support in a payment-related component. Inaccessible payment interactions can block users entirely and reduce trust in financial tooling. Proposed Fix Refactored the component to use a semantic button element, added appropriate ARIA attributes, and introduced aria-live announcements to communicate state changes to assistive technologies. |