Skip to content

feat(create): add standalone Prettier toolchain - #571

Merged
tannerlinsley merged 1 commit into
mainfrom
factory-prettier-toolchain
Nov 6, 2026
Merged

tannerlinsley merged 1 commit into
mainfrom
factory-prettier-toolchain

Conversation

@tannerlinsley

@tannerlinsley tannerlinsley commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

This adds the standalone Prettier choice requested in #510. Use --toolchain prettier during creation or tanstack add prettier in an existing generated project. It formats files and checks formatting without installing a linter.

AI review notes:
React and Solid use the existing toolchain metadata and Prettier ^3.8.1 range already used by the ESLint toolchain. The new choice includes formatter/check scripts, editable configuration, generated-output/lockfile ignores and instructions using the selected package manager. Defaults remain unchanged.

Six blocking generated-app cases cover React and Solid, standard Vite projects with pnpm, blank Rsbuild projects with npm, and adding Prettier to existing blank Vite projects. Each builds and type-checks, confirms no ESLint/Biome dependency or lint script is introduced, formats successfully, rejects deliberately unformatted source, then formats and checks successfully again.

This is the standalone formatter part of #510. Ultracite presets, Oxfmt and the separate Oxlint proposal remain open. No provider services or external infrastructure are involved.

Validation: normal hooks passed all 10 workspace builds, lint, 569 unit tests and all 20 blocking browser cases. The CLI dist JavaScript is unchanged; create dist JavaScript is +14,215 raw bytes and +3,764 gzip bytes, within applicable budgets. These are CLI/core artifact figures, not application client bundle measurements. Published Prettier 3.8.1 metadata declares Node >=14 and no runtime dependencies or install scripts.

Summary by CodeRabbit

  • New Features
    • Added a standalone Prettier toolchain for React and Solid apps, available during project creation or through tanstack add prettier.
    • Generated projects include format and check commands, a consistent Prettier configuration, and sensible default exclusions. This toolchain does not add a linter.
  • Documentation
    • Documented the formatting commands and configuration for both frameworks.

@changeset-bot

changeset-bot Bot commented Nov 6, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 006b8aa

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
Name Type
@tanstack/create Minor
create-start-app Patch
create-tanstack-app Patch
create-tanstack Patch
create-tsrouter-app Patch
@tanstack/create-start Patch
@tanstack/cli Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

React and Solid project templates now provide a standalone Prettier toolchain with formatting and check scripts, Prettier configuration, ignore patterns, and setup metadata. The toolchain can be selected during project creation or added to an existing project. End-to-end tests cover both frameworks and three app modes.

Changes: Standalone Prettier toolchain

Layer / File(s) Summary
React and Solid toolchain definitions
packages/create/src/frameworks/{react,solid}/toolchains/prettier/..., .changeset/standalone-prettier-toolchain.md
Both templates define Prettier format and check scripts, a Prettier configuration and ignore file, and metadata that excludes the linter category. The READMEs document the commands and state that the toolchain does not add a linter. The changeset describes the available invocation options.
Generated-app formatting validation
packages/cli/tests-e2e/prettier-smoke.spec.ts
The end-to-end test checks React and Solid apps in standard, blank, and existing-app modes. It verifies the Prettier dependency and scripts, then checks formatting behavior before and after adding blank lines to a route file.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant SmokeTest
  participant AppFixture
  participant PackageScripts
  participant Prettier
  SmokeTest->>AppFixture: Create React or Solid app fixture
  AppFixture-->>SmokeTest: Return project path
  SmokeTest->>PackageScripts: Run format and check
  PackageScripts->>Prettier: Execute Prettier commands
  Prettier-->>SmokeTest: Formatting check succeeds
  SmokeTest->>SmokeTest: Add blank lines to a route file
  SmokeTest->>PackageScripts: Run check
  PackageScripts->>Prettier: Execute prettier --check .
  Prettier-->>SmokeTest: Check exits with code 1
  SmokeTest->>PackageScripts: Run format, then check
  PackageScripts->>Prettier: Format files and check formatting
  Prettier-->>SmokeTest: Formatting check succeeds
Loading

Possibly related issues

  • TanStack/cli issue 510 requests standalone Prettier as a formatter option. This change adds the standalone option for project creation and existing projects.
Merge Risk: Minimal · up to 006b8

This adds an opt-in standalone Prettier toolchain without changing defaults. No concrete merge-blocking risk was found.

Pre-merge checks: Passed 5

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly describes the main change: a standalone Prettier toolchain for create.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 3 files. (9 skipped: 9 unsupported.)

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

packages/cli/tests-e2e/prettier-smoke.spec.ts

Parsing error: "parserOptions.project" has been provided for @typescript-eslint/parser.
The file was not found in any of the provided project(s): packages/cli/tests-e2e/prettier-smoke.spec.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 60ea6a3a-6e7e-4cd3-acf5-2d46c21fe5f8
Commits

Reviewing files that changed from the base of the PR and between 82f31a6 and 006b8aa.

Files selected for processing: 12

  • .changeset/standalone-prettier-toolchain.md
  • packages/cli/tests-e2e/prettier-smoke.spec.ts
  • packages/create/src/frameworks/react/toolchains/prettier/README.md.ejs
  • packages/create/src/frameworks/react/toolchains/prettier/assets/_dot_prettierignore
  • packages/create/src/frameworks/react/toolchains/prettier/assets/prettier.config.js
  • packages/create/src/frameworks/react/toolchains/prettier/info.json
  • packages/create/src/frameworks/react/toolchains/prettier/package.json
  • packages/create/src/frameworks/solid/toolchains/prettier/README.md.ejs
  • packages/create/src/frameworks/solid/toolchains/prettier/assets/_dot_prettierignore
  • packages/create/src/frameworks/solid/toolchains/prettier/assets/prettier.config.js
  • packages/create/src/frameworks/solid/toolchains/prettier/info.json
  • packages/create/src/frameworks/solid/toolchains/prettier/package.json

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

@tannerlinsley
tannerlinsley merged commit d767e4c into main Nov 6, 2026
7 checks passed
@tannerlinsley
tannerlinsley deleted the factory-prettier-toolchain branch November 6, 2026 19:39
@github-actions github-actions Bot mentioned this pull request Nov 6, 2026
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.

1 participant