Skip to content

chore(mobile): remove unused NativeWind tooling (#434) - #836

Merged
thomasluizon merged 3 commits into
redesign/mainfrom
chore/ticket-434-nativewind-residue
Sep 6, 2026
Merged

thomasluizon merged 3 commits into
redesign/mainfrom
chore/ticket-434-nativewind-residue

Conversation

@thomasluizon

@thomasluizon thomasluizon commented Sep 5, 2026 •

Copy link
Copy Markdown
Owner

Removes unused mobile NativeWind configuration, dependencies, and lockfile entries now that mobile uses React Native StyleSheet.

Closes thomasluizon/orbit-tickets#434.

Deletes mobile global.css, tailwind.config.js, and nativewind-env.d.ts; removes NativeWind JSX settings, test aliases and unused re-export files, and hoisting links. Mobile Tailwind had no consumer outside that scaffolding. Web retains its own Tailwind dependencies. Metro and Babel are unchanged.

Repository guidance now names React Native StyleSheet, and Sonar no longer excludes the deleted Tailwind configuration. The answered apps/mobile/questions.md is deleted, with no root question added.

The lockfile preserves the existing cleanup exactly: 340 deletions and one metadata insertion prune NativeWind, its private dependency tree, and mobile Tailwind; esprima becomes development-only. A complete parsed-entry comparison against untouched redesign/main at af6e346 finds zero Expo entry differences and zero retained package version differences.

The Google auth callback accumulator uses [string, string][], preserving runtime behavior while satisfying URLSearchParams after removal of NativeWind ambient types. The installed declaration at node_modules/@types/node/url.d.ts:913 accepts URLSearchParams | string | Record<string, string | readonly string[]> | Iterable<[string, string]> | ReadonlyArray<[string, string]>. No new external response fields are read.

Validation

All 1,893 mobile tests in 262 files, mobile type checking, both repository tooling and hook harnesses, Mobile StyleSheet Guard, residue searches, copy checks, dash checks, and commit hooks pass. Metro and Babel have no diff against the base. No browser or server was started.

The implementation's Android release build passed in run 33997526288, job 101390538846: https://github.com/thomasluizon/orbit-ui-mobile/actions/runs/33997526288/job/101390538846. This revision changes guidance and Sonar exclusions and deletes the answered question; it changes no mobile source, manifest, or lockfile.

D83: Known artifact

Expo SDK Pin is red and reproduces on the untouched redesign/main base at af6e346, as verified in the ticket's correction. It is tracked separately in thomasluizon/orbit-tickets#436 and is not a regression introduced by this cleanup. Run 33997547962, job 101390594315 (Expo SDK Pin), fails at CI=1 npx expo install --check: https://github.com/thomasluizon/orbit-ui-mobile/actions/runs/33997547962/job/101390594315.

The local online check reproduces the identical seven patch mismatches: expo 57.0.19 expects ~57.0.20; expo-build-properties 57.0.16 expects ~57.0.17; expo-image-picker 57.0.15 expects ~57.0.16; expo-modules-core 57.0.15 expects ~57.0.16; expo-notifications 57.0.16 expects ~57.0.17; expo-router 57.0.18 expects ~57.0.19; expo-sharing 57.0.17 expects ~57.0.18. Expo resolves its expected set from remote compatibility data. The Expo resolutions and gate are preserved as directed; no SDK upgrade or expo install --fix was performed.

Parity exemption: this removes unused mobile styling platform adapter tooling and tightens a type in the mobile authentication adapter, with no runtime or UI behavior change.

Assumptions

  • Remove TypeScript, Vitest, and hoisting references as required dependency cleanup, rather than retaining consumers of the deleted NativeWind package.
  • Include the stale styling references in the local audit rubric and design setup guidance as repository guidance covered by round 3, rather than leaving those references behind; review policy is unchanged.

@thomasluizon thomasluizon added the parity:exempt Parity exemption: platform adapter or enumerated layout-shell divergence; justify in PR body label Sep 5, 2026
@vercel

vercel Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
orbit-ui-mobile-web Ignored Ignored Sep 6, 2026 12:11am UTC

Request Review

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ℹ️ The package and runtime cleanup is sound; one remaining residue set should be cleaned up.

Reviewed changes across the complete initial diff, including the mobile dependency graph, TypeScript/Vitest configuration, hoisting script, auth callback typing, generated lockfile changes, and repository documentation.

  • NativeWind removal removes the mobile package, Tailwind config and CSS entrypoint, ambient types, JSX runtime aliases, test mocks, and package-specific hoisting links.
  • Lockfile pruning removes NativeWind, React Native CSS interop, their private dependency tree, and the mobile-only Tailwind entry while retaining web Tailwind.
  • Auth callback typing narrows the URL parameter accumulator to tuple entries without changing filtering or serialization behavior.

ℹ️ NativeWind residue remains in repository guidance

Six tracked references still describe NativeWind as the mobile styling adapter, and Sonar still excludes the deleted Tailwind config. Leaving these behind makes the parity and design guidance factually incorrect after this PR and leaves dead analysis configuration.

Technical details
# Remove the remaining NativeWind references

## Affected sites
- `CLAUDE.md:15` — parity guidance still names NativeWind as the mobile styling adapter.
- `.claude/skills/pr-review/rubric.md:214` — the review rubric retains the same obsolete adapter description.
- `design/brand/SETUP.md:66` — design setup says mobile uses the NativeWind idiom.
- `sonar-project.properties:19` — exclusions still list the deleted `apps/mobile/tailwind.config.js`.
- `sonar-project.properties:74` and `sonar-project.properties:90` — duplication rationale still attributes mobile presentation to NativeWind.

## Required outcome
- Describe mobile's current React Native `StyleSheet` adapter consistently and remove the dead Tailwind config exclusion so the repository no longer claims NativeWind remains in use.

Pullfrog  | Fix it ➔ | View workflow run | Using GPT Sol | 𝕏

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ℹ️ No critical issues in the new commit; one minor documentation correction is inline.

Reviewed changes since the prior Pullfrog review: commit 868790e7 added the Expo SDK pin decision record.

  • Compatibility evidence: Recorded the base, branch, and installed Expo versions alongside the online compatibility check's expected patches.
  • Scope boundary: Documented that round 2 changed no dependency, lockfile, runtime, or gate behavior and that the PR remains blocked.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using GPT Sol | 𝕏

Comment thread apps/mobile/questions.md Outdated
@sonarqubecloud

sonarqubecloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes since the prior Pullfrog review at 868790e7: commit 76e84e16 completed the NativeWind residue cleanup and removed the answered Expo decision record.

  • Updated styling guidance — Replaced the remaining NativeWind references in parity, review, and design guidance with React Native StyleSheet.
  • Cleaned Sonar configuration — Removed the deleted mobile Tailwind config exclusion and updated stale platform-adapter rationale.
  • Removed the answered question — Deleted apps/mobile/questions.md, eliminating its unqualified private-ticket references while the Expo pin conflict remains separately tracked.

Pullfrog  | View workflow run | Using GPT Sol | 𝕏

@thomasluizon

Copy link
Copy Markdown
Owner Author

Merge readiness disclosure (D83)

Merging with Expo SDK Pin red. Stating the evidence, because D83 requires a known artifact to be disclosed rather than merged past quietly.

The red is not caused by this branch. Reproduced on a clean redesign/main checkout at af6e3460, with no branch changes, from apps/mobile:

CI=1 npx expo install --check

expo@57.0.19 - expected version: ~57.0.20
expo-build-properties@57.0.16 - expected version: ~57.0.17
expo-image-picker@57.0.15 - expected version: ~57.0.16
expo-modules-core@57.0.15 - expected version: ~57.0.16
expo-notifications@57.0.16 - expected version: ~57.0.17
expo-router@57.0.18 - expected version: ~57.0.19
expo-sharing@57.0.17 - expected version: ~57.0.18
Found outdated dependencies
exit 1

The base fails with the identical seven packages. expo install --check resolves the expected set from remote compatibility data, so it began failing on unchanged code once Expo published new patches. The gate is time-dependent, not diff-dependent.

This branch changes no Expo resolution. A programmatic comparison of every parsed entry in package-lock.json between the base and this branch returns [] for Expo packages. The 340-line lockfile reduction prunes NativeWind, its private dependency tree, and mobile Tailwind, and changes no retained package version.

An earlier round of this ticket wrongly blamed the branch for this failure. That was my error, corrected on the ticket.

Filed separately as thomasluizon/orbit-tickets#436, repo-wide, because it will red-gate every mobile pull request until the pins are aligned.

What is green: approved by Pullfrog at the exact head, zero unresolved threads, empty review body, 26 checks passing, and the Android release build passing, which is the evidence that matters for native module changes.

🤖 Generated with Claude Code

@thomasluizon
thomasluizon merged commit 89b0ccd into redesign/main Sep 6, 2026
28 of 29 checks passed
@thomasluizon
thomasluizon deleted the chore/ticket-434-nativewind-residue branch September 6, 2026 01:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

parity:exempt Parity exemption: platform adapter or enumerated layout-shell divergence; justify in PR body

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant