Thanks to visit codestin.com
Credit goes to github.com

Skip to content

REF: Use new icons package#8271

Merged
Overtorment merged 49 commits into
masterfrom
iconsp
Mar 2, 2026
Merged

REF: Use new icons package#8271
Overtorment merged 49 commits into
masterfrom
iconsp

Conversation

@marcosrdz

@marcosrdz marcosrdz commented Feb 3, 2026

Copy link
Copy Markdown
Member

Upgrade icons package and remove rn elements

@marcosrdz marcosrdz self-assigned this Feb 3, 2026
@socket-security

socket-security Bot commented Feb 3, 2026

Copy link
Copy Markdown

@marcosrdz marcosrdz added the testflight Upload iOS and macOS builds to Testflight. label Feb 3, 2026
@github-actions

github-actions Bot commented Feb 3, 2026

Copy link
Copy Markdown

✅ Build 7.2.4 (1770094673) has been uploaded to TestFlight and will be available for testing soon.

Comment thread components/Icon.tsx Outdated
@marcosrdz marcosrdz requested a review from limpbrains February 4, 2026 02:04
@github-actions

github-actions Bot commented Feb 4, 2026

Copy link
Copy Markdown

✅ Build 7.2.4 (1770171049) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

github-actions Bot commented Feb 4, 2026

Copy link
Copy Markdown

✅ Build 7.2.4 (1770171341) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

github-actions Bot commented Feb 4, 2026

Copy link
Copy Markdown

✅ Build 7.2.4 (1770178938) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

github-actions Bot commented Feb 4, 2026

Copy link
Copy Markdown

✅ Build 7.2.4 (1770178538) has been uploaded to TestFlight and will be available for testing soon.

@marcosrdz marcosrdz requested review from Copilot and removed request for Overtorment and limpbrains February 4, 2026 12:34
@marcosrdz marcosrdz mentioned this pull request Feb 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR removes the React Native Elements UI dependency and migrates icon usage to @react-native-vector-icons/*, adding lightweight in-repo replacements for common UI primitives (Icon, ListItem, Avatar, Badge, Divider) and updating screens/components accordingly.

Changes:

  • Removed @rneui/base / @rneui/themed and replaced usages with local components.
  • Migrated vector icons to the per-family @react-native-vector-icons/* packages; updated Metro + Jest config to support the new icon imports/mocks.
  • Updated several wallet/transaction screens and list rows (including sample-transaction handling and Coin Control list rendering).

Reviewed changes

Copilot reviewed 69 out of 72 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tests/unit/transaction-status.test.tsx Removes RNEUI themed mock now that RNEUI is no longer used.
tests/mocks/vector-icons.js Adds Jest mock for @react-native-vector-icons/* modules.
tests/e2e/bluewallet.spec.js Cleans up commented assertion line.
screen/wallets/signVerify.tsx Switches from RNEUI Icon to local components/Icon.
screen/wallets/addMultisigStep2.tsx Switches to local Icon and fixes Octicons type string.
screen/wallets/WalletsList.tsx Adds sample-transaction press behavior and disables navigation for samples.
screen/wallets/WalletTransactions.tsx Adds sample-transaction press behavior and disables navigation for samples.
screen/wallets/WalletExport.tsx Switches to local Icon.
screen/wallets/ViewEditMultisigCosigners.tsx Replaces RNEUI Badge/Icon with local components.
screen/wallets/ProvideEntropy.tsx Switches to local Icon.
screen/wallets/MultisigAdvanced.tsx Switches to local Icon.
screen/transactions/TransactionStatus.tsx Switches to local Icon.
screen/transactions/CPFP.js Replaces RNEUI Text with react-native Text.
screen/settings/IsItMyAddress.tsx Migrates icons to @react-native-vector-icons/* and divider to local Divider.
screen/settings/ElectrumSettings.tsx Replaces RNEUI Divider and updates ListItem usage after refactor.
screen/settings/About.tsx Migrates icons to @react-native-vector-icons/* and adjusts icon props.
screen/send/success.tsx Replaces RNEUI Text with react-native Text.
screen/send/psbtMultisig.tsx Switches to local Icon.
screen/send/create.tsx Switches to local Icon.
screen/send/SendDetails.tsx Switches to local Icon.
screen/send/Confirm.tsx Replaces RNEUI Text with react-native Text.
screen/send/CoinControl.tsx Replaces RNEUI components with local ones and refactors list row rendering.
screen/receive/AztecoRedeem.tsx Switches to local Icon.
screen/lnd/lnurlPay.tsx Switches to local Icon.
screen/lnd/lnurlAuth.tsx Switches to local Icon.
screen/lnd/lndViewInvoice.tsx Switches to local Icon.
screen/lnd/lndCreateInvoice.tsx Switches to local Icon.
screen/lnd/ScanLNDInvoice.tsx Switches to local Icon.
package.json Removes RNEUI deps; adds per-family vector-icons deps; bumps react-native-screens.
package-lock.json Locks dependency graph changes from removing RNEUI and adding vector-icons families.
navigation/helpers/getWalletTransactionsOptions.tsx Switches to local Icon.
metro.config.js Adds Metro aliases for legacy react-native-vector-icons/* import paths.
jest.config.js Removes @rneui from transform allowlist and maps vector-icons packages to a mock.
ios/Podfile.lock Updates pods for vector-icons family packages and react-native-screens.
ios/Localizable.xcstrings Adds a new localization entry and bumps xcstrings version.
ios/BlueWallet/Info.plist Adds FontAwesome6 + MaterialDesignIcons font entries.
components/platform/index.tsx Migrates vector icon imports to @react-native-vector-icons/* and updates rendering.
components/icons/TransactionPendingIcon.tsx Switches to local Icon.
components/icons/TransactionOutgoingIcon.tsx Switches to local Icon.
components/icons/TransactionOnchainIcon.tsx Switches to local Icon.
components/icons/TransactionOffchainIncomingIcon.tsx Switches to local Icon.
components/icons/TransactionOffchainIcon.tsx Switches to local Icon.
components/icons/TransactionIncomingIcon.tsx Switches to local Icon.
components/icons/TransactionExpiredIcon.tsx Switches to local Icon.
components/icons/SettingsButton.tsx Switches to local Icon and fixes alignment style.
components/addresses/AddressItem.tsx Removes RNEUI ListItem and renders a custom row layout.
components/WatchOnlyWarning.tsx Switches to local Icon.
components/WalletToImport.tsx Replaces RNEUI Text with react-native Text.
components/TransactionPendingIconBig.tsx Switches to local Icon.
components/TransactionListItem.tsx Extends item press behavior + props; integrates with refactored ListItem.
components/SettingsBlockExplorerCustomUrlListItem.tsx Removes RNEUI ListItem usage and renders a custom row layout.
components/SecondButton.tsx Switches to local Icon.
components/MultipleStepsListItem.tsx Switches to local Icon.
components/ManageWalletsListItem.tsx Replaces RNEUI swipeable list item with gesture-handler Swipeable.
components/ListItem.tsx Replaces RNEUI ListItem with an in-repo Pressable-based implementation.
components/InputAccessoryAllFunds.tsx Replaces RNEUI Text with react-native Text.
components/Icon.tsx Introduces a local icon wrapper over @react-native-vector-icons/*.
components/HeaderMenuButton.tsx Switches to local Icon.
components/DynamicQRCode.tsx Replaces RNEUI Text with react-native Text.
components/Divider.tsx Adds a local divider component.
components/CoinsSelected.tsx Switches from RNEUI Avatar to local Avatar.
components/CameraScreen.tsx Switches to local Icon.
components/Button.tsx Switches to local Icon.
components/BottomModal.tsx Switches to local Icon and updates FontAwesome6 type string.
components/BlurredBalanceView.tsx Switches to local Icon.
components/BlueBigCheckmark.tsx Switches to local Icon.
components/Badge.tsx Adds a local badge component.
components/Avatar.tsx Adds a local avatar component.
components/ArrowPicker.tsx Switches to local Icon and react-native Text.
components/AmountInput.tsx Switches RNEUI Badge/Icon to local components and updates badge styling.
components/AddWalletButton.tsx Switches to local Icon and fixes alignment style.
BlueComponents.js Replaces RNEUI Text/Icon usage with react-native Text + local Icon.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread BlueComponents.js Outdated
Comment on lines +3 to +4
import { Dimensions, Platform, Pressable, StyleSheet, Text, TextInput, View } from 'react-native';
import Icon from './components/Icon';

Copilot AI Feb 4, 2026

Copy link

Choose a reason for hiding this comment

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

BlueText previously wrapped @rneui/themed's Text, which supports heading props like h4. After switching to react-native's Text, those props are now forwarded to the native component (causing RN warnings about unknown props) and the heading styling is lost. Consider updating BlueText to explicitly support the subset of h* props used in the app (e.g., map h4 to a fontSize/fontWeight preset) and strip unsupported props before passing them to Text.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Comment thread screen/settings/About.tsx
Comment on lines 140 to 143
id: 'telegram',
title: loc.settings.about_sm_telegram,
leftIcon: <Icon name="telegram-plane" size={24} color={colors.foregroundColor} />,
leftIcon: <Icon name="telegram-plane" size={24} color={colors.foregroundColor} iconStyle="brand" />,
onPress: handleOnTelegramPress,

Copilot AI Feb 4, 2026

Copy link

Choose a reason for hiding this comment

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

@react-native-vector-icons/fontawesome5 doesn't support an iconStyle="brand" prop (that was from the RNEUI Icon API). For FontAwesome5, brand icons typically require the boolean brand prop (or otherwise selecting the correct style), otherwise icons like telegram-plane/github may not render. Update these icon usages to the props supported by FontAwesome5.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Comment thread screen/settings/About.tsx
Comment on lines 147 to 150
id: 'github',
title: loc.settings.about_sm_github,
leftIcon: <Icon name="github" size={24} color={colors.foregroundColor} />,
leftIcon: <Icon name="github" size={24} color={colors.foregroundColor} iconStyle="brand" />,
onPress: handleOnGithubPress,

Copilot AI Feb 4, 2026

Copy link

Choose a reason for hiding this comment

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

Same issue as above: iconStyle="brand" isn't a supported prop on @react-native-vector-icons/fontawesome5. Use the appropriate FontAwesome5 style-selection props (e.g. brand) so the github icon reliably renders.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Comment thread components/Divider.tsx
Comment on lines +12 to +17
const styles = StyleSheet.create({
divider: {
height: StyleSheet.hairlineWidth,
backgroundColor: 'rgba(0,0,0,0.12)',
alignSelf: 'stretch',
},

Copilot AI Feb 4, 2026

Copy link

Choose a reason for hiding this comment

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

The divider color is hard-coded to rgba(0,0,0,0.12), which won't adapt to theming (and can be nearly invisible in dark mode). Since most components use themed border colors (e.g. colors.formBorder in components/ListItem.tsx), consider wiring this Divider to useTheme() or at least exposing a color prop and defaulting to the theme's border color.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Comment thread package.json Outdated
"react-native-svg": "15.12.1",
"react-native-tcp-socket": "6.3.0",
"react-native-vector-icons": "10.2.0",
"@react-native-vector-icons/entypo": "^12.0.0",

Copilot AI Feb 4, 2026

Copy link

Choose a reason for hiding this comment

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

This new dependency uses a caret range (^12.0.0) while the rest of dependencies are pinned to exact versions. Using a range here can lead to non-reproducible installs and unexpected icon/font changes; consider pinning it to an exact version for consistency with the rest of the file.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Comment on lines 536 to 542
<SafeAreaFlatList
ListHeaderComponent={tipCoins}
data={utxos}
renderItem={renderItem}
keyExtractor={item => `${item.txid}:${item.vout}`}
contentInset={styles.listContent}
contentContainerStyle={styles.listContent}
/>

Copilot AI Feb 4, 2026

Copy link

Choose a reason for hiding this comment

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

styles.listContent is now used for two different purposes: (1) as the inner row content wrapper in OutputList/OutputModal, and (2) as the contentContainerStyle for SafeAreaFlatList. Applying flex: 1 and marginLeft: 12 to the FlatList content container will shift/resize the entire list (including the header) and is unlikely to be intended. Consider splitting this into two separate styles (e.g. listContentContainer vs rowContent) and keep contentContainerStyle focused on padding/margins for the list as a whole.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Copilot AI commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

@marcosrdz I've opened a new pull request, #8276, to work on those changes. Once the pull request is ready, I'll request review from you.

@limpbrains

Copy link
Copy Markdown
Collaborator
  • Migrate from @rneui/themed Icon to custom components/Icon.tsx wrapper with type-safe name + type props (discriminated via generics so TypeScript catches invalid
    icon names at compile time)
  • Upgrade @react-native-vector-icons/* scoped packages to latest (12.3–12.4)
  • Remove @react-native-vector-icons/octicons (replaced with material equivalents)
  • Delete 12 stale legacy font files from android/app/src/main/assets/fonts/ that were causing glyph mismatches on Android
  • Convert BlueComponents.js to TypeScript, move inline styles to StyleSheet.create
  • Set default size=24 on Icon component

@github-actions

Copy link
Copy Markdown

✅ Build 7.2.4 (1771252389) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

Copy link
Copy Markdown

✅ Build 7.2.4 (1771253920) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

Copy link
Copy Markdown

✅ Build 7.2.4 (1771254541) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

Copy link
Copy Markdown

✅ Build 7.2.4 (1771254227) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

Copy link
Copy Markdown

✅ Build 7.2.4 (1771265703) has been uploaded to TestFlight and will be available for testing soon.

@limpbrains

Copy link
Copy Markdown
Collaborator

Squash it

@Overtorment Overtorment left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

the rest looks good

Comment thread metro.config.js Outdated
stream: require.resolve('stream-browserify'),
crypto: require.resolve('crypto-browserify'),
net: require.resolve('react-native-tcp-socket'),
tls: require.resolve('react-native-tcp-socket'),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why did it move? wasnt supposed to

@github-actions

github-actions Bot commented Mar 1, 2026

Copy link
Copy Markdown

✅ Build 7.2.7 (1772325517) has been uploaded to TestFlight and will be available for testing soon.

@github-actions

github-actions Bot commented Mar 1, 2026

Copy link
Copy Markdown

✅ Build 7.2.7 (1772400925) has been uploaded to TestFlight and will be available for testing soon.

@marcosrdz marcosrdz requested a review from Overtorment March 2, 2026 11:36
@Overtorment Overtorment merged commit 37916ab into master Mar 2, 2026
12 of 13 checks passed
@Overtorment Overtorment deleted the iconsp branch March 2, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testflight Upload iOS and macOS builds to Testflight.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants