Skip to content

Commit 0ff06f6

Browse files
docs(blog): update roadmap for 2026 with CSS Modules support details (#7780)
* docs(blog): update roadmap for 2026 with CSS Modules support details * docs(blog): add details on universal target support * docs(blog): integrate HTML module support as entry points without plugins * docs(blog): expand TypeScript support by eliminating loader requirements * docs(blog): add support for Deno and Bun * docs(blog): enhance support for Node, Deno, and Bun with a runtime-agnostic architecture * docs(blog): simplify asset minimization by consolidating multiple plugins into a single minimizer-webpack-plugin * docs(blog): update section headers * docs(blog): update roadmap details for universal target and ESM output progress * docs(blog): enhance design and visual identity with new assets for projects and merchandise * docs(blog): enhance documentation accuracy by enabling auto-generation from webpack types and schemas * docs(blog): add section on community outreach and engagement to enhance developer connections * docs(blog): streamline webpack's development experience with improved dev tooling and CLI enhancements * docs(blog): add GSoC mentorship section to highlight student engagement and open source sustainability * docs(blog): add Multithreading API section to outline performance improvements and ongoing design discussions * docs(blog): add section on donations and sponsorships to emphasize funding importance for webpack maintenance * docs(blog): add section on lazy barrel optimization to explore performance improvements inspired by Rspack * docs(blog): update roadmap for Webpack 6 preparation, highlighting core improvements, testing priorities, and performance benchmarks * docs(blog): refine language and formatting in roadmap for 2026, enhancing clarity and readability * docs(blog): enhance runtime compatibility section, detailing webpack's support for alternative JavaScript runtimes and intelligent module handling * docs(blog): add links to discussions on experimental CSS support and universal target for cross-runtime compatibility * docs(blog): move section * docs(blog): update roadmap for 2026, enhancing clarity and excitement about upcoming features * chore: revise text Co-authored-by: Sebastian Beltran <bjohansebas@gmail.com> --------- Co-authored-by: Even Stensberg <evenstensberg@gmail.com>
1 parent 195342c commit 0ff06f6

1 file changed

Lines changed: 124 additions & 29 deletions

File tree

src/content/blog/2026-04-02-roadmap-2026.mdx

Lines changed: 124 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,62 +3,157 @@ title: Roadmap 2026 (2026-02-04)
33
sort: 9
44
contributors:
55
- evenstensberg
6+
- bjohansebas
67
---
78

89
Hello from the webpack Technical Steering Committee member [Even](http://x.com/evenstensberg)!
910

10-
The different contributors in the organization are working hard to ensure that webpack is still a good alternative to building your web applications. Even though there has emerged a lot of different tools lately, we hope that using webpack as a stable choice is still an option for you.
11-
Our work this year is not only focused on improving existing functionality, but also work on some new things that might be beneficial in other ways.
11+
The different contributors in the organization continue to work on ensuring that **webpack remains a solid and reliable tool** for building web applications. While many new tools have emerged, webpack continues to be a **stable and well-supported choice**.
1212

13-
## So what is on our agenda this year? Let me walk you through it!
13+
## Here’s what we’re excited about for 2026
1414

15-
- **CSS modules** — built-in CSS support in webpack (≈90%). Native CSS support [webpack#14893](https://github.com/webpack/webpack/issues/14893). ETA: Feb–Mar.
15+
In 2026, our focus goes beyond maintaining existing features. We’re investing in improvements that make webpack easier to use and maintain, while also pushing forward ideas that prepare the project for modern runtimes, evolving development patterns, and the long-term health of the ecosystem.
1616

17-
- **Universal target** — works across Node.js, browsers, Deno, and Bun (≈98%). Finish CommonJS wrapper, add `target: "universal"`, and expand tests. Outputs ESM only; write environment-agnostic code.
17+
Below, we’ll walk through the main areas we’re actively working on and the ideas we plan to develop throughout the year.
1818

19-
- **TypeScript** — built-in support. [`enhanced-resolve`](https://github.com/webpack/enhanced-resolve) honors [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html). Add parser wrapper to `module.javascript.parse`, improve resolver for `ts/cts/mts`, support `extensionAlias`, and add tests.
19+
### Support for CSS Modules without the need for plugins
2020

21-
- **HTML modules** — first-class HTML: import HTML files and use HTML entry points. Aim to replace `html-webpack-plugin`. See [webpack#536](https://github.com/webpack/webpack/issues/536).
21+
There is currently an [`experimental.css`](/configuration/experiments/#experimentscss) option, which enables **native CSS support** without the need to add plugins to your configuration, as was previously required with plugins like [`mini-css-extract-plugin`](/plugins/mini-css-extract-plugin).
2222

23-
- **ESM output** — fixes and improvements. See [webpack#17121](https://github.com/webpack/webpack/issues/17121).
23+
The development is already quite advanced, with the possibility of finishing the inclusion into webpack core around **February/March**. After that, the support would remain _experimental_ for a while to gather bug reports, but in **webpack 6** it will no longer be experimental and **plugins for this task will no longer be necessary**.
2424

25-
- **Webpack everywhere** — build webpack for Node and web (including universal), reduce Node internals and Buffer usage, add a site playground.
25+
You can follow the discussion about [experimental CSS support](https://github.com/webpack/webpack/issues/14893)
26+
to stay updated and contribute ideas.
2627

27-
- **Deno & Bun** — Deno supported; add tests. Bun: assess and test.
28+
### A universal target to make your code compatible across runtimes
2829

29-
- **Lazy barrel** — evaluate Rspack’s approach.
30+
The idea is to add a new target called **universal**, which will compile your code so it can run across **different runtimes**, including Node, the web, Bun, Deno, etc.
31+
Regardless of whether you use **CommonJS modules** in your application, webpack will be able to wrap them, and all the resulting code will be **pure ESM**, making it _runtime-agnostic_.
3032

31-
- **Dev tooling** — merge `webpack-dev-middleware` and `webpack-hot-middleware`. Extract overlay from dev-server and consolidate overlay + WS/EventSource logic for reuse. Add plugin support to dev-server.
33+
There has already been significant progress toward this goal, but **ESM output is not fully finished yet**. Additional fixes and improvements are still required (see [webpack#17121](https://github.com/webpack/webpack/issues/17121)), along with **adding missing tests** and completing the _CommonJS wrapper functionality_.
3234

33-
- **CLI** — consolidate packages, refactor help and subcommand logic. See [webpack-cli#4619](https://github.com/webpack/webpack-cli/issues/4619).
35+
You can also join the discussion about [universal target](https://github.com/webpack/webpack/issues/6525) to share your ideas or follow updates on cross-runtime compatibility.
3436

35-
- **Docs & site** — auto-generate options docs from webpack schemas/types into JSON, then render Markdown on the site. Priority: accurate, complete docs.
37+
### Support for building TypeScript without loaders
3638

37-
- **Minimizers** — combine `terser-webpack-plugin`, `css-minimizer-webpack-plugin`, `html-minimizer-webpack-plugin`, and `json-minimizer-webpack-plugin` into one `minimizer-webpack-plugin`.
39+
Recently, in version [5.105](/blog/webpack-5-105/) we included support for **resolving the paths defined in the TypeScript configuration**, eliminating the need to use a plugin ([tsconfig-paths-webpack-plugin](https://www.npmjs.com/package/tsconfig-paths-webpack-plugin)). Now we want to further expand TypeScript support by **removing the need to use a loader** (the most common one being _ts-loader_) to transpile TypeScript directly in webpack, which would also **reduce your project’s dependencies**.
3840

39-
- **Multithreading API** — bring ideas from [`thread-loader`](https://github.com/webpack/thread-loader) into core; needs design discussion.
41+
### Import HTML files and use them as entry points without the need for plugins
4042

41-
- **Design** — new design assets for projects and swag.
43+
Currently, to import HTML files and use them as entry points, it’s necessary to use a plugin ([_html-webpack-plugin_](/plugins/html-webpack-plugin)). The idea is to **integrate that plugin into the core**, similar to how CSS Modules are being handled, and remove the need for a plugin for such a common task. Like CSS Modules, this would be introduced as an _experimental option_, so that in **webpack 6** you’ll be able to remove that dependency.
4244

43-
- **Community** — outreach via articles and conferences.
45+
You can follow the idea and its progress in [webpack#536](https://github.com/webpack/webpack/issues/536).
4446

45-
- **GSoC** — mentor students starting their OSS journey.
47+
### Webpack Everywhere (Node, Deno, and Bun, Web)
4648

47-
- **Donations** — grow sponsorships to sustain maintenance.
49+
Node.js is still the **default runtime** for many projects, but times have changed and it’s no longer the only JavaScript runtime. New options like **Deno** and **Bun** have gained significant popularity, and webpack should work seamlessly across all of them.
4850

49-
## Other tasks
51+
The goal is to build webpack so it can run **everywhere**: in Node.js, in web environments, and in alternative runtimes like Deno and Bun. Even when using modules traditionally tied to Node.js, such as `node:fs`, webpack will intelligently handle them, enabling code that depends on these modules to **run in the browser** or other environments where these modules don’t exist.
5052

51-
- Move `loader-runner` into core to unify loader context logic.
52-
- Reduce internal TODOs in preparation for webpack@6.
53-
- Improve test coverage.
54-
- Strengthen type coverage (fewer `any/unknown/...`).
55-
- Add more benchmarks (potentially merge with [`webpack/benchmark`](https://github.com/webpack/benchmark)) and CI to compare versions.
53+
To achieve this, we need to **reduce reliance on Node.js internals** and _Buffer usage_, move toward a **more runtime-agnostic architecture**, and expand test coverage.
5654

55+
Currently, **Deno support is missing proper tests**, while **Bun still lacks required assets and corresponding tests**. In addition, this effort includes adding a **site playground** to validate and showcase webpack running across different environments.
56+
57+
### Evaluating Lazy Barrel Optimization
58+
59+
One interesting idea to explore is **lazy barrel optimization**, inspired by how _Rspack_ handles certain module patterns. In Rspack, _lazy barrel_ is an optimization that **skips building unused re-exported modules in side‑effect‑free barrel files until they’re actually needed**. This can significantly reduce build work, especially in **large codebases** with lots of grouped exports.
60+
61+
Barrel files are modules that **re-export other modules** to create a convenient API surface. For example, a `components/index.js` that exports every component from a directory. While useful for organizing code, traditional bundlers often build _all_ the re-exported modules even if only one is used, which can hurt performance. With _lazy barrel optimization_ in Rspack, **only the modules actually referenced get built**, skipping the rest and improving overall build speed.
62+
63+
Evaluating Rspack’s approach gives us an opportunity to see whether a **similar strategy could benefit webpack**, improving performance around commonly used barrel patterns without requiring developers to restructure their exports manually. It’s an example of looking outward at innovations in the ecosystem to inform possible future enhancements for webpack.
64+
65+
### Simplifying Asset Minimization in Webpack
66+
67+
Webpack currently relies on **multiple separate minimizer plugins**, such as `terser-webpack-plugin`, `css-minimizer-webpack-plugin`, `html-minimizer-webpack-plugin`, and `json-minimizer-webpack-plugin`. While each one works well on its own, **managing them individually adds extra configuration and maintenance overhead**.
68+
69+
The idea is to **combine all of these into a single `minimizer-webpack-plugin`**, providing a more **unified and consistent minimization experience**. This would **simplify configuration**, reduce duplication, and make it easier to extend and maintain minimization logic across different asset types.
70+
71+
### Streamlining Webpack’s Dev Experience
72+
73+
Webpack’s **development and CLI tools** are being improved to enhance maintainability while also introducing **new features** for contributors and users alike.
74+
75+
#### Dev Tooling
76+
77+
Efforts in dev tooling focus on **improving webpack’s internal development workflow** and making it easier to extend and maintain. This includes **merging webpack-dev-middleware and webpack-hot-middleware**, **extracting the overlay from dev-server**, and **consolidating overlay + WebSocket/EventSource logic for reuse**.
78+
79+
Additionally, **plugin support** will be added to the dev-server, enabling more flexibility and reducing duplication. These improvements streamline development for contributors while keeping webpack **flexible and reliable** for users.
80+
81+
#### CLI Improvements
82+
83+
The CLI is being refined to **simplify maintenance** and **improve usability**. Work includes **consolidating packages**, **refactoring help and subcommand logic**, and **improving the overall developer experience** (see [webpack-cli#4619](https://github.com/webpack/webpack-cli/issues/4619)).
84+
85+
These changes make it easier for contributors to maintain the CLI while also providing **practical enhancements** for developers working with webpack in their projects.
86+
87+
You can follow the [webpack-cli improvements](https://github.com/webpack/webpack-cli/issues/4619) discussion to stay updated.
88+
89+
### Accurate and Reliable Documentation
90+
91+
The idea is to **enable automatic generation of all API and configuration documentation** directly from webpack’s **types and schemas**, ensuring the documentation **always matches the actual behavior** of the code.
92+
93+
This approach addresses long-standing problems with **incomplete, outdated, or inconsistent documentation** on the webpack website, and makes it easier to maintain. The goal is to provide developers with **accurate, reliable, and up-to-date references** they can trust.
94+
95+
### Community Outreach and Engagement
96+
97+
Following improvements to documentation and the site, another key focus is **building and strengthening the webpack community**. This year, the effort began with a **new blog launched for webpack 5.105**, and the idea is to continue expanding it through **articles, conference talks, and other public channels**.
98+
99+
By engaging the community, webpack can **grow adoption**, receive **valuable input**, and create stronger connections between the project and its users. Outreach efforts also help ensure that improvements, tutorials, and best practices reach a **wider audience**, making the ecosystem more vibrant and sustainable.
100+
101+
### Multithreading API
102+
103+
Webpack is exploring a **Multithreading API**, inspired by _thread-loader_, to bring **better parallel processing capabilities** into the core.
104+
105+
The goal is to allow webpack to take advantage of **multi-core systems**, improving build performance for **large projects**. This effort is still in the **design and discussion phase**, aiming to create a solution that is **flexible, maintainable, and easy to use**.
106+
107+
By integrating multithreading in a more formal way, webpack hopes to provide developers with **faster builds** while keeping the configuration and internal logic **clean and scalable**. This work reflects ongoing exploration rather than a finalized feature, and _thread-loader_ remains the current **community-supported solution** for parallelization.
108+
109+
### Design and Visual Identity
110+
111+
We want to **improve webpack’s overall visual identity** by creating **new design assets** for projects and swag. This includes things like **banners, clothing merch, water bottles, coffee cups, socks**, and other branded materials.
112+
113+
Beyond making webpack look **more polished and recognizable**, these assets also open the door to **future merchandise sales**, where purchasing swag would directly help fund and support webpack’s ongoing development.
114+
115+
### GSoC Mentorship
116+
117+
A key focus is **mentoring students through the Google Summer of Code (GSoC) program**, a volunteer-driven effort with the goal of teaching them how to **effectively maintain open source projects**.
118+
119+
Through hands-on guidance, students learn **workflows, best practices**, and how to approach maintaining a codebase. At the same time, this mentorship allows the project to **develop new features**, as students work on functionalities that are needed while being guided by experienced contributors.
120+
121+
This experience equips them with the skills needed to become **future maintainers**, contributing not only to webpack but also to the **broader open source ecosystem**, which relies heavily on volunteers.
122+
123+
By emphasizing **maintainability, knowledge transfer**, and **guided feature development**, GSoC mentorship helps secure **long-term sustainability** and cultivates the **next generation of contributors** for open source projects.
124+
125+
### Donations and Sponsorships
126+
127+
Open source projects like webpack are maintained primarily by **volunteers**, and there isn’t a full-time engineering team dedicated to the project.
128+
129+
**Growing donations and sponsorships** is crucial because the more funding available, the more time the core contributors can dedicate to **maintaining and improving webpack**, despite having other responsibilities and personal lives.
130+
131+
Support through donations not only helps **sustain ongoing maintenance** but also enables contributors to focus on **new features, bug fixes**, and **improving the ecosystem** overall. By contributing financially, the community directly helps ensure webpack remains **healthy and actively developed**.
132+
133+
### Preparing for Webpack 6
134+
135+
All the efforts covered in this blog, from enhancing runtime support (Node, Deno, Bun, and universal targets), improving documentation and developer tooling, mentoring new contributors through GSoC, to exploring multithreading and optimizations like lazy barrel, are paving the way toward **webpack 6**.
136+
137+
#### Core and Loader Improvements
138+
139+
To prepare for **webpack@6** and simplify internal logic, efforts include **moving loader-runner into core** to unify loader context handling. This helps reduce duplication, improves maintainability, and lays the groundwork for future enhancements.
140+
141+
Additionally, **reducing internal TODOs across the codebase** ensures a **cleaner foundation** and makes it easier for contributors to work efficiently.
142+
143+
#### Testing and Type Coverage
144+
145+
**Improving test coverage** and **strengthening type coverage** are key priorities. By reducing the use of `any`, `unknown`, and other loose types, webpack becomes **more reliable** and easier to maintain. Strong types and thorough tests help **catch issues earlier** and improve confidence for contributors making changes.
146+
147+
#### Benchmarks and Performance
148+
149+
To measure progress and maintain **high performance standards**, webpack plans to **add more benchmarks**. Integrating these benchmarks into CI pipelines allows **comparisons across versions**, ensuring that optimizations continue to deliver **tangible improvements** for developers.
57150

58151
## Final remarks
59152

60-
I hope that you found this list useful and that you are excited for 2026, we are! One of the most important parts of our work now, is to get enough donations to keep the project sustainable. We use our resources on payouts for all contributors once they reach a certain threshold. In addition to that, we want to make sure that over time, the project has some left-over resources so that we can save when times are hard. We also want to give back to our maintainers working hard to make the project great in terms of merch (aka swag). This year we will try something new, which is so have dedicated sections where companies/individuals that contribute a significant amount will have a place to showcase their product/thing.
153+
I hope that you found this list useful and that you are **excited for 2026**, we are! One of the most important parts of our work now, is to **get enough donations** to keep the project sustainable. We use our resources on **payouts for all contributors** once they reach a certain threshold. In addition to that, we want to make sure that over time, the project has **some left-over resources** so that we can save when times are hard. We also want to give back to our **maintainers working hard** to make the project great in terms of **merch (aka swag)**.
154+
155+
This year we will try something new, which is to have **dedicated sections** where **companies/individuals that contribute a significant amount** will have a place to **showcase their product/thing**.
61156

62-
If you are interested in contributing to the organization either finanically or whatnot, please reach out to us! 💙
157+
If you are interested in contributing to the organization either **financially** or otherwise, please **reach out to us!** 💙
63158

64-
~ webpack TSC
159+
~ webpack TSC

0 commit comments

Comments
 (0)