Zack Jackson's Avatar

Zack Jackson

@scriptedalchemy.bsky.social

Rspack Core Team | Creator of Module Federation. Infra Architect @ ByteDance

907 Followers  |  50 Following  |  46 Posts  |  Joined: 05.11.2024  |  1.6123

Latest posts by scriptedalchemy.bsky.social on Bluesky

Preview
Nx and Angular with Rspack and Module Federation - ANGULARarchitects In just a few years, Module Federation grew from a first implementation that shipped with webpack 5 to a whole ecosystem. Meanwhile, we have an implementation for rspack, a port to vite, and a…

The first thing I tried out when I found the new rsbuild plugin for Nx and Angular under the X-mas tree was Module Federation. Here you find all the details πŸ‘‡

02.01.2025 21:42 β€” πŸ‘ 11    πŸ” 3    πŸ’¬ 1    πŸ“Œ 1
Preview
Lynx Empower the web community and invite more to build cross-platform apps

Haven't logged in for a while.
Update; we released Lynx. Our cross-platform app framework. lynxjs.org/blog/lynx-un...

18.03.2025 22:37 β€” πŸ‘ 12    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
A laptop screen displays a video call on the Riverside platform featuring Kent C. Dodds on the left and Zachary Jackson on the right. Kent is wearing a red shirt and speaking with a focused expression. His background includes a glowing β€œEpic” sign and shelves with decorative items. Zachary has dark hair, a beard, and is wearing earbuds while smiling slightly. His background features a workspace with tools mounted on the wall. The call has been recording for 24 minutes and 3 seconds, as indicated by the timer at the bottom of the screen. The interface shows recording, microphone, camera, and call controls.

A laptop screen displays a video call on the Riverside platform featuring Kent C. Dodds on the left and Zachary Jackson on the right. Kent is wearing a red shirt and speaking with a focused expression. His background includes a glowing β€œEpic” sign and shelves with decorative items. Zachary has dark hair, a beard, and is wearing earbuds while smiling slightly. His background features a workspace with tools mounted on the wall. The call has been recording for 24 minutes and 3 seconds, as indicated by the timer at the bottom of the screen. The interface shows recording, microphone, camera, and call controls.

Man I just love talking with @scriptedalchemy.bsky.social. Such a smart guy solving massive scale problems at @bytedance.bsky.social. Very excited to talk with him more at #EpicWebConf. Look forward to his interview coming up soon.

03.02.2025 21:43 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Yeah nx doesn't have a wrapper for it yet

18.03.2025 22:33 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I just like the import from style for MFE and many others did too. But that my personal preference others followed. Federation works with many other patterns. LOSA is what single spa uses. That works too.

20.12.2024 04:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

But byte had unified infra. So, the infra team controls most aspects like this in our meta frameworks. These problems are primarily experienced by outside users, hence the bridge layer.
Alternatively, you can do older school LOSA architecture, which is immune to this particular issue.

20.12.2024 04:31 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

We also control all package versions via a server since federation is bound to vmok in house. So we just change a drop down selection to adjust supply chain. If there's a incompatibility then either we pin those to versions that work or enable the bridge till end user updates on their own time.

20.12.2024 04:27 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Internally we bake the framework bridges into a runtime plugin. So the system automatically detects incompatible majors and will wrap the imported module in an adapter on the way to the consumer. So consumer wouldn't even know. Externally we just expose the bridge system so less witchcraft

20.12.2024 04:26 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Yeah. So this is a problem of my own making with the import from polylith style.
1. we have share scope, allowing multiple singletons
2. we provide adapter and framework bridges allowing you to mount other apps or majors

19.12.2024 23:50 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Please go fix react πŸ˜…

04.12.2024 11:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Lil bro > Dax

30.11.2024 23:27 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Whats your raw rolldown speed expected if js wasn't bottlenecking it? Pretty good speedup for drop-in. Rspack does about 3x when babel loaders are used heavily.

30.11.2024 06:11 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Rspack has reached 1 million monthly downloads. πŸŽ‰

29.11.2024 08:42 β€” πŸ‘ 23    πŸ” 2    πŸ’¬ 3    πŸ“Œ 0

You beat me to it

29.11.2024 07:26 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Federation examples repo/runtime-plugins/remote-router or one of the other ones.
Also Federation already supports remote types, as does using it at runtime with loadRemote instead of import.

27.11.2024 00:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

But federation would see the key in its cache and just use the first one it found. Meanwhile I need to load it again and change it's source. So the key can't just be what the request is. Since "react" is technically two different modules now.

27.11.2024 00:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

The problem with module sharing is it does not carry layer info. So if the import is "react" the resolver cache thinks it's already fulfilled, returning the first react variant that matches. But layers means you can import react again and it resolve to something else.

27.11.2024 00:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
feat(enhanced): support layers in consume share plugin by ScriptedAlchemy Β· Pull Request #3276 Β· module-federation/core Description This pull request introduces several enhancements and fixes to the module sharing functionality in the enhanced package. The changes include updating the ConsumeSharedModule and Consume...

First phase of adding layer support to module federation.
Layers is how RSC and ReactLynx are able to work.
It allows you to share a package like "react" as a singleton, but it can mean different things to each layer.
github.com/module-feder...

27.11.2024 00:52 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Yeah. Basically any time you could not statically know what it is you want. Like you can do dynamic remotes with runtime plugin if all you want to do is swap out the urls etc. But if you needed to import(unknown/unknown) and there's nothing you know to configure at compule time then dynamic is πŸ‘Œ

26.11.2024 20:05 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

I got Lynx running on my phone after many delays!
ReactLynx compiles in a mere 100ms. Orders of magnitude better than react-native πŸ‘Œ excited for this one. Looks like a banger in the making.
Hermes better watch out!

23.11.2024 11:17 β€” πŸ‘ 5    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Call me crazy. But we should buy it πŸ˜†

23.11.2024 10:37 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
GitHub - nrwl/nx: Smart Monorepos Β· Fast CI Smart Monorepos Β· Fast CI. Contribute to nrwl/nx development by creating an account on GitHub.

Let it rain ✨ & celebrate OSS πŸš€

Quote this post to keep the appreciation train going and
πŸ‘‰ list 3 OSS repos with links
⭐ star them on GH
🌟 star all repos of ur quote train 🀩

Mine:
- github.com/vitejs/vite
- github.com/web-infra-de...
- github.com/nrwl/nx (obsly πŸ˜…)

22.11.2024 12:49 β€” πŸ‘ 27    πŸ” 3    πŸ’¬ 0    πŸ“Œ 3

Hey, just in case you didn't see. There's some ssl/tls upgrades coming

22.11.2024 09:23 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Watch them just fork chromium and ship another one within weeks.

22.11.2024 09:05 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Bundlers should be language agnostic from the get go.

21.11.2024 07:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Then no problem

20.11.2024 22:54 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I wonder why the US cut it this time

19.11.2024 03:08 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Wait wait. We have never met in person?! I could have sworn we bumped into each other somewhere. But I may be getting a non Simpsons photo confused with our GH interactions over the years. Either way it was awesome to meet you again/first time in person after so long

19.11.2024 03:07 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Just cjs everything

19.11.2024 02:58 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image Post image

Thank you for your astonishing talk @scriptedalchemy.bsky.social 😍

18.11.2024 19:36 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

@scriptedalchemy is following 20 prominent accounts