To that end, we recommend separating static analysis checks from Vite's transform pipeline. Vite's job is to get your source modules into a form that can run in the browser as fast as possible. Shoe-horning type checking into Vite's transform pipeline will inevitably compromise Vite's speed benefits. In comparison, type checking requires knowledge of the entire module graph. Transpilation can work on a per-file basis and aligns perfectly with Vite's on-demand compile model. The reason Vite does not perform type checking as part of the transform process is because the two jobs work fundamentally differently. It assumes type checking is taken care of by your IDE and build process. ts files and does NOT perform type checking. Note that Vite only performs transpilation on. There are also official integrations for Preact via you don't need to manually set these up - when you create an app via create-vite, the selected templates would have these pre-configured for you already. Vite provides first-party HMR integrations for Vue Single File Components and React Fast Refresh. Frameworks with HMR capabilities can leverage the API to provide instant, precise updates without reloading the page or blowing away application state. Vite provides an HMR API over native ESM. Vite caches dependency requests via HTTP headers, so if you wish to locally edit/debug a dependency, follow the steps here. Rewrite the imports to valid URLs like /node_modules/.vite/deps/my-dep.js?v=f3sf2ebd so that the browser can import them properly. The pre-bundling step is performed with esbuild and makes Vite's cold start time significantly faster than any JavaScript-based bundler. Pre-bundle them to improve page loading speed and convert CommonJS / UMD modules to ESM. Vite will detect such bare module imports in all served source files and perform the following: The above will throw an error in the browser.