State of JS 2025 Preview
- Previous suggestions: https://github.com/Devographics/surveys/issues/255
- Preview the survey: https://survey.devographics.com/en-US/survey/state-of-js/2025
Features
Added
-
Iterator Methods
-
Scheduler API
-
URLPattern
-
RegExp.escape
-
structuredClone()? (old but has never been in the surveys)
-
New Native Type question options:
- Runtime types (Types that are parsed at runtime by the browser)
- Type annotations (Compiler-level TypeScript-like type annotations that get stripped during bundling)
- JSDoc-like types (JSDoc-like types written as code comments)
Libraries
- Bring back "Back end Frameworks" section
- Added Bun in Build Tools category
- Added Analog and Quasar to meta-frameworks category
- Downgraded "Mobile & Desktop" section
- Downgraded "Monorepo Tools" section
Other Tools
- Brought back Utilities question (ESLint/Biome/etc.)
- Brought back Text Editors/IDEs question
- Add "Mobile & Desktop" section here
- Add "Monorepo Tools" section here
Usage
- Add: "I would prefer to use JavaScript without a build step" (agree/disagree/etc.)
Other Pending Questions
- Is it worth asking if people want runtime types?
- pro: some people do want them and are already finding workarounds to have them.
- cons: not realistically going to be implemented natively (although we can use the results as an opportunity to educate people about why that is not possible)
- Anything to add/remove from "Which of these active JavaScript proposals are you most excited about?" question?
- Anything to add/remove from "What do you feel is currently missing from JavaScript?" question?
- What is the status of JSSugar? Should we ask about that?
- There's also a parallel movement of standards-focused, no-build JS (see Remix blog post, "religiously runtime" for example). How could we best measure interest in this?
@js-choi pinging you about the pipe operator code example (see https://github.com/Devographics/surveys/issues/255#issuecomment-2800498832) as well as the other couple issues previously discussed.
For questions like "Which of these active JavaScript proposals are you most excited about?" and "What do you feel is currently missing from JavaScript?" it would be good to have a "None of the above" option. Without this I think there's an implicit bias in these questions towards expanding the language, rather than, for example, focusing on improving tooling, performance, security, etc.
A suggestion from a colleague is to consider a question like "What should engine developers focus on?" With options like performance, web compatibility (i.e. catch up on existing features), security, stability, new features.
New question:
What do you feel are the top advantages resulting from using a build step?
I think it would be interesting to try and capture why people are so dependent on build steps, in order to see how realistic runtime-only development really is in 2025?
It might also be interesting to ask a question about edge usage, especially how people deal with the runtime/environment differences when running serverless code. Not quite sure about the phrasing yet though.
Is it possible to add Bun in Monorepo Tools and Testing as well? Bun's runtime/bundler/test runner/package manager are tools that can all be used standalone
Oh, so I could add them as bun_monorepo and bun_testing for example?
Edit: I guess for me the criteria would be whether I can use bun test with an app that is not using Bun as its runtime. If so I would consider them independent projects and might add bun_test to the Testing section. If not, I think I would probably keep Bun only in the build tools section.
Otherwise people might start arguing that Next.js can be used as a back-end framework, that Astro can also be used as a front-end framework through .astro files, etc. and I feel like it'd just make the whole survey a lot more confusing…
@SachaG Yes exactly, feel free to use different names. You can use all tools standalone: you can use bun test without using the bun runtime for the rest of your app, bun install without using the runtime, use the runtime without using bun install, etc. :) Even though you get all of them when installing the Bun binary, they can all be used separately (and that's often what people end up doing).
For the monorepo section it could be "Bun Install" or ""Bun Package Manager" For testing it can be "Bun Test" or "Bun Test Runner"
Thanks for all the feedback! The survey is now live: https://survey.devographics.com/en-US/survey/state-of-js/2025