Module Federation 2.0 ra mắt bản ổn định: Mở rộng hỗ trợ vượt ra ngoài Webpack
Module Federation 2.0 đã đạt phiên bản ổn định, mang lại các cập nhật quan trọng như gợi ý kiểu TypeScript động và hỗ trợ thời gian chạy trên Node.js. Phiên bản mới tách biệt hoàn toàn runtime khỏi các công cụ xây dựng, giúp tương thích với nhiều bundler và framework phổ biến. Nó cũng giải quyết các thách thức trước đây bằng cách cung cấp công cụ quét tác động phụ và tích hợp dễ dàng hơn.

Module Federation 2.0, cơ chế micro-frontend mã nguồn mở từng được giới thiệu cùng với webpack 5, đã chính thức phát hành phiên bản ổn định 2.0. Bản cập nhật này đại diện cho một cuộc đại tu kiến trúc đáng kể, được xây dựng dựa trên kinh nghiệm hạ tầng nội bộ của ByteDance và hợp tác cùng Zack Jackson — tác giả gốc của Module Federation.
Phiên bản mới được công bố trên GitHub vào tháng 4 năm 2026 bởi đội ngũ Web Infra của ByteDance, mang đến những tính năng nổi bật như gợi ý kiểu dữ liệu TypeScript (type hints) động, lớp thời gian chạy (runtime) được tách rời, hỗ trợ Node.js và hệ sinh thái bundler được mở rộng đáng kể.
Gợi ý kiểu TypeScript động
Một trong những bổ sung quan trọng nhất trong phiên bản 2.0 là tính năng gợi ý kiểu động. Trước đây, khi sử dụng Module Federation, việc tiêu thụ một module từ xa trong dự án TypeScript đồng nghĩa với việc mất thông tin kiểu tĩnh, buộc các nhóm phải duy trì các gói kiểu chia sẻ hoặc chấp nhận sử dụng any.
MF 2.0 giải quyết vấn đề này bằng cách tự động tạo và tải các kiểu dữ liệu từ các module từ xa tại thời gian phát triển. Nó mang lại trải nghiệm kiểu dữ liệu có thể tải lại (hot-reloading) tương tự như khi sử dụng npm link. Rowan Powell, người viết cho Dunelm Technology, đã mô tả tính năng này là "được đơn giản hóa ngoạn mục", giúp nhà phát triển không còn phải lùng sục trong các tệp tin để tìm định nghĩa kiểu đúng đắn.
Tách biệt Runtime và mở rộng hệ sinh thái
Phiên bản 2.0 đã tách biệt hoàn toàn thời gian chạy của Module Federation khỏi công cụ xây dựng (build tool) bên dưới. Điều này chuẩn hóa việc triển khai trên các nền tảng và cho phép hành vi tải module nhất quán bất kể nhóm phát triển sử dụng bundler nào.
Sự hỗ trợ hiện đã bao phủ các công cụ như webpack, Rspack, Rollup, Rolldown, Rsbuild, Vite và Metro. Ở cấp độ framework, sự tích hợp bao gồm Next.js, Modern.js, Rspress và Storybook, cùng với hỗ trợ cho các thư viện UI như React, Vue và React Native. Độ rộng của hệ sinh thái này giải quyết một điểm ma sát lâu đời: các nhóm trước đây ngần ngại áp dụng Module Federation do sự phụ thuộc chặt chẽ vào webpack nay có thể tích hợp nó mà không cần thay đổi chuỗi công cụ hiện có.
Hỗ trợ thời gian chạy Node.js
Một mở rộng kiến trúc đáng chú ý trong MF 2.0 là hỗ trợ thời gian chạy Node.js hạng nhất. Điều này có nghĩa là các module từ xa có thể được tiêu thụ bởi các lớp kết xuất phía máy chủ (server-side rendering), các dịch vụ backend-for-frontend và các microservice Node. Điều này cho phép một mô hình phân phối module thống nhất trên cả giao diện người dùng (frontend) và backend.
Giao thức mf-manifest.json mới được giới thiệu để đơn giản hóa tích hợp với nền tảng triển khai, giúp việc quản lý phiên bản và tài nguyên trở nên dễ dàng hơn giữa các ứng dụng được triển khai độc lập.
Công cụ phát triển và di chuyển
Đối với các nhóm lo ngại về các tác động phụ (side effects) khi áp dụng module từ xa, MF 2.0 đi kèm với Side Effect Scanner. Đây là công cụ CLI phân tích tĩnh đầu ra của bản build để xác định ô nhiễm biến toàn cục, đăng ký bộ lắng nghe sự kiện và tác động của phạm vi bộ chọn CSS trước khi tích hợp.
Ngoài ra, một tiện ích mở rộng Chrome đã được nâng cấp cung cấp hình ảnh hóa phụ thuộc thời gian chạy với giao diện người dùng mới và khả năng gỡ lỗi mạnh mẽ hơn.
Đối với các nhóm đang di chuyển từ Module Federation 1.x, dự án hỗ trợ áp dụng tăng dần. Plugin v2 được phân phối dưới tên gói @module-federation/enhanced và việc chuyển đổi chỉ cần cập nhật nhập khẩu plugin trong cấu hình bundler.
Phản hồi của cộng đồng
Phản ứng của cộng đồng nói chung là tích cực về các tính năng gợi ý kiểu và bổ sung Chrome DevTools, mặc dù vẫn còn một chút hoài nghi. Trên Reddit, một nhà phát triển đã lưu ý rằng Module Federation vẫn là một "cơn đau đầu" và so sánh nó với công cụ monorepo:
"Tôi đã thử Module Federation và nó thực sự phiền toái. Monorepo mang lại trải nghiệm nhà phát triển tốt hơn nhiều nếu bạn sử dụng các công cụ như pnpm monorepos với catalogs và turborepo. Tôi đã làm việc trong các dự án với hàng chục gói nội bộ và ứng dụng, và nó xử lý chúng khá tốt."
Các phương pháp cạnh tranh như Single-SPA, bản đồ nhập khẩu (import maps) và Piral tiếp tục thu hút các nhóm tìm kiếm chiến lược micro-frontend nhẹ nhàng hơn mà không cần phụ thuộc vào plugin bundler. Tuy nhiên, khả năng đàm phán phiên bản runtime và tích hợp biên lỗi (error boundary) tích hợp sẵn của Module Federation vẫn là những điểm khác biệt quan trọng ở quy mô lớn.
Module Federation là một mô hình kiến trúc mã nguồn mở và hệ sinh thái plugin cho phân hủy ứng dụng JavaScript, ban đầu được Zack Jackson giới thiệu như một phần của webpack 5 và hiện được duy trì chung bởi đội ngũ ByteDance Web Infra và cộng đồng rộng lớn hơn. Nó được phát hành theo giấy phép MIT và gói cốt lõi của nó, @module-federation/enhanced, có sẵn trên npm.



