Skip to content

Port conflict (EADDRINUSE) when running typegen and dev server simultaneously #243

@FAL-coffee

Description

@FAL-coffee

Port conflict (EADDRINUSE) when running typegen and dev server simultaneously

Context

I'm using React Router DevTools with type generation tools (react-router typegen, safe-routes typegen).

Reproduction

When running type generation tools and the development server simultaneously, both try to bind to port 42069 (used by TanStack DevTools), resulting in an EADDRINUSE error.

Steps to Reproduce

# Terminal 1: Start dev server
pnpm dev

# Terminal 2: Run type generation
pnpm typegen
# or
react-router typegen

Error Message

Error: listen EADDRINUSE: address already in use :::42069

System Info

  • OS: macOS 14.6.0 (Darwin 24.6.0)
  • Node: v20.x
  • Package Manager: pnpm 10.18.0
  • react-router-devtools: 6.0.1
  • @tanstack/devtools: 5.x
  • Vite: 6.3.6

Used Package Manager

pnpm

Expected Behavior

Type generation tools and the dev server should be able to run simultaneously without port conflicts. The DevTools should automatically disable itself when running in a type generation context.

Actual Behavior

The second process fails to start due to port 42069 already being in use by TanStack DevTools, which is initialized by both the dev server and type generation process.

Possible Solution

Detect type generation context (via environment variables like TYPEGEN_RUNNING=1 or command-line arguments) and disable DevTools initialization when running type generation, preventing unnecessary port binding.

Implementation approach:

  • Check for typegen indicators: TYPEGEN_RUNNING=1, SAFE_ROUTES_TYPEGEN=1, process.argv includes "typegen"
  • Return empty plugin array when in typegen context
  • Maintain backward compatibility for normal dev mode

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions