Files
86500d78bd chore(mobile): upgrade Tamagui from v1 to v2 (#7497)
* chore(mobile): upgrade Tamagui from v1 to v2

Upgrade all @tamagui/* packages from v1 (^1.126.3) to v2 (2.0.0-rc.26).
Replace deprecated @tamagui/animations-moti with animations-reanimated.
Rewrite SafeButton to use v2 compound component pattern (Button.Text)
with correct font weight, disabled state, and icon coloring.
Patch @tamagui/image for style override bug (upstream fix merged but
not yet on npm: https://github.com/tamagui/tamagui/pull/3966).

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

* fix(mobile): resolve Tamagui tokens in Loader before passing to SVG

The Loader component passes color directly to react-native-progress
(CircleSnail), which uses react-native-svg internally. SVG doesn't
understand Tamagui theme tokens like "$color", causing repeated
"not a valid color or brush" console warnings.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

* fix(mobile): center nav bar title in scrollable headers

Remove flex: 1 from headerTitle Animated.View so the native stack
header centers the title element itself. Add headerTitleAlign: 'center'
and match right spacer width (40px) to the back button circle.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

* fix(mobile): fix Tamagui v2 component API breakages

- SafeButton: rewrite with Button.Text compound pattern, add textColor
  prop for forced light-mode overrides, restore fontWeight 700 default
- SafeInput: replace removed `editable` prop with `readOnly`, use
  GetProps<StyledInput> to fix type conflicts, cast theme tokens
- SafeCard: use `src` instead of `source`, `objectFit` instead of
  `resizeMode` for Tamagui v2 Image
- ParametersButton: migrate from raw Button to SafeButton
- Badge: fix dark mode background token (backgroundMain → borderLight)
- Raw Buttons: move fontWeight to Button.Text in ImportSigner/Ledger
- Onboarding: migrate color prop to textColor for dark mode fix
- Assets errors: use secondary variant + textColor instead of inline bg

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

* fix(mobile): preserve element children and text-button accent color in SafeButton

- Only wrap string/number children in Button.Text; render element
  children (ActivityIndicator, Loader) directly to avoid invalid
  text-child nesting on native.
- Use theme.primary for the text variant so text-style buttons
  retain their accent color instead of blending with body text.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

* fix(mobile): replace raw Tamagui Button with SafeButton in ImportSuccess

The Copy button on the signer import success screen was broken after the
Tamagui v2 upgrade because it used a raw Tamagui Button. Replace it with
SafeButton (secondary, $sm) for consistent styling and v2 compatibility.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

* fix(mobile): fix Jest transform config for Tamagui v2 and update snapshots

Add tamagui and @tamagui/* to transformIgnorePatterns so Jest can parse
the ESM exports in Tamagui v2. Update 22 snapshots reflecting the new
style output and remove stale fontFamily assertion in DataRow test.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>

---------

Co-authored-by: Hanzo Dev <dev@hanzo.ai>
2026-03-20 16:39:59 +01:00
..