's Avatar

@hiogawa.bsky.social

https://github.com/hi-ogawa @vitest.dev @vite.dev contributor

1,133 Followers  |  74 Following  |  53 Posts  |  Joined: 05.11.2024
Posts Following

Posts by (@hiogawa.bsky.social)

Github organization invitation with text "You've been invited to the Storybook organization!".

Github organization invitation with text "You've been invited to the Storybook organization!".

Excited to announce that I've officially joined @chromatic.com! My main focus will be working around features related to @vitest.dev ๐Ÿค

09.02.2026 09:47 โ€” ๐Ÿ‘ 58    ๐Ÿ” 4    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 3

Thank you so much for sponsoring!

10.02.2026 00:27 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Release v3.0.1-alpha.2 ยท nitrojs/nitro ๐Ÿ”‹ This release contains many improvements since the alpha.1 release. โณ We took extra time to ensure everything works well by testing against real-world projects using Nitro v3. We are closer to Bet...

Nitro v3 alpha.2:

๐Ÿ”ฅ Rolldown optimized
๐Ÿ“ฆ Dependencies bundled by default
โš› React Server Components support (experimental)
๐Ÿ”‹ Many more improvements

TIP: Upgrade to the latest nitro() plugin with vite@beta (rolldown) and enjoy a seriously mind-blowing performance boost ๐Ÿš€

21.01.2026 19:53 โ€” ๐Ÿ‘ 62    ๐Ÿ” 9    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
feat(rsc): use `__VITE_ENVIRONMENT_RUNNER_IMPORT__` for `import.meta.viteRsc.loadModule` global by hi-ogawa ยท Pull Request #1037 ยท vitejs/vite-plugin-react Description Establishes __VITE_ENVIRONMENT_RUNNER_IMPORT__ as a convention for frameworks to integrate custom environment setups with import.meta.viteRsc.loadModule. declare global { function __V...

Here is an PR that introduced `__VITE_ENVIRONMENT_RUNNER_IMPORT__` convention github.com/vitejs/vite-...

20.01.2026 10:42 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
GitHub - hi-ogawa/vite-rsc-runtime-integration-examples Contribute to hi-ogawa/vite-rsc-runtime-integration-examples development by creating an account on GitHub.

I put together Vite RSC example repo with Cloudflare and Nitro plugins. This includes React Router framework mode templates with both plugins. Thanks to Cloudflare and Nitro teams for the collaboration to establish `__VITE_ENVIRONMENT_RUNNER_IMPORT__` convention!

20.01.2026 10:42 โ€” ๐Ÿ‘ 6    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Two istanbul coverage reports side-by-side. Left one titled "vite@7 + esbuild", right one "vite@8-beta + rolldown + oxc". Report on the right demonstrates how ignore hints work without @preserve keyword.

Two istanbul coverage reports side-by-side. Left one titled "vite@7 + esbuild", right one "vite@8-beta + rolldown + oxc". Report on the right demonstrates how ignore hints work without @preserve keyword.

When using vite@8-beta with Vitest users no longer need to add magical '@preserve' keywords in their coverage ignore hints. Originally this work-around was needed due to esbuild's (intentional) lack of support for comment preserving. Oxc has built-in support for JS coverage tools' ignore hints.

08.12.2025 11:50 โ€” ๐Ÿ‘ 16    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1
Post image Post image

Vitest 4.0.15 comes with a cool experimental feature: Imports Breakdown. Every module shows how long it took to load in UI and in the VSCode extension!

Pass down `--experimental.printImportBreakdown` to also see it in your terminal.

vitest.dev/guide/ui.htm...

02.12.2025 16:42 โ€” ๐Ÿ‘ 42    ๐Ÿ” 8    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 1
A screenshot of Vitest terminal showing the times for two runs. The first run takes 9.65s, the second run takes 5.90s.

A screenshot of Vitest terminal showing the times for two runs. The first run takes 9.65s, the second run takes 5.90s.

Vitest 4.0.11 adds an experimental `fsModuleCache` flag to cache module transforms between reruns. Learn more: vitest.dev/config/exper...

This is an opt-in feature, please let us know how it works for you!

And example of a single test file that imports a lot of files (~1500). Almost a 50% boost!

20.11.2025 12:04 โ€” ๐Ÿ‘ 55    ๐Ÿ” 10    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 0
Post image

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 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

I 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....

05.11.2025 09:13 โ€” ๐Ÿ‘ 6    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

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/...

28.10.2025 00:43 โ€” ๐Ÿ‘ 5    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Nice! Thanks for pinging the team ๐Ÿ™

27.10.2025 23:47 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

My 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    ๐Ÿ“Œ 0

This 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    ๐Ÿ“Œ 0

First time speaking at a conference!

18.10.2025 04:13 โ€” ๐Ÿ‘ 21    ๐Ÿ” 2    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 0
Video thumbnail

Okay, here is my attempt with a fun demo! github.com/jacob-ebey/v...

17.10.2025 03:37 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

There'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
Preview
feat: add vue-router-ssr example with SSR assets API by hi-ogawa ยท Pull Request #5 ยท nitrojs/vite-examples Hey ๐Ÿ‘‹ This is very early prototype, but I wanted to share with you to get feedback. You can find a rough documentation in https://github.com/hi-ogawa/vite-plugins/tree/main/packages/fullstack. This...

`?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    ๐Ÿ“Œ 0
Post image Post image

Also 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    ๐Ÿ“Œ 0
Post image

Here 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    ๐Ÿ“Œ 0
Preview
RFC: Client assets metadata API for SSR ยท vitejs vite ยท Discussion #20913 This proposal introduces a new API that enables server code to access client runtime assets metadata required for server-side rendering in a framework agnostic way. This feature is currently protot...

I 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    ๐Ÿ“Œ 0
Preview
fix: `React.use` inside `React.lazy`-ed component on SSR by hi-ogawa ยท Pull Request #33941 ยท facebook/react Summary Closes Bug: React.use inside React.lazy-ed component returns other React.use value on SSRย #33937 As indicated by the previous issue comment #27731 (comment), it looks like legacy "th...

Here is a PR github.com/facebook/rea...

08.10.2025 09:19 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

I 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    ๐Ÿ“Œ 0
Post image

For this use of `"use server"` to work, the route needs to be `ServerComponent` route.

26.09.2025 06:18 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

Quick 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    ๐Ÿ“Œ 0
Post image

Forgot 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    ๐Ÿ“Œ 0
Preview
Nitro Vite Tracker ยท Issue #3461 ยท nitrojs/nitro ๐ŸŽ‰ Nitro v3 is becoming "just" a Vite plugin! NoteYou can share feedback and ideas in ๐Ÿ’ฌ Nitro Vite Feedback discusison. This issue is to track the development roadmap and related tasks. Initial PR (...

This 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    ๐Ÿ“Œ 0

I'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...

25.09.2025 03:26 โ€” ๐Ÿ‘ 34    ๐Ÿ” 6    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
Post image

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...

17.09.2025 04:35 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

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    ๐Ÿ“Œ 0