<!--
title: Use descriptive, conflict-free names
domain: app-frameworks
topic: Naming Conventions
language: TypeScript
source: TanStack/router
updated: 2025-07-10
url: https://awesomereviewers.com/reviewers/router-use-descriptive-conflict-free-names/
-->

Choose descriptive names that clearly convey purpose while avoiding conflicts with existing APIs, built-in functions, or established conventions. Names should follow consistent patterns across the codebase and use appropriate spelling conventions.

Key principles:
- Prefer descriptive names over abbreviated ones (e.g., `dehydratedRouter` instead of `r`)
- Avoid conflicts with built-in functions (e.g., `fetchAndResolveInLoaderLifetime` instead of `fetch`)
- Don't clash with framework conventions (e.g., `getSupabaseServer` instead of `useSupabase` for non-hooks)
- Follow established naming patterns in the codebase (e.g., `disableManifestGeneration` to match `disableTypes`)
- Use consistent spelling conventions (e.g., US spelling: `behavior` not `behaviour`)
- Choose meaningful variable names that reflect their content (e.g., `derived` instead of `paths`)

Example:
```typescript
// ❌ Avoid: Abbreviated, conflicts with built-in
const r = getRouter()
const fetch = async () => { ... }

// ✅ Good: Descriptive, conflict-free
const dehydratedRouter = getRouter()
const fetchAndResolveInLoaderLifetime = async () => { ... }

// ❌ Avoid: Misleading naming pattern
export function useSupabase() { /* not a hook */ }

// ✅ Good: Clear, follows conventions
export function getSupabaseServer() { /* server utility */ }
```
