I researched OXC a bit, and it seems it could be the tool that best fits us now and later. It implements many components, all written in Rust, that could be useful not only to ensure linting and formatting, but also as tools that can be used as part of the bundler to get more out of it.
As you know, we adopted Rspack in Meteor 3.4, which uses SWC via builtin:swc-loader. The builtin: part means SWC runs entirely inside Rspack’s Rust process with no JS bridge overhead. Rspack has shown some interest in OXC recently. It used OXC’s resolver but later forked it, and community packages let you use OXC as a transformer (oxc-webpack-loader or unplugin-oxc), but they lose the builtin: advantage through the JS bridge. Rspack’s 2.0 roadmap does not mention OXC for core transpilation, and the team seems more inclined to build its own tooling. It could happen that other tooling like Rslint use directly OXC at some point. Deeper integration may or may not happen, but at least there have already been moves toward its benefits in some bundler parts.
Worth noting that Rolldown, Vite 8’s bundler, already bets on this fully, using OXC for parsing, transformation, and minification. This is where toolchain fatigue feels real. Babel to SWC was 20x faster. Webpack to Rspack was 23x faster. Now OXC is apparently 3x faster than SWC. Each leap is meaningful, but none of them are just optimizations. They are architectural rewrites that result in better memory allocation, unified ASTs, and tighter coupling from day one. A newer tool starts with the lessons of the previous one, and the cycle repeats.
That makes doing this at the Meteor level worthwhile on its own. By adopting it as the linter, it would be good to start experimenting with the tool. It may or may not become part of Rspack at some point, officially or through the community, as already happens today. If it really claims to be faster and users can measure that, it can be a tool ecosystem worth investing resources in. I can also see OXC being part of Meteor atmosphere package processing as a replacement for SWC, to theoretically gain 3x faster builds in package compilation or in Meteor apps using the pure bundler. I am not sure yet about SWC/Babel plugin support for the transpiler, though. Anyway, for the moment, and seeing how quickly the ecosystem evolves, that 3x gain may not be worth it yet. We could wait and see what direction Rspack takes regarding OXC adoption before making a core decision.
With this, I just want to say that OXC is a really interesting tool that we could explore and gain experience with for later benefit, even for Meteor core integration. I remember some community member already shared it before or even opened a PR recently adopting the parser (experiment(isobuild): Isobuild Performance Optimizations by mvogttech · Pull Request #14218 · meteor/meteor · GitHub), so now that we have the chance to adopt it, I would go with it.
So after all this discussion, my preference would be to focus on adopting OXC as the linting and formatting tool, with the possibility of benefiting from other areas it touches later, and knowing it’s the approach followed by Vite’s next-gen bundler.
What do you think?