Alex Klimenkov: Depends on what features you call new. Projects I’m involved with are not so fast at adapting modern features, since we have quite a large codebase that can’t be easily updated in one go. And usually, you don’t want different parts of the project to be written in different flavors of JS. Slowly but surely we migrate some parts of our codebase in TS, other places are being updated to more modern JS.
Anton Aksionau: Optional chaining and nullish coalescing enable you to reduce the number of code checks. Sometimes I also use proxies.
Dmitry Sachko: I frequently utilize such features as destructuring assignment, optional chaining, and nullish coalescing. But I would recommend programmers not to overuse optional chaining. Apply this operator only when you assume that the value before it does not exist.
Grazhina Lebeckaya: The use of optional chaining and nullish coalescing operators allows me to write less code and save time on writing code checks.
What front-end frameworks do you use? Did you try Svelte or Solid that are rated very high in terms of satisfaction and interest?
Anton Aksionau: Most of the time, I write code in vanilla JS. I also work with the “Big Three” frameworks (Vue, React, Angular) as well as Svelte. I have to say that the experience with Svelte leaves the most pleasant impression. You won’t need much time to master this framework. It helps to reduce the amount of code that is easier to read and understand. Compared to React, you’ll get a smaller application bundle size using Svelte.
Dmitry Sachko: Vue.js is the main framework that I use for work and I’m fully satisfied with it. Currently, I also use Svelte in our projects and I can say that it is a remarkable client-side technology.
Ivan Izobov: Now I actively work with Svelte in DHTMLX projects and I’m really happy with this framework. I also want to mention React which is still extremely popular among the development community and provides a lot of useful tools for productive coding.
Do you use any testing tools?
Alex Klimenkov: Currently, we rely on unit tests made with the Mocha framework, and a custom-made regression test suite powered by Puppeteer. We’ll probably explore Cypress in the near future.
Anton Aksionau: In most cases, I use traditional Mocha and Chai tools. We also try to adopt Cypress for visual testing.
Dmitry Sachko: I had some experience with Puppeteer.
Grazhina Lebeckaya: I utilize Cypress for end-to-end testing.
Ivan Izobov: Of course, I use different instruments for testing. In projects with my involvement, I employ Mocha (Chai) and Cypress. They are intended for various testing purposes.
What bundlers do you prefer for working on DHTMLX libraries? Have you tried any new bundlers such as Vite or esbuild?
Alex Klimenkov: For now, we continue using webpack.
Anton Aksionau: I tested Vite and esbuild. I’m satisfied with their performance and ease of configuration. I would like to start using them in real projects. But for now, we stay with Rollup and webpack for our project work.
Dmitry Sachko: I prefer to use the tried-and-true webpack bundler.
Grazhina Lebeckaya: Now I work with webpack. Regarding Vite and esbuild, it is necessary to examine these tools in more detail to learn about potential drawbacks. But I have to say that they have a significant advantage in terms of performance.
Ivan Izobov: I mainly apply webpack and Rollup. Out of curiosity, I also tried Snowpack.
What instruments are commonly used for managing monorepos in DHTMLX projects?
Our developers are a bit conservative in this question. They choose yarn and npm for managing dependencies.
Which criteria do you take into account when evaluating new libraries/tools/utilities?
Alex Klimenkov: There is a wide range of criteria that are commonly taken into account when evaluating new dev instruments: suitability for your specific objectives, maturity, availability of the proper documentation, ease of use, etc. It can be too time-consuming to estimate all these aspects separately. Therefore, firstly, I pay attention to the popularity/usability of the library among developers. In other words, when choosing between two tools with 100 and 100k downloads per week on npm, the second one will be an obvious choice. In the case of two equally known technologies, I would prefer a more intuitive library with better documentation.
Anton Aksionau: I consider numerous factors when choosing a new tool for working with DHTMLX components. I start with checking popularity rates and community presence for a tool under review. Then I take a look at the number of pull requests and issues in its GitHub repository. It is also hard to go without clear and well-structured documentation with guides and samples.
Dmitry Sachko: First of all, I obtain the info about the popularity of tools (Github stars, npm downloads). Secondly, I evaluate the completeness and usability of the documentation. And thirdly, I take into account community support for the targeted technology i.e. its size and activity level.
Grazhina Lebeckaya: Good documentation allows you to search for answers to any technical questions in the original source of information rather than in any third-party sources. It is also useful to consider the prior experience of other developers with a specific technology to understand what to expect in the process of its practical application.
Ivan Izobov: I appreciate it when a development tool for a web project comes with well-written documentation and an online sandbox (such as Svelte tutorials or DHTMLX code snippets), where you can try everything you read in the documentation. I also usually compare how much time I can save using a given technology in projects. One more important factor is the development community awareness of the reviewed library or utility. If not many programmers know about this tool, the chances are high that you will need a lot of time for solving any emerging issue related to its usage.
What are your thoughts on the assumption that the JS ecosystem is changing too fast?
Alex Klimenkov: Yes, TypeScript is awesome. Optional static typing and interfaces provided in TypeScript make everything better.
Anton Aksionau: Yes, TypeScript is a wonderful thing. It significantly simplifies code maintenance and helps avoid errors. Now it is hard to imagine the development process of large and complex projects without TypeScript.
Dmitry Sachko: TypeScript is great and it is certainly worth learning.
Grazhina Lebeckaya: Absolutely. With TypeScript, your code is more manageable during the development process.
Ivan Izobov: Yes, TypeScript helps you to avoid errors when writing code, thereby saving a lot of valuable time.
Dmitry Sachko: Sometimes I experience difficulties with managing dependencies and bundle sizes.
Dmitry Sachko: I wouldn’t mind having a standardized library containing everything that we frequently use during the development process.