dai-shi / waku

⛩️ The minimal React framework
https://waku.gg
MIT License
4.71k stars 125 forks source link

v1 Roadmap #24

Open dai-shi opened 1 year ago

dai-shi commented 1 year ago

Here are tasks that I would like to finish before v1.

Previous Versions ## -v0.14.0 - [x] Server bundling #21 - [x] New API as middleware #23 - [x] RSC-only SSR (or opt-in SSR) #66 - [x] Improve HTTP errors (404 instead of 500, especially with router) #76 - [x] Support interacting with server (`req` and `res`) #86 - [x] CSS Modules on server #98 #105 - [x] Server bundling issues #79 ## v0.15.0 - [x] fix waku/router #85 #104 - [x] Revisit `entries.ts` API (requires to revisit waku/router) #84 - [x] Revisit `mutate()` api and maybe `serve()` api #119 ## v0.16.0 - [x] waku/router `[slug]` support #133 - [x] SWR #96 ## v0.17.0 - [x] Reconsider SSR (give up RSC-only SSR and go with full SSR) #147 - [x] Node 20 #159 - [x] Refactor `rscPrefix` config to `rscPath` #160 ## v0.18.0 - [x] Support running on the edge - [x] Vite 5 #207 ## v0.18.1 - [x] css support #240 - [x] deploy support #263 #267 #271 ## v0.19.0 - [x] Utilize hoistable elements #289 - [x] Renew waku/router API #246 - [x] Environment variables #292 - [x] Improve Vercel deployment - [x] Config file `waku.config.ts` support in cli.ts #368 - [x] Improve CLI and templates ## v0.19.1 - [x] fix issues with deployment #395 #398 - [x] fix style HMR #411 #414 ## v0.19.2 - [x] Dev improvement #427 #439 #110 - [x] More support for deployments #422 #419 - [x] router improvement #424 ## v0.19.3 - [x] #448 - [x] #113 - [x] Better Netlify support #465 ## v0.19.4 - [x] #493 - [x] Support customizing 404 #497 - [x] #498 - [x] #417 - [x] #514 - [x] #418 ## v0.20.0 - [x] #513 - [x] Enable SSR by default (no `--with-ssr` option) - [x] `getContext` from `waku/server` - [x] Conditional SSR #534 #569 - [x] File-based router #572 #575 - [x] Managed mode (no `main.tsx` and `entries.tsx`) #580 - [x] new waku/router apis #593 #613 ## v0.20.1 - [x] Support omitting file extensions in import statements #629 - [x] Support `.js` and `.jsx` extensions #633 #636 - [x] Support trailing slash with static sites (SSG) #637 - [x] Bug fixes #631 #651 #639 #452 ## v0.20.2 - [x] Improvements #666 #668 #672 #675 #694 #689 #696 - [x] Bug fixes #673 #697 #678 #682 #687 ## v0.21.0 - [x] Transform files on the server (DEV) #762 #707 - [x] Support importing server files directly from client files #708 #714 - [x] Support server actions in server components #729 #785 - [x] Router improvements #799 #746 - [x] Cloudflare Pages support #795 - [x] Support customizing html attrs & head with SSR #825 - [x] DEV improvements #833 ## v0.21.1 - [x] Minor improvements #848 #851 #850 #852 ## v0.21.2 - [x] Improve build system (mostly internally, plugin system) #860 #866 - [x] Bug fixes #864 #870 ## v0.21.3 - [x] Improve build system (mostly internally, plugin system) #876 #877 #878 #879 #880 #881 #882 - [x] Improve router #854 #886 #895 #917 - [x] Misc #914 #808 ## v0.21.4 - [x] Internal re-architecture (customizable entries with router) #947 #951 #961 - [x] Router improvement #952 #949 #966 ## v0.21.5 - [x] Bug fixes #979 #980

v0.21.6

v0.21.7

v0.22.0

v1-alpha

v1-beta

v1-final

Aslemammad commented 1 year ago

How about actions? I was thinking about developing a plugin for vite a while ago, Since I think it's something similar to telefunc while developing this tool with Rom Brillout.

dai-shi commented 1 year ago

Actions (what I call "React Server Functions") are already implemented. I wouldn't say it's complete though.

Aslemammad commented 1 year ago

Nice!

tom-sherman commented 1 year ago

Anecdotally there seems to be a fairly large gap between waku's server actions and Next.js' implementation - I suppose this is expected because server actions are completely experimental in React right now.

IMO it makes sense to mark them as such (as an opt-in config option) before releasing v1.

dai-shi commented 1 year ago

I don't think our RSF (react server function) isn't that experimental, meaning it's the same level as react server component. I suppose Next's server action does more experimental things.

That said, I would like to revisit our approach anyway, which will require some feedbacks from collaborators/contributors/users.

In any case, unless we have an official doc or RFC from React, we wouldn't be able to finalize our API, which means v1 probably won't land until then.

tom-sherman commented 1 year ago

The problem with shipping server actions now (or before they're stable in React) is that the semantics are not specified yet. For example Next.js server actions are queued, it's impossible to execute them concurrently - not the case in Waku. There is also the integration with transitions, not sure if this is implemented in Waku.

IMO need to wait for a React RFC but only for server actions, there is already an RFC for server components and they're designated at stable by the React team.

This is why I think waku server actions behind a flag is the right way forward.

dai-shi commented 1 year ago

Yeah, if we would release v1 before the callserver RFC, we should hide it behind a flag. For now, just noting it's not finalized would be enough. But in that sense, everything isn't finalized.

childrentime commented 1 year ago

@dai-shi How about SSG? And change docs website to static files.

dai-shi commented 1 year ago

docs website is already static files. we generate static files on build (SSG is a vague word, as people expect to generate HTML files.)

dai-shi commented 1 year ago

IMO it makes sense to mark them as such (as an opt-in config option) before releasing v1.

Having been working on #124, I'm getting more skeptical about the stability. (What is currently working may not work in the future.) My gut feeling is that we should wait releasing v1 before React 18.3.0 or 19 is out.

zouhangwithsweet commented 12 months ago

So waku will not use react-server-dom-vite in the future?

himself65 commented 12 months ago

So waku will not use react-server-dom-vite in the future?

I think it's up to upstream. currently react official repo only has webpack and turbopack support.

BTW, is react-server-dom-esm an alternative?

dai-shi commented 12 months ago

It depends on what react-server-dom-vite and react-server-dom-esm will be like.

Hope the esm one is published: https://github.com/facebook/react/issues/27197

ojj1123 commented 11 months ago

Integrate React Float

@dai-shi What is React Float? What's the relation with no index.html?

dai-shi commented 11 months ago

Integrate React Float

@dai-shi What is React Float? What's the relation with no index.html?

I hope React docs will cover that soon. It will be called something like hoistable resource/elements. It's technically not "integration". As #289 may tell, we no longer use index.html and add <title>...</title> in components, for example, which is possible because of hoistable elements.

ojj1123 commented 10 months ago

I was wondering if you could explain where it is the explanation of defineEntries function in Docs or README! I couldn't find it since waku was released as v0.19.0. Is it deprecated?

himself65 commented 10 months ago

I was wondering if you could explain where it is the explanation of defineEntries function in Docs or README! I couldn't find it since waku was released as v0.19.0. Is it deprecated?

No, that API is still available, but we don't have enough documents for the public APIs.

https://waku.gg/blog/introducing-waku

ojj1123 commented 10 months ago

How about initializing git setting? (git init and then recomanded .gitignore, etc) I think it's a bit low-priority but It seems like good to be at waku@v1.

dai-shi commented 6 months ago

https://github.com/dai-shi/waku/issues/24#issuecomment-1655694291

@tom-sherman Do you know any updates? I guess it's unlikely that the React docs specify such details.

tylersayshi commented 4 months ago

Explore Jotai integration

@dai-shi Is this still something that needs exploration?

If yes, what are some things that you'd be concerned about with using jotai + waku?

I suspect some exploration has been done already though, considering the waku.gg docs use example code with jotai as the state library.

dai-shi commented 4 months ago

I suspect some exploration has been done already though, considering the waku.gg docs use example code with jotai as the state library.

The example in docs is what's possible now. What I would like to explore is to use atoms on the server too (that is connected to the client behind the scenes.) So, it's a very tight integration (and one reason that I started developing my own framework.)

I have a goal but don't have the implementation idea yet. #11 is an old attempt.

Anyway, there are so many things to do before working on it.

sarat1669 commented 2 months ago

@dai-shi does https://github.com/nksaraf/vinxi help with this roadmap?

dai-shi commented 2 months ago

I don't believe so. Waku's design conflicts with Vinxi's design. So, it's unlikely that we use it at any time soon. We don't know the far future. Related discussion: #522