# `@effect-view/vite` Experimental Vite Fast Refresh support for Effect View components. ```ts import effectViewRefresh from "@effect-view/vite" import react from "@vitejs/plugin-react" import { defineConfig } from "vite" export default defineConfig({ plugins: [ effectViewRefresh(), react(), ], }) ``` The plugin recognizes `Component.make` and `Component.makeUntraced` definitions imported from `effect-fc-next`. The legacy `effect-fc` package is not supported. `effect-fc-next` owns the bundler-neutral refresh cell protocol; this package is the Vite adapter that retains those cells in HMR data. The plugin assigns stable development IDs and self-accepts successfully instrumented modules. The adapter-facing protocol is exported from `effect-fc-next/Refreshable`. Renaming or removing an instrumented View invalidates the module upward instead of leaving a stale mounted descriptor. React state is retained when the ordered hook signature is unchanged. Adding, removing, or changing a hook call resets the Effect View implementation. Add `// @refresh reset` to a module to reset its Views on every update. ## Current limitations - Vite is the only supported bundler. - Definitions must be top-level variable, class, or default-export declarations. - Hook signature analysis is conservative and based on `useX` call syntax. - Changing a descriptor's trait pipeline during a refresh is not guaranteed to preserve state. - Source maps for the injected transform are not generated yet.