Skip to content

feat(tooling): add linter/formatter add-ons with preset selection #510

Open

Description

@itzzjustmateo

Which project does this relate to?

Create TanStack App

Describe the feature

It would be nice if Create TanStack App could offer linter and formatter add-ons during project creation, with an optional second step for choosing a preset or setup.

For example:

? Select a linter / formatter
❯ Biome
  Oxlint + Oxfmt
  ESLint + Prettier
  None

? Select a preset
❯ Recommended
  Ultracite
  Custom

The available presets could depend on what the user selected.

For example, selecting Biome could show:

? Select a Biome preset
❯ Recommended
  Ultracite
  None

While selecting ESLint could show:

? Select an ESLint setup
❯ Recommended
  Ultracite
  None

The selected setup should install the required dependencies and generate the appropriate configuration files and scripts.

Why

This would make popular linting and formatting setups much easier to choose when creating a new TanStack project.

It would also make setups like Biome + Ultracite or Oxlint + Oxfmt first class options instead of requiring users to configure them manually after creating the project.

Ideally this could build on the existing add-on and options system so that new tools and presets can be added without hardcoding everything into the CLI.

Example use cases

  • Biome → recommended configuration
  • Biome → Ultracite
  • Biome → no preset
  • Oxlint + Oxfmt → recommended configuration
  • Oxlint + Oxfmt → Ultracite
  • Oxlint + Oxfmt → no preset
  • ESLint → recommended configuration
  • ESLint → Ultracite
  • ESLint → no preset
  • Prettier → standalone formatter
  • Oxfmt → standalone formatter

Activity

  1. changed the title [-]feat(linter/formatter): add linter/formatter "add-ons"[/-] [+]feat(tooling): add linter/formatter add-ons with preset selection[/+] on Sep 9, 2026
  2. tannerlinsley commented on Nov 6, 2026

    @tannerlinsley
    Member

    This fits the existing add-on options model, so preset selection can stay with each toolchain. Oxlint #524 is lint-only and does not cover Oxfmt or these presets.

    AI review notes:
    A compatibility check found that published Ultracite 8.1.1 requires Node ^22.22.2 || >=24.15.0 and Biome ^2.6.2, while the current React and Solid Biome toolchains pin 2.4.5. Adding the latest preset dependency without changing that dependency set would violate its peer requirement. Published package metadata.
    A scoped implementation should keep the current default output, expose a preset through existing toolchain option metadata, and use conditional package/config templates for the selected preset. The next step is to establish a supported Ultracite/Biome/runtime combination, then test generated lint, build, types, and existing-app additions. No preset implementation or compatibility pass is claimed yet. Standalone formatter choices and Oxlint/Oxfmt remain separate work.

  3. tannerlinsley commented on Nov 6, 2026

    @tannerlinsley
    Member

    The standalone Prettier part is now on main in #571, thanks for laying out the choices. Keeping this open for presets and the remaining toolchains.

    AI review notes:
    The merged change supports --toolchain prettier and tanstack add prettier for React and Solid, with format/check scripts and no linter dependency. Six new generated-app cases cover Vite/Rsbuild, npm/pnpm and existing-app additions, including a formatting failure/recovery check. Normal hooks passed 10 builds, lint, 569 units and all 20 browser cases; all seven hosted checks passed. This is merged source, awaiting the normal package release.
    Ultracite presets and Oxfmt are not implemented by this change. Oxlint #524 remains separate and subject to the existing owner deferral.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions