TanStack Start comes with its own ESLint plugin. This plugin is used to enforce best practices and help you avoid common mistakes when working with Server Components and server/client boundaries.
The plugin is a separate package that you need to install:
npm install -D @tanstack/eslint-plugin-startnpm install -D @tanstack/eslint-plugin-startor
pnpm add -D @tanstack/eslint-plugin-startpnpm add -D @tanstack/eslint-plugin-startor
yarn add -D @tanstack/eslint-plugin-startyarn add -D @tanstack/eslint-plugin-startor
bun add -D @tanstack/eslint-plugin-startbun add -D @tanstack/eslint-plugin-startThe release of ESLint 9.0 introduced a new way to configure ESLint using a flat config format. The TanStack Start ESLint Plugin supports this format and provides a recommended config you can use to enable all recommended rules.
To enable all recommended rules:
// eslint.config.js
import pluginStart from '@tanstack/eslint-plugin-start'
export default [
pluginStart.configs['flat/recommended'],
// Any other config...
]// eslint.config.js
import pluginStart from '@tanstack/eslint-plugin-start'
export default [
pluginStart.configs['flat/recommended'],
// Any other config...
]Alternatively, load the plugin and configure only the rules you want:
// eslint.config.js
import pluginStart from '@tanstack/eslint-plugin-start'
export default [
{
plugins: {
'@tanstack/start': pluginStart,
},
rules: {
'@tanstack/start/no-client-code-in-server-component': 'error',
'@tanstack/start/no-async-client-component': 'error',
},
},
// Any other config...
]// eslint.config.js
import pluginStart from '@tanstack/eslint-plugin-start'
export default [
{
plugins: {
'@tanstack/start': pluginStart,
},
rules: {
'@tanstack/start/no-client-code-in-server-component': 'error',
'@tanstack/start/no-async-client-component': 'error',
},
},
// Any other config...
]Prior to ESLint 9.0, the most common way to configure ESLint was using a .eslintrc file. The TanStack Start ESLint plugin still supports this configuration method.
To enable all recommended rules, add plugin:@tanstack/eslint-plugin-start/recommended in extends:
{
"extends": ["plugin:@tanstack/eslint-plugin-start/recommended"]
}{
"extends": ["plugin:@tanstack/eslint-plugin-start/recommended"]
}Alternatively, add @tanstack/eslint-plugin-start to plugins and configure the rules you want:
{
"plugins": ["@tanstack/eslint-plugin-start"],
"rules": {
"@tanstack/start/no-client-code-in-server-component": "error",
"@tanstack/start/no-async-client-component": "error"
}
}{
"plugins": ["@tanstack/eslint-plugin-start"],
"rules": {
"@tanstack/start/no-client-code-in-server-component": "error",
"@tanstack/start/no-async-client-component": "error"
}
}The following rules are available in the TanStack Start ESLint plugin: