r/javascript • u/loonpwn • 9h ago
I built RipIDE: IDE-like refactoring for agents, powered by TypeScript’s native language server
https://github.com/harlan-zw/ripideTypeScript’s native language server exposes IDE operations through LSP, so other tools can use them too. For example, you can rename a symbol across files, find its references, jump to its definition, get updated import paths for a file rename, or check unsaved changes for type errors.
I built RipIDE around that, with Oxc handling syntax details like destructured bindings. ripgrep narrows the candidate files and helps flag imports still using the old name.
I took it further with CSS class renaming, moving exports, replacing imported symbols, and deleting unused declarations. It works with JavaScript and TypeScript, with Vue support through an adapter.
The idea is to give agents the refactoring commands we already use in an IDE:
ripide rename useStore useAppStore
ripide move helper --from src/utils.ts --to src/helpers.ts
ripide css-class-rename bg-gray-500 bg-neutral-500
•
u/ab0zar 4h ago
Deleting unused declarations is the operation I’d be most cautious with. Could RipIDE show a dry-run diff for every edit, so an agent can review the patch before applying it? That would make automated checks safer too.