Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(jsx/dom): support getServerSnapshot in useSyncExternalStore #2646

Merged

Conversation

usualoma
Copy link
Member

@usualoma usualoma commented May 9, 2024

Fixes #2640

Author should do the followings, if applicable

  • Add tests
  • Run tests
  • bun denoify to generate files for Deno

@usualoma
Copy link
Member Author

usualoma commented May 9, 2024

@yusukebe
I haven't tried it with swr, but I think this implementation satisfies the external specification of getServerSnapshot. May I try it in your environment? If it works well, you can have it merged with the current contents.

yusukebe added a commit to yusukebe/hono-jsx-spa that referenced this pull request May 9, 2024
@yusukebe
Copy link
Member

yusukebe commented May 9, 2024

@usualoma

I haven't tried it with swr, but I think this implementation satisfies the external specification of getServerSnapshot. May I try it in your environment? If it works well, you can have it merged with the current contents.

I've tried it with swr but it did not work. You can see and try the code:

https://github.com/yusukebe/hono-jsx-spa/tree/swr

The screen cast - showing only loading...:

Area.mp4

@usualoma
Copy link
Member Author

usualoma commented May 9, 2024

@yusukebe

Ah ok, it looks like swr is loading useSyncExternalStore from a separate package. I added the following configuration to your app and now I get "Hello Hono!"

diff --git a/vite.config.ts b/vite.config.ts
index 993a823..67c6421 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -8,7 +8,8 @@ export default defineConfig(({ mode }) => {
     resolve: {
       alias: {
         react: 'hono/jsx/dom',
-        'react-dom': 'hono/jsx/dom'
+        'react-dom': 'hono/jsx/dom',
+        'use-sync-external-store/shim/index.js': 'hono/jsx/dom',
       }
     }
   }

@yusukebe
Copy link
Member

yusukebe commented May 9, 2024

@usualoma Ooooooh great!!

Copy link
Member

@yusukebe yusukebe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@yusukebe
Copy link
Member

yusukebe commented May 9, 2024

@usualoma

Thank you! I'll merge this right now and ship a patch release that includes this change because it's a small feat (it may be a huge thing for us!).

@yusukebe yusukebe merged commit cd35af7 into honojs:main May 9, 2024
10 checks passed
nicolewhite referenced this pull request in autoblocksai/cli May 13, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [hono](https://hono.dev/) ([source](https://github.com/honojs/hono))
| [`4.3.0` ->
`4.3.6`](https://renovatebot.com/diffs/npm/hono/4.3.0/4.3.6) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/hono/4.3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/hono/4.3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/hono/4.3.0/4.3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/hono/4.3.0/4.3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>honojs/hono (hono)</summary>

### [`v4.3.6`](https://github.com/honojs/hono/releases/tag/v4.3.6)

[Compare
Source](https://github.com/honojs/hono/compare/v4.3.5...v4.3.6)

#### What's Changed

- feat(cache): improved customizability by
[@&#8203;MathurAditya724](https://github.com/MathurAditya724) in
[https://github.com/honojs/hono/pull/2652](https://github.com/honojs/hono/pull/2652)
- fix(utils/body): support multiple `File`s by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2665](https://github.com/honojs/hono/pull/2665)

#### New Contributors

- [@&#8203;MathurAditya724](https://github.com/MathurAditya724) made
their first contribution in
[https://github.com/honojs/hono/pull/2652](https://github.com/honojs/hono/pull/2652)

**Full Changelog**:
honojs/hono@v4.3.5...v4.3.6

### [`v4.3.5`](https://github.com/honojs/hono/releases/tag/v4.3.5)

[Compare
Source](https://github.com/honojs/hono/compare/v4.3.4...v4.3.5)

#### What's Changed

- refactor(context): remove some `any` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2658](https://github.com/honojs/hono/pull/2658)
- feat(hono-base): tweaks `fetch` signature for better compatibility
with `deno serve` by [@&#8203;usualoma](https://github.com/usualoma)
in
[https://github.com/honojs/hono/pull/2661](https://github.com/honojs/hono/pull/2661)
- perf(types): add type annotations by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2663](https://github.com/honojs/hono/pull/2663)

**Full Changelog**:
honojs/hono@v4.3.4...v4.3.5

### [`v4.3.4`](https://github.com/honojs/hono/releases/tag/v4.3.4)

[Compare
Source](https://github.com/honojs/hono/compare/v4.3.3...v4.3.4)

#### What's Changed

- chore: update the pull request template by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2647](https://github.com/honojs/hono/pull/2647)
- feat(validator): check for json subtypes in validator by
[@&#8203;ztiromoritz](https://github.com/ztiromoritz) in
[https://github.com/honojs/hono/pull/2634](https://github.com/honojs/hono/pull/2634)
- feat(jsx/dom): support getServerSnapshot in useSyncExternalStore by
[@&#8203;usualoma](https://github.com/usualoma) in
[https://github.com/honojs/hono/pull/2646](https://github.com/honojs/hono/pull/2646)

#### New Contributors

- [@&#8203;ztiromoritz](https://github.com/ztiromoritz) made their
first contribution in
[https://github.com/honojs/hono/pull/2634](https://github.com/honojs/hono/pull/2634)

**Full Changelog**:
honojs/hono@v4.3.3...v4.3.4

### [`v4.3.3`](https://github.com/honojs/hono/releases/tag/v4.3.3)

[Compare
Source](https://github.com/honojs/hono/compare/v4.3.2...v4.3.3)

#### What's Changed

- fix(types): relax the type of `c.req.param()` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2613](https://github.com/honojs/hono/pull/2613)
- chore(eslint): enable `@typescript-eslint/unbound-method` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2622](https://github.com/honojs/hono/pull/2622)
- fix(factory): support `createFactory()` destruction by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2623](https://github.com/honojs/hono/pull/2623)
- fix(aws-lambda): avoid duplicating already set headers by
[@&#8203;Amorim33](https://github.com/Amorim33) in
[https://github.com/honojs/hono/pull/2585](https://github.com/honojs/hono/pull/2585)
- refactor: improve parseBody function and docs by
[@&#8203;mgrithm](https://github.com/mgrithm) in
[https://github.com/honojs/hono/pull/2628](https://github.com/honojs/hono/pull/2628)
- fix(validator): `form` supports multiple values with `foo[]` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2639](https://github.com/honojs/hono/pull/2639)

#### New Contributors

- [@&#8203;Amorim33](https://github.com/Amorim33) made their first
contribution in
[https://github.com/honojs/hono/pull/2585](https://github.com/honojs/hono/pull/2585)

**Full Changelog**:
honojs/hono@v4.3.2...v4.3.3

### [`v4.3.2`](https://github.com/honojs/hono/releases/tag/v4.3.2)

[Compare
Source](https://github.com/honojs/hono/compare/v4.3.1...v4.3.2)

#### What's Changed

- fix(types): correct inferring when Method has Endponts as Union by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[https://github.com/honojs/hono/pull/2610](https://github.com/honojs/hono/pull/2610)

**Full Changelog**:
honojs/hono@v4.3.1...v4.3.2

### [`v4.3.1`](https://github.com/honojs/hono/releases/tag/v4.3.1)

[Compare
Source](https://github.com/honojs/hono/compare/v4.3.0...v4.3.1)

#### What's Changed

- fix(types): `ToSchema` compatibility by
[@&#8203;NamesMT](https://github.com/NamesMT) in
[https://github.com/honojs/hono/pull/2605](https://github.com/honojs/hono/pull/2605)

**Full Changelog**:
honojs/hono@v4.3.0...v4.3.1

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone
America/Chicago, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/autoblocksai/cli).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[jsx/dom] Support getServerSnapshot
2 participants