TypeScript IntelliSense Fails for Specific Imports in VS Code
I’m experiencing an issue where VS Code’s TypeScript IntelliSense fails to provide autocomplete suggestions for certain imports. Specifically, when I type “import { zodResolve } from "@hookform/resolvers/zod"”, no autocomplete suggestions appear.
The problem is isolated to my package.json dependencies. I’ve tested this by:
- Creating a fresh Next.js project with pnpm
- Adding shadcn/ui forms (which installs react-hook-form, @hookform/resolvers, zod)
- Confirming autocomplete works in the fresh project
- Copying my problematic package.json to the fresh project
- Running pnpm install
- Observing that the autocomplete issue reproduces
Autocomplete works fine for other packages like useState from react or z from zod. Interestingly, “Go to Definition” still works if I manually type the import.
My package.json includes:
- @hookform/resolvers: ^5.2.2
- react-hook-form: ^7.65.0
- zod: ^4.1.12
- And many other dependencies as shown in the full package.json
I’ve tried:
- Restarting the TypeScript server
- Deleting node_modules, pnpm-lock.yaml, and .next before reinstalling
- Testing on both WSL (Ubuntu) and native Windows
The issue persists across all these attempts. What could be causing this IntelliSense failure for specific imports, and how can I resolve it?
TypeScript IntelliSense failures for specific imports like zodResolve from @hookform/resolvers/zod are often caused by a known performance issue in TypeScript’s language service when processing react-hook-form resolvers with Zod schemas. This issue specifically affects the completionInfo, completionEntryDetails, and encodedSemanticClassifications-full commands, leading to autocomplete suggestions not appearing despite the code being functionally correct.
- Understanding the IntelliSense Performance Issue
- Known Causes and Contributing Factors
- Troubleshooting Steps
- Workarounds and Solutions
- Prevention Strategies
- When to Seek Additional Help
Understanding the IntelliSense Performance Issue
The core issue you’re experiencing is documented in TypeScript issue #46726, which specifically addresses “Slow IntelliSense with react-hook-form resolvers.” When TypeScript processes the complex type definitions from @hookform/resolvers combined with Zod’s schema definitions, it can cause significant performance degradation in the language service.
The problem manifests when adding react-hook-form with their resolver library and zod, where the IntelliSense time blows up on three commands: completionInfo, completionEntryDetails, and encodedSemanticClassifications-full.
This performance bottleneck prevents VS Code from providing timely autocomplete suggestions, even though the code is syntactically correct and “Go to Definition” works manually.
Known Causes and Contributing Factors
Package Version Incompatibilities
The interaction between specific versions of @hookform/resolvers, react-hook-form, and zod can trigger this issue. According to user reports on Reddit, many developers have spent significant time troubleshooting similar problems:
“I have spent over an hour trying to fix this already. I’ve downgraded and upgraded the ‘@hookform/resolvers’ package many times, restarted VS code, reinstalled all packages and deps.”
TypeScript Language Service Limitations
The TypeScript language service struggles with the complex generic types and recursive type definitions that are common in form validation libraries like Zod when used with react-hook-form resolvers.
VS Code Extension Conflicts
Some VS Code extensions can interfere with TypeScript IntelliSense, particularly those that modify the language service or provide their own code completion features.
Troubleshooting Steps
1. Verify Package Versions
Check your specific package versions against known working combinations. The issue is often version-dependent:
pnpm list @hookform/resolvers react-hook-form zod
2. Restart TypeScript Server
In VS Code, try these methods:
- Quick restart:
Ctrl+Shift+P→ “TypeScript: Restart TS Server” - Hard restart: Close VS Code completely and restart
3. Clear VS Code Cache
# For VS Code settings
rm -rf ~/.config/Code/User/storage*
rm -rf ~/.config/Code/CachedData*
# For TypeScript language service cache
rm -rf .vscode/*
4. Disable Problematic Extensions
Temporarily disable these common extensions that can interfere:
- ESLint extension
- Prettier extension
- Any TypeScript-related extensions
- Code formatting extensions
Test if IntelliSense works with extensions disabled, then re-enable them one by one to identify the culprit.
Workarounds and Solutions
1. Use Type-Only Import
Try importing with type-only syntax to help TypeScript process the import more efficiently:
import type { zodResolve } from '@hookform/resolvers/zod';
// Then use it normally
const resolver = zodResolve;
2. Alternative Import Syntax
Experiment with different import patterns:
// Try dynamic import
const { zodResolve } = await import('@hookform/resolvers/zod');
// Or namespace import
import * as Resolvers from '@hookform/resolvers/zod';
const resolver = Resolvers.zodResolve;
3. Update to Latest Stable Versions
Ensure you’re using the latest stable versions of all related packages:
pnpm update @hookform/resolvers@latest react-hook-form@latest zod@latest
4. Configure TypeScript Compiler Options
Add these settings to your tsconfig.json to help TypeScript handle complex types better:
{
"compilerOptions": {
"skipLibCheck": true,
"incremental": true,
"tsBuildInfoFile": "./.tsbuildinfo"
}
}
Prevention Strategies
1. Monitor Package Updates
Keep an eye on the TypeScript issue tracker for updates related to #46726 and react-hook-form performance issues.
2. Use TypeScript Experimental Features
Consider enabling experimental TypeScript features that might improve performance:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
3. Optimize Your Project Structure
- Keep your project dependencies organized
- Use barrel exports (index files) to simplify imports
- Consider lazy loading heavy dependencies
4. Regular Maintenance
- Periodically clear TypeScript build cache
- Restart TypeScript server after major dependency updates
- Monitor VS Code performance logs
When to Seek Additional Help
If none of these solutions work, consider:
-
Reporting the issue: Create a detailed report on the VS Code issue tracker or TypeScript issue tracker with your environment details.
-
Community support: Post on Stack Overflow or relevant subreddits with your specific configuration.
-
Alternative tools: If the performance issue severely impacts your workflow, consider using alternative form validation libraries or IDEs temporarily.
Remember that “Go to Definition” working manually indicates your code is correct - this is primarily a performance issue with TypeScript’s language service processing complex type definitions, not a functional problem with your imports.