Skip to content

Migrate linting & formatting from ESLint + Prettier to Oxc (oxlint + oxfmt) - #144

Merged
HugoPerard merged 7 commits into
mainfrom
feature/minor-expo-update-and-migration-for-oxlint-and-oxfmt
Jul 1, 2026
Merged

Migrate linting & formatting from ESLint + Prettier to Oxc (oxlint + oxfmt)#144
HugoPerard merged 7 commits into
mainfrom
feature/minor-expo-update-and-migration-for-oxlint-and-oxfmt

Conversation

@Atama-Heitekava

@Atama-Heitekava Atama-Heitekava commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Description

This PR replaces the ESLint + Prettier toolchain with the Rust-based Oxc tools: oxlint for linting and oxfmt for formatting.

Most source-file changes here are not hand-written: they're the automatic reformatting (Tailwind class reordering + import sorting) applied by running the new tools across the codebase.

The update of expo to v56.0.12 has been proposed, but some security check have been canceled on verified packages.

Changes

Tooling configuration

  • Add .oxlintrc.json : replaces eslint.config.js. Enables react, react-hooks, unicorn, typescript, node plugins, re-adds the prior JS plugins via jsPlugins, and ports the previous rules (unused-vars ^_ ignore, kebab-case filenames with Icon/Logo exceptions, import-sort groups, no-process-env in src/app/**, Storybook rules on *.stories.*).
  • Add .oxfmtrc.json : replaces .prettierrc.cjs. Same style (width 80, 2-space tabs, single quotes, es5 trailing commas, always arrow parens) and Tailwind sorting via sortTailwindcss.
  • Remove eslint.config.js, .prettierrc.cjs, .prettierignore : replaced by the Oxc configs.

Scripts & dependencies (package.json)

  • Replace lint:eslint with lint:oxlint (oxlint --fix .), add a format script (oxfmt); lint still runs lint:* in parallel.
  • Update gen:icons to format with oxfmt; drop the pretty Prettier script.
  • Remove ESLint/Prettier dev deps and add oxlint + oxfmt. @tanstack/eslint-plugin-query moved to devDependencies.

Git hooks (lefthook.yml)

  • pre-commit now runs oxfmt then oxlint --fix on staged files (both stage_fixed: true); pre-push still runs full lint.

CI (.github/workflows/code-quality.yml)

  • Lint job runs oxlint --deny-warnings . instead of pnpm run lint:eslint.

Editor (.vscode/extensions.json)

  • Recommend oxc.oxc-vscode, drop the ESLint/Prettier recommendations.

Source reformatting

  • Automatic, non-functional changes across src/** and .rnstorybook/storybook.requires.ts: Tailwind class reordering and import sorting. No behavior changes.

Expo update

  • Add sember package (v5.7.2 and v6.3.1) to the trustPolicyExclude, to bypass no-downgrade security (an older version of this package has an attestation slsa). Those two versions are security patch on a reDos vulnerability.

Notes

  • Source-file diffs are purely cosmetic (class/import order) .
  • Tailwind class ordering differs slightly from prettier-plugin-tailwindcss (e.g. border border-borderborder-border ... border), expected given the different sorter.
  • After merge, contributors should install oxc.oxc-vscode and can remove the unused ESLint/Prettier editor extensions.

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown

🚀 Expo preview is ready!

  • Project → start-ui-native-v9iizxkbojzedvpfkfzcq
  • Platforms → android, ios
  • Scheme → start-ui-native
  • Runtime Version → 1.0.0
  • More info

Learn more about 𝝠 Expo Github Action

@Atama-Heitekava
Atama-Heitekava marked this pull request as ready for review June 17, 2026 13:12
@HugoPerard
HugoPerard merged commit 458cfc9 into main Jul 1, 2026
3 checks passed
@HugoPerard
HugoPerard deleted the feature/minor-expo-update-and-migration-for-oxlint-and-oxfmt branch July 1, 2026 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants