dai-shi / waku

⛩️ The minimal React framework

Home Page:https://waku.gg

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

v1 Roadmap

dai-shi opened this issue · comments

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

Previous Versions

-v0.14.0

  • Server bundling #21
  • New API as middleware #23
  • RSC-only SSR (or opt-in SSR) #66
  • Improve HTTP errors (404 instead of 500, especially with router) #76
  • Support interacting with server (req and res) #86
  • CSS Modules on server #98 #105
  • Server bundling issues #79

v0.15.0

  • fix waku/router #85 #104
  • Revisit entries.ts API (requires to revisit waku/router) #84
  • Revisit mutate() api and maybe serve() api #119

v0.16.0

  • waku/router [slug] support #133
  • SWR #96

v0.17.0

  • Reconsider SSR (give up RSC-only SSR and go with full SSR) #147
  • Node 20 #159
  • Refactor rscPrefix config to rscPath #160

v0.18.0

  • Support running on the edge
  • Vite 5 #207

v0.18.1

v0.19.0

  • Utilize hoistable elements #289
  • Renew waku/router API #246
  • Environment variables #292
  • Improve Vercel deployment
  • Config file waku.config.ts support in cli.ts #368
  • Improve CLI and templates

v0.19.1

v0.19.2

v0.19.3

v0.19.4

v0.20.0

  • #513
  • Enable SSR by default (no --with-ssr option)
  • getContext from waku/server
  • Conditional SSR
    #534
    #569
  • File-based router
    #572
    #575
  • Managed mode (no main.tsx and entries.tsx)
    #580
  • new waku/router apis
    #593
    #613

v0.20.1

  • Support omitting file extensions in import statements
    #629
  • Support .js and .jsx extensions
    #633
    #636
  • Support trailing slash with static sites (SSG)
    #637
  • Bug fixes
    #631
    #651
    #639
    #452

v0.20.2

v0.21.0

  • Transform files on the server (DEV)
    #762
    #707
  • Support importing server files directly from client files
    #708
    #714
  • Support server actions in server components
    #729
    #785
  • Router improvements
    #799
    #746
  • Cloudflare Pages support
    #795
  • Support customizing html attrs & head with SSR
    #825
  • DEV improvements
    #833

v0.21.1

  • Improve build system (mostly internally, plugin system)

v0.22.0

  • Internal re-architecture (customizable entries with router)
  • #329
  • single waku.config.ts config file (no vite.config.ts)

v1-alpha

  • Support monorepo setup
  • support progressive enhancement for forms
  • Migrate to Vite Environment API?
  • Migrate to react-server-dom-vite?
  • More compatibilities with third-party libraries
    #423

v1-beta

  • Explore Jotai integration
  • Explore support for third-party routers
    #272

v1-final

  • Wait for React 19

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.

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

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.

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.

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.

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.

commented

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

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

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.

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

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?

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

Hope the esm one is published: facebook/react#27197

Integrate React Float

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

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.

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?

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

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.

#24 (comment)

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

commented

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.

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.