crank icon indicating copy to clipboard operation
crank copied to clipboard

Question around beta phase / roadmap

Open richiemccoll opened this issue 4 years ago • 8 comments

Hey 👋

Great job 🎉 This is a refreshing view on writing UI components.

I'm curious on what work is left for the beta phase and do you have an idea of the roadmap for the library? I'm interested in contributing and I'm sure others are too.

richiemccoll avatar Apr 16 '20 18:04 richiemccoll

I wrote a list in the reddit post on r/javascript which I’ll copy over here:

  1. More docs: I still haven’t documented a couple features like the Crank equivalent for React contexts and style props and such.
  2. More tests: I’m pretty sure my DOM renderer is gonna be buggy on a couple edge cases like html tables and SVG and I just haven’t had the time yet to figure out what to do here. Cross-browser/performance testing would also be nice. Maybe I can leverage these new stars for a browserstack/saucelabs plan.
  3. More methods on the context: This might be most approachable to work on. I was thinking we should add more methods to the this object, like I would love a fetch method which automatically aborted when the component was unmounted, or a setTimeout which automatically cancelled. Maybe we could create a strongly typed plugin system so users could write their own logic. It would be yet another tool in the toolbelt to answer for React hooks.
  4. More complete EventTarget class: Currently, we’re relying on event-target-shim, which is nice but doesn’t provide event parents or capturing. I have a hacky solution but I definitely want to get rid of the dependency and just have a solution which handles all the use-cases required by Crank.
  5. A meta-framework: If you look at the website, it’s dogfooded Crank, but it only uses the server-side renderer. I’d like to maybe expand on the code, or see if some other meta-framework which isn’t hard-coded to React can be used.
  6. Web components: I want to create imperative interfaces with Crank so it can be embedded in applications running other frameworks, and I think the WebComponent inheritance-based HTMLElement classes could definitely help us here.
  7. h alias for createElement: People are really into this for some reason, dunno why.
  8. Styled components: I really like Linaria for React. If you want to make a styled component thingy for Crank I’d be super interested.
  9. Animations: I love spring animations and I’m wondering what that looks like for Crank.
  10. Async unmounting of components: Right now, async generator components unmount asynchronously, but we throw that promise away. I want to do something with this promise for exit animations. I need to think more about the API but this would be a gamechanger.

brainkim avatar Apr 16 '20 19:04 brainkim

7. h alias for createElement: People are really into this for some reason, dunno why.

that's something I saw in vue, never understood why h, but I also did it :D

chiptus avatar Apr 17 '20 16:04 chiptus

Threw together a thin wrapper around Emotion for styling components if anyone wants to give it shot! https://github.com/jpbow/cronk

jpbow avatar Apr 17 '20 17:04 jpbow

@jpbow Loving the naming and branding

when-its-all-coming-together-oh-yeah-its-all-coming-60798512

shirakaba avatar Apr 17 '20 17:04 shirakaba

@jpbow oh my god you already have a mascot and I don’t even have a logo for Crank lol

brainkim avatar Apr 17 '20 17:04 brainkim

@brainkim I'd like to put forward a vote for Kronk to be the mascot of the whole Crank ecosystem

shirakaba avatar Apr 17 '20 17:04 shirakaba

  • Cronk -> Kronk
  • Crank -> Clank?

Clank_from_R C_(2002)_render

shirakaba avatar Apr 17 '20 18:04 shirakaba

I think it’d be great to have crank-testing-library. https://testing-library.com/docs/intro. Frameworks like React, Vue, and Riot have their own packages and it’d be a nice transition for devs who are used to testing library in their framework of choice.

I’m going to get started on this and will post an issue seeking feedback/help.

ryhinchey avatar Apr 19 '20 18:04 ryhinchey