Waku's Cloudflare example is also updated to use this approach, which now allows accessing bindings API during SSG github.com/wakujs/waku/...
06.11.2025 09:38 β π 2 π 0 π¬ 1 π 0@hiogawa.bsky.social
https://github.com/hi-ogawa @vitest.dev @vite.dev contributor
Waku's Cloudflare example is also updated to use this approach, which now allows accessing bindings API during SSG github.com/wakujs/waku/...
06.11.2025 09:38 β π 2 π 0 π¬ 1 π 0I created a package to expose `import "cloudflare:workers"` through Node custom loader and wrangler's `getPlatformProxy`.
Here is a React Router RSC framework mode example with Cloudflare KV github.com/hi-ogawa/vit....
Waku now supports custom base. Here is an example of SSG site deployed to Github Pages hi-ogawa.github.io/waku-example...
`@vitejs/plugin-rsc` takes care of base path for handling static assets, so the required change on Waku was only application routing logic github.com/wakujs/waku/...
Nice! Thanks for pinging the team π
27.10.2025 23:47 β π 2 π 0 π¬ 1 π 0My talk slides are available here hiroshi-talks.vercel.app/2025-10-25/1 also with source code in github.com/hi-ogawa/talks It was a great experience to talk with many awesome folks in person! Thanks @vuefes.bsky.social for the opportunity!
27.10.2025 09:18 β π 14 π 3 π¬ 0 π 0This is possible in principle though there's some limitations github.com/hi-ogawa/vit.... It turns out React Router RSC API allows overriding internal RSC requests without patching global `fetch`, Not so obvious demo, but here "server" component is accessing `window.navigator`. π
22.10.2025 10:14 β π 17 π 2 π¬ 1 π 0First time speaking at a conference!
18.10.2025 04:13 β π 21 π 2 π¬ 3 π 0Okay, here is my attempt with a fun demo! github.com/jacob-ebey/v...
17.10.2025 03:37 β π 3 π 0 π¬ 1 π 0There's also an example / test case here github.com/vitejs/vite-... Though mine is quite a rough sketch, the important part is to use temporary references to achieve "donut pattern" (i.e. static shell + dynamic children). I've wanted Jacob to pick up this part in his library.
17.10.2025 01:01 β π 2 π 0 π¬ 2 π 0`?assets` query import is just a virtual module and it's aimed to be runtime agnostic. You can find examples with `@cloudflare/vite-plugin` github.com/hi-ogawa/vit... and Nitro vite plugin github.com/nitrojs/vite...
15.10.2025 04:24 β π 1 π 0 π¬ 0 π 0Also just right time, Remix 3 came out with a builtin concept of "hydrated component", so I ported Preact island demo. The plugin here implements `/islands/` and `/frames/` directories convention to auto wrap component by Remix `hydrated` and `Frame`. github.com/hi-ogawa/vit...
15.10.2025 04:24 β π 3 π 1 π¬ 1 π 0Here are examples for React router, Vue router, and Preact-based islands. These are super minimal examples, but eventually I'm hoping to be able to provide primitives for higher level meta-frameworks just like `@vitejs/pllugin-rsc` has provided foundation for Waku and React router.
15.10.2025 04:24 β π 2 π 0 π¬ 1 π 0I wrote a proposal for improving client assets management on Vite SSR application by introducing `?assets` query import. It includes many examples to demonstrate how it can be used in various routers and frameworks setup. Feedback is appreciated! github.com/vitejs/vite/...
15.10.2025 04:24 β π 11 π 3 π¬ 1 π 0Here is a PR github.com/facebook/rea...
08.10.2025 09:19 β π 3 π 0 π¬ 0 π 0I just realized my name is on React 19.2.0 release note. Due to client reference being lazy component, it was super tricky for Vite RSC and Waku (though we ended up finding a workaround). I'm glad I was able to land my first PR on React to fix this!
08.10.2025 09:19 β π 20 π 0 π¬ 1 π 0For this use of `"use server"` to work, the route needs to be `ServerComponent` route.
26.09.2025 06:18 β π 1 π 0 π¬ 1 π 0Quick improvement to reduce potential confusion of "use server" on React Router RSC framework mode github.com/vitejs/vite-... Previously following "use server" is silently ignored, but this should be flagged as build error as React router inject `"use client"` for `export default` routes.
26.09.2025 06:18 β π 1 π 0 π¬ 1 π 0Forgot to mention that this means it works with Waku too (and this is actually what I tested originally) github.com/hi-ogawa/wak...
25.09.2025 06:42 β π 0 π 0 π¬ 0 π 0This nitro plugin is something I made based on how Tanstack Start integrates Nitro. Now I'm working on making the official Nitro Vite plugin to support RSC plugin out of the box. github.com/nitrojs/nitr... github.com/vitejs/vite-...
25.09.2025 03:26 β π 8 π 0 π¬ 2 π 0I've been experimenting with Nitro and made a plugin for `@vitejs/plugin-rsc`-based app
to be deployed anywhere. Here is an example with React Router RSC! github.com/hi-ogawa/rea...
Read the updated documentation for more info! github.com/vitejs/vite-...
It's good to know Next.js clarifies this as a "framework feature" and not package's own behavior, which I obviously referenced it when adding the doc π nextjs.org/docs/app/get...
Improved the error message of invalid `server-only` and `client-only` imports on Vite RSC plugin! These "only" packages provide errors only during runtime on their own, but I didn't see any reason not to surface as build time error, so it has been included as a "plugin feature".
17.09.2025 04:35 β π 3 π 0 π¬ 1 π 0Actually while testing this, I found a bug in rsc plugin, which was causing a weird font flash during dev, but it's now fixed in latest release github.com/vitejs/vite-.... The demo app is found in github.com/hi-ogawa/rep...
15.09.2025 06:20 β π 2 π 0 π¬ 0 π 0Additionally, metric-based fallback font generation can be provided by just adding `fontaine` plugin github.com/unjs/fontaine/
15.09.2025 06:20 β π 1 π 0 π¬ 1 π 0Not as fancy as `next/font`, but simple font optimization (self hosted font + preload link) is super easy thanks to fontsource fontsource.org/docs/getting...
15.09.2025 06:20 β π 4 π 0 π¬ 1 π 0It may be possible to implement "use cache" like feature using `transformHoistInlineDirective`, which is exported from `@vitejs/plugin-rsc/transforms`. My minimal example is found here github.com/vitejs/vite-...
09.09.2025 09:15 β π 2 π 0 π¬ 0 π 0RSC transform utility is available from `@vitejs/plugin-rsc/transforms` since v0.4.29 (just released). github.com/vitejs/vite-... This utility was initially in `@hiogawa/transforms` but moved inside `@vitejs/plugin-rsc` for easier maintenance, and then now it became usable standalone again π
09.09.2025 08:31 β π 4 π 0 π¬ 1 π 0For example, this is how it looks before and after the change on Waku website waku.gg More info in github.com/wakujs/waku/...
09.09.2025 08:17 β π 4 π 0 π¬ 0 π 0Inspired by Parcel, `@vitejs/plugin-rsc` recently changed `"use client"` chunking strategy and it's now optimized based on how they are imported on server. This works nicely with route created by `import.meta.glob` since it merges client components based on page usages. github.com/vitejs/vite-...
09.09.2025 08:17 β π 3 π 0 π¬ 1 π 0RSC support is now included in Vite documentation! vite.dev/plugins/#vit... It's mostly just a link to the plugin readme though. Any feedback on documentation is welcome! π
09.09.2025 03:52 β π 20 π 1 π¬ 0 π 0