From 7ba7795835f502aef348a706d3fec82e88b7183c Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 27 Apr 2026 22:23:03 +0800 Subject: [PATCH] feat(create): add OXC toolchain (oxlint + oxfmt) Adds OXC as a third toolchain option alongside ESLint and Biome for both React and Solid frameworks. OXC is a Rust-powered toolchain from the oxc-project that is 10-100x faster than ESLint and 30x faster than Prettier. - oxlint: fast linter (stable v1.x) - oxfmt: Prettier-compatible formatter (beta v0.x, 100% JS/TS conformance) Each framework gets: - info.json with exclusive linter slot, priority 3 (after ESLint=0, Biome=2) - package.json with lint/format/check scripts - .oxlintrc.json config (React variant includes react plugin) - .oxfmtrc.json config - small-logo.svg --- .changeset/add-oxc-toolchain.md | 5 +++++ .../react/toolchains/oxc/assets/_dot_oxfmtrc.json | 5 +++++ .../react/toolchains/oxc/assets/_dot_oxlintrc.json | 14 ++++++++++++++ .../src/frameworks/react/toolchains/oxc/info.json | 12 ++++++++++++ .../frameworks/react/toolchains/oxc/package.json | 11 +++++++++++ .../frameworks/react/toolchains/oxc/small-logo.svg | 4 ++++ .../solid/toolchains/oxc/assets/_dot_oxfmtrc.json | 5 +++++ .../solid/toolchains/oxc/assets/_dot_oxlintrc.json | 10 ++++++++++ .../src/frameworks/solid/toolchains/oxc/info.json | 11 +++++++++++ .../frameworks/solid/toolchains/oxc/package.json | 11 +++++++++++ .../frameworks/solid/toolchains/oxc/small-logo.svg | 4 ++++ 11 files changed, 92 insertions(+) create mode 100644 .changeset/add-oxc-toolchain.md create mode 100644 packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxfmtrc.json create mode 100644 packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxlintrc.json create mode 100644 packages/create/src/frameworks/react/toolchains/oxc/info.json create mode 100644 packages/create/src/frameworks/react/toolchains/oxc/package.json create mode 100644 packages/create/src/frameworks/react/toolchains/oxc/small-logo.svg create mode 100644 packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxfmtrc.json create mode 100644 packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxlintrc.json create mode 100644 packages/create/src/frameworks/solid/toolchains/oxc/info.json create mode 100644 packages/create/src/frameworks/solid/toolchains/oxc/package.json create mode 100644 packages/create/src/frameworks/solid/toolchains/oxc/small-logo.svg diff --git a/.changeset/add-oxc-toolchain.md b/.changeset/add-oxc-toolchain.md new file mode 100644 index 00000000..82756f21 --- /dev/null +++ b/.changeset/add-oxc-toolchain.md @@ -0,0 +1,5 @@ +--- +"@tanstack/create": patch +--- + +feat: add OXC toolchain (oxlint + oxfmt) for React and Solid frameworks diff --git a/packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxfmtrc.json b/packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxfmtrc.json new file mode 100644 index 00000000..e3b414c7 --- /dev/null +++ b/packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxfmtrc.json @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxlintrc.json b/packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxlintrc.json new file mode 100644 index 00000000..dc191399 --- /dev/null +++ b/packages/create/src/frameworks/react/toolchains/oxc/assets/_dot_oxlintrc.json @@ -0,0 +1,14 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["react"], + "categories": { + "correctness": "error" + }, + "rules": { + "react/react-in-jsx-scope": "off" + }, + "env": { + "browser": true, + "node": true + } +} diff --git a/packages/create/src/frameworks/react/toolchains/oxc/info.json b/packages/create/src/frameworks/react/toolchains/oxc/info.json new file mode 100644 index 00000000..c86a0a2e --- /dev/null +++ b/packages/create/src/frameworks/react/toolchains/oxc/info.json @@ -0,0 +1,12 @@ +{ + "name": "OXC", + "description": "OXC toolchain support (oxlint + oxfmt).", + "phase": "setup", + "type": "toolchain", + "category": "tooling", + "exclusive": ["linter"], + "color": "#FF5A1F", + "priority": 3, + "modes": ["code-router", "file-router"], + "link": "https://oxc.rs" +} diff --git a/packages/create/src/frameworks/react/toolchains/oxc/package.json b/packages/create/src/frameworks/react/toolchains/oxc/package.json new file mode 100644 index 00000000..4072932b --- /dev/null +++ b/packages/create/src/frameworks/react/toolchains/oxc/package.json @@ -0,0 +1,11 @@ +{ + "scripts": { + "lint": "oxlint .", + "format": "oxfmt --check .", + "check": "oxfmt --write . && oxlint --fix ." + }, + "devDependencies": { + "oxlint": "^1.0.0", + "oxfmt": "^0.46.0" + } +} diff --git a/packages/create/src/frameworks/react/toolchains/oxc/small-logo.svg b/packages/create/src/frameworks/react/toolchains/oxc/small-logo.svg new file mode 100644 index 00000000..66a99320 --- /dev/null +++ b/packages/create/src/frameworks/react/toolchains/oxc/small-logo.svg @@ -0,0 +1,4 @@ + + + OXC + diff --git a/packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxfmtrc.json b/packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxfmtrc.json new file mode 100644 index 00000000..e3b414c7 --- /dev/null +++ b/packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxfmtrc.json @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxlintrc.json b/packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxlintrc.json new file mode 100644 index 00000000..5e8991ee --- /dev/null +++ b/packages/create/src/frameworks/solid/toolchains/oxc/assets/_dot_oxlintrc.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "categories": { + "correctness": "error" + }, + "env": { + "browser": true, + "node": true + } +} diff --git a/packages/create/src/frameworks/solid/toolchains/oxc/info.json b/packages/create/src/frameworks/solid/toolchains/oxc/info.json new file mode 100644 index 00000000..be392d75 --- /dev/null +++ b/packages/create/src/frameworks/solid/toolchains/oxc/info.json @@ -0,0 +1,11 @@ +{ + "name": "OXC", + "description": "OXC toolchain support (oxlint + oxfmt).", + "phase": "setup", + "type": "toolchain", + "category": "tooling", + "exclusive": ["linter"], + "color": "#FF5A1F", + "modes": ["code-router", "file-router"], + "link": "https://oxc.rs" +} diff --git a/packages/create/src/frameworks/solid/toolchains/oxc/package.json b/packages/create/src/frameworks/solid/toolchains/oxc/package.json new file mode 100644 index 00000000..4072932b --- /dev/null +++ b/packages/create/src/frameworks/solid/toolchains/oxc/package.json @@ -0,0 +1,11 @@ +{ + "scripts": { + "lint": "oxlint .", + "format": "oxfmt --check .", + "check": "oxfmt --write . && oxlint --fix ." + }, + "devDependencies": { + "oxlint": "^1.0.0", + "oxfmt": "^0.46.0" + } +} diff --git a/packages/create/src/frameworks/solid/toolchains/oxc/small-logo.svg b/packages/create/src/frameworks/solid/toolchains/oxc/small-logo.svg new file mode 100644 index 00000000..66a99320 --- /dev/null +++ b/packages/create/src/frameworks/solid/toolchains/oxc/small-logo.svg @@ -0,0 +1,4 @@ + + + OXC +