@Mugen87@gkjohnson@sunag@mrdoob I’m wondering what do the maintainers of three.js use as their preferred IDE when developing for three.js. I currently use JetBrains WebStorm for all of my three.js work because of its JSDoc support, which three.js makes heavy use of. VSCode is unusable to me when writing for three.js, since it doesn’t recognize 90% of JSDoc tags.
What is the optimal IDE choice (and perhaps extensions) setup for three.js, according to the three.js maintainers?
From what I’ve seen across the community, Visual Studio Code is probably the most commonly used editor for Three.js development, mainly because of its huge extension ecosystem and lightweight performance. Extensions like ESLint, Prettier, and JavaScript/TypeScript IntelliSense help a lot when working with large projects.
That said, WebStorm is definitely a strong choice, especially if you rely heavily on JSDoc support. JetBrains tools tend to handle documentation-based typing and navigation really well, which fits nicely with how Three.js structures its codebase.
In the end it seems many developers just stick with whatever gives them the best productivity. Some prefer VSCode because it’s flexible and widely used, while others prefer WebStorm for its deeper built-in analysis and documentation handling.
Personally I think the most important thing is having good linting, formatting, and project navigation, since Three.js projects can grow pretty complex with shaders, assets, and scene logic. Curious to see what the maintainers themselves say about their setups.
VSCode is unusable to me when writing for three.js, since it doesn’t recognize 90% of JSDoc tags…
Keep in mind that the JSDoc tags used in three.js are there to generate documentation. While JSDoc tags can sometimes be used for type checking (and all the IDE autocomplete conveniences you’re probably thinking of) on JavaScript code, this relies on TypeScript Language Services, not necessarily the individual IDE. TypeScript extends JSDoc with its own syntax in order to do this, and doesn’t support certain other JSDoc syntax. So it requires a different flavor of JSDoc to get these features. See:
The Svelte.js codebase is a notable example of using JSDoc tags for type checking and generating type definitions, while still writing plain JavaScript code. I’ve been working in the Cesium.js codebase recently to set up something similar.
Personally, I use Sublime Text when contributing to three.js. It’s a fairly minimal editor, and I use it without type checking or other IDE-like features. For codebases that I know have type checking support, I currently use Zed.