From 8ecac79fab342cdd6758cf713d6db85d218b83cf Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sun, 8 Nov 2026 09:22:49 -0700 Subject: [PATCH 1/2] fix(create): align Biome formatter with starter files --- .changeset/biome-starter-format.md | 5 ++ .../toolchains/biome/assets/biome.json.ejs | 69 ++++++++++--------- .../toolchains/biome/assets/biome.json.ejs | 6 +- 3 files changed, 44 insertions(+), 36 deletions(-) create mode 100644 .changeset/biome-starter-format.md diff --git a/.changeset/biome-starter-format.md b/.changeset/biome-starter-format.md new file mode 100644 index 00000000..63d37a07 --- /dev/null +++ b/.changeset/biome-starter-format.md @@ -0,0 +1,5 @@ +--- +'@tanstack/create': patch +--- + +Match Biome formatting defaults to the generated React and Solid starter files. diff --git a/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs b/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs index 662c9738..7fc1313d 100644 --- a/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs +++ b/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs @@ -1,36 +1,37 @@ { - "$schema": "https://biomejs.dev/schemas/2.4.5/schema.json", - "vcs": { - "enabled": false, - "clientKind": "git", - "useIgnoreFile": false - }, - "files": { - "ignoreUnknown": false, - "includes": [ - "**/src/**/*", - "**/.vscode/**/*", - <% if (bundler === 'vite') { %>"**/index.html", - <% } %>"**/<%= bundler %>.config.ts", - "!**/src/routeTree.gen.ts", - "!**/src/styles.css" - ] - }, - "formatter": { - "enabled": true, - "indentStyle": "tab" - }, - "assist": { "actions": { "source": { "organizeImports": "on" } } }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - }, - "javascript": { - "formatter": { - "quoteStyle": "double" - } - } + "$schema": "https://biomejs.dev/schemas/2.4.5/schema.json", + "vcs": { + "enabled": false, + "clientKind": "git", + "useIgnoreFile": false + }, + "files": { + "ignoreUnknown": false, + "includes": [ + "**/src/**/*", + "**/.vscode/**/*", + <% if (bundler === 'vite') { %>"**/index.html", + <% } %>"**/<%= bundler %>.config.ts", + "!**/src/routeTree.gen.ts", + "!**/src/styles.css" + ] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2 + }, + "assist": { "actions": { "source": { "organizeImports": "on" } } }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "single", + "semicolons": "asNeeded" + } + } } -<% if (bundler) { %><% } %> diff --git a/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs b/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs index 00338a2c..7fc1313d 100644 --- a/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs +++ b/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs @@ -18,7 +18,8 @@ }, "formatter": { "enabled": true, - "indentStyle": "tab" + "indentStyle": "space", + "indentWidth": 2 }, "assist": { "actions": { "source": { "organizeImports": "on" } } }, "linter": { @@ -29,7 +30,8 @@ }, "javascript": { "formatter": { - "quoteStyle": "double" + "quoteStyle": "single", + "semicolons": "asNeeded" } } } From d0f83fed1db38e258bd0eac45efc4482a6d2ad6f Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sun, 8 Nov 2026 21:33:39 -0700 Subject: [PATCH 2/2] fix(create): keep edge Biome defaults when rendering without a formatter --- packages/create/scripts/generate-manifest.mjs | 2 ++ .../react/toolchains/biome/assets/biome.json.ejs | 8 ++++---- .../solid/toolchains/biome/assets/biome.json.ejs | 8 ++++---- packages/create/src/template-file.ts | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/create/scripts/generate-manifest.mjs b/packages/create/scripts/generate-manifest.mjs index 065db369..ca5f557f 100644 --- a/packages/create/scripts/generate-manifest.mjs +++ b/packages/create/scripts/generate-manifest.mjs @@ -274,6 +274,7 @@ function createTemplateRendererSource(renderers = templateRenderers) { const { packageManager, projectName, + formatsTypeScript, bundler, typescript, tailwind, @@ -327,6 +328,7 @@ type TemplateRenderContext = { [key: string]: any packageManager: any projectName: any + formatsTypeScript?: boolean bundler: any typescript: any tailwind: any diff --git a/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs b/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs index 7fc1313d..b0e30102 100644 --- a/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs +++ b/packages/create/src/frameworks/react/toolchains/biome/assets/biome.json.ejs @@ -18,8 +18,8 @@ }, "formatter": { "enabled": true, - "indentStyle": "space", - "indentWidth": 2 + <% if (formatsTypeScript) { %>"indentStyle": "space", + "indentWidth": 2<% } else { %>"indentStyle": "tab"<% } %> }, "assist": { "actions": { "source": { "organizeImports": "on" } } }, "linter": { @@ -30,8 +30,8 @@ }, "javascript": { "formatter": { - "quoteStyle": "single", - "semicolons": "asNeeded" + <% if (formatsTypeScript) { %>"quoteStyle": "single", + "semicolons": "asNeeded"<% } else { %>"quoteStyle": "double"<% } %> } } } diff --git a/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs b/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs index 7fc1313d..b0e30102 100644 --- a/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs +++ b/packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs @@ -18,8 +18,8 @@ }, "formatter": { "enabled": true, - "indentStyle": "space", - "indentWidth": 2 + <% if (formatsTypeScript) { %>"indentStyle": "space", + "indentWidth": 2<% } else { %>"indentStyle": "tab"<% } %> }, "assist": { "actions": { "source": { "organizeImports": "on" } } }, "linter": { @@ -30,8 +30,8 @@ }, "javascript": { "formatter": { - "quoteStyle": "single", - "semicolons": "asNeeded" + <% if (formatsTypeScript) { %>"quoteStyle": "single", + "semicolons": "asNeeded"<% } else { %>"quoteStyle": "double"<% } %> } } } diff --git a/packages/create/src/template-file.ts b/packages/create/src/template-file.ts index 19ebee8e..22d345de 100644 --- a/packages/create/src/template-file.ts +++ b/packages/create/src/template-file.ts @@ -128,6 +128,7 @@ export function createTemplateFile(environment: Environment, options: Options) { integration.code || integration.jsName const templateValues = { + formatsTypeScript: true, packageManager: options.packageManager, projectName: options.projectName, bundler: options.bundler ?? 'vite',