You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#591 (styling spike) and #579 (primitives spike, #578) were coordinated but answered somewhat independently: #579 recommended @rn-primitives specifically because it's style-agnostic and doesn't force #591's hand. Revisiting that: Tamagui and Gluestack UI are broader kits that solve primitives and styling together, and #591 explicitly says a kit choice in the #578 spike "likely decides this too."
This issue tests Tamagui as that combined choice. A companion spike for Gluestack should follow the same shape before a final decision, since the two kits push the styling answer in different directions (Tamagui ≈ #591's "runtime/compiled style objects with theme" option; Gluestack, being built on NativeWind, ≈ #591's "utility/atomic CSS" option). Scope of #578 and #591 may be merged or resized based on the outcome — that's an accepted possibility, not a scope violation.
Why Tamagui specifically needs its own verification pass
Docs research surfaced numbers and claims that don't fully agree with each other or with #579's own findings, and #579 already caught one research-vs-reality gap (web bundle cost from @rn-primitives, assumed negligible, measured at +84 kB raw). Don't trust the following without a real PoC against this repo's Vite toolchain:
Bundle size: cited anywhere from ~20 kB gzipped (core, compiler active) to ~180 kB (likely uncompiled/naive import). The gap depends entirely on whether Tamagui's Babel compiler is actually wired into and running in this Vite build — the same class of assumption Spike: choose the cross-platform primitive strategy (and resolve the ds-entry contract) #579's PoC had to correct for react-native-web.
Accessibility parity: Tamagui's Dialog/Popover are Tamagui's own implementations (credits Radix and Floating UI as influences, uses a shared FocusScope), not literally @radix-ui/react-* on web the way @rn-primitives is. This is a real, unverified parity gap against the current Radix-based app and against Spike: choose the cross-platform primitive strategy (and resolve the ds-entry contract) #579's PoC, which found exact parity by construction.
Run the existing Tooltip test suite (5 cases covering click/tap-to-toggle per Unify tap/click tooltip behaviour #568, hover suppression, focus, escape-to-close, aria-describedby) against the Tamagui version and report pass/fail — don't assume parity, verify it.
Note on whether a companion Gluestack PoC is still warranted given the findings here
Notes
Related: #578, #579, #588, #590, #591. Timebox it the same way #579 and #591 were timeboxed — this is still a spike, not a commitment to adopt Tamagui.
Summary
#591 (styling spike) and #579 (primitives spike, #578) were coordinated but answered somewhat independently: #579 recommended
@rn-primitivesspecifically because it's style-agnostic and doesn't force #591's hand. Revisiting that: Tamagui and Gluestack UI are broader kits that solve primitives and styling together, and #591 explicitly says a kit choice in the #578 spike "likely decides this too."This issue tests Tamagui as that combined choice. A companion spike for Gluestack should follow the same shape before a final decision, since the two kits push the styling answer in different directions (Tamagui ≈ #591's "runtime/compiled style objects with theme" option; Gluestack, being built on NativeWind, ≈ #591's "utility/atomic CSS" option). Scope of #578 and #591 may be merged or resized based on the outcome — that's an accepted possibility, not a scope violation.
Why Tamagui specifically needs its own verification pass
Docs research surfaced numbers and claims that don't fully agree with each other or with #579's own findings, and #579 already caught one research-vs-reality gap (web bundle cost from
@rn-primitives, assumed negligible, measured at +84 kB raw). Don't trust the following without a real PoC against this repo's Vite toolchain:react-native-web.FocusScope), not literally@radix-ui/react-*on web the way@rn-primitivesis. This is a real, unverified parity gap against the current Radix-based app and against Spike: choose the cross-platform primitive strategy (and resolve the ds-entry contract) #579's PoC, which found exact parity by construction.variantsAPI look like a strong match for this app's existing token work (Consolidate the two parallel spacing/variable systems into one token source #590) andapply-button-variant/apply-list-variant, but "looks like a match on paper" is exactly the kind of claim Spike: choose the cross-platform primitive strategy (and resolve the ds-entry contract) #579 disproved once already (the controlled-open-prop assumption).Scope of the PoC
indexchunk.apply-text-style+ a variant mixin + a breakpoint — the hard case, not the easy one@rn-primitives/tooltipPoC (branchclaude/rn-primitives-library-4ny4sa) rather than a fresh, unrelated data point.aria-describedby) against the Tamagui version and report pass/fail — don't assume parity, verify it.Acceptance criteria
.claude/plans/(matching the format of.claude/plans/issue-579-rn-primitives-library-exploration.md)@rn-primitivesrecommendation, and what that means for Epic: Replace Radix UI with cross-platform primitives (RN/Expo migration prep) #578's and Spike: choose the cross-platform styling approach #591's remaining sub-issues (kept separate, merged, or resized)Notes
Related: #578, #579, #588, #590, #591. Timebox it the same way #579 and #591 were timeboxed — this is still a spike, not a commitment to adopt Tamagui.