question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

RFC: breaking changes for v3

See original GitHub issue

I am preparing Genql version 3 and i will make fix many issues and make some breaking changes, some are listed in the new changelog here

Is there some change you would like to see in v3? please comment if you have some ideas as i will release the new version soon

Some open questions still to be decided for v3

  • default fetch implementation, best one i found is native-fetch, but it would be cool to not require installing anything and try using the default fetch implementation, but only node 18 has fetch now, 16 end of life is December 2023
  • support for deno? is it worth it?
  • out of the box support for bun?

Issue Analytics

  • State:open
  • Created 10 months ago
  • Reactions:3
  • Comments:8 (2 by maintainers)

github_iconTop GitHub Comments

2reactions
FlxEdcommented, Dec 6, 2022

Hello all,

First, thank you for your work that made my life so easier working with GraphQL and Typescript. I am a huge fan of your value proposition with GenQL. Type generation coupled with chain syntax really feels like working with a TS ORM but through GraphQL ❤️

I definitely agree with the above mentionned points. Chain syntax is just way too handy. It enables many generic use cases etc. I would be very sad to see it go. It would make me refactor a lot of my code as well 😕

Personally I would prefer to unify things in the way of keeping only chain syntax. As an example: we initially planned to use Apollo Client integration with GenQL in our project, but we decided to fall back on the fetch implementation as soon as we realized it was not possible to use Apollo with the chain syntax…

I also agree on the benefits of a generated file size reduction if possible. Deno and Bun implementation are really not a priority for me neither.

What I would like to see in V3:

  • Better subscription handling (glad to see it planned)
  • Generated file size reduction (if possible)
  • Higher level reusable types (ex: a reusable type for all the root arguments of a resolver / endpoint)
  • Third-party client integrations with chain syntax (ex: Apollo)

Thank you for your time and consideration. Keep up the great work !🎉

2reactions
Julien-R44commented, Dec 6, 2022

Hey there!

Awesome news !! First off, I wanted to ask why we’re dropping the chain syntax? Personally, it was that syntax that really made me lean toward GenQL over Zeus. I find it to be much more natural and readable, and I’d be really sad to see it go. (And it will require a huge refactor on my end since I use that syntax everywhere, but that’s a secondary concern.)

I’m even wondering what would be the main point of using GenQL over Zeus, which is more popular and maintained if we’re dropping that syntax. I’m not super familiar with Zeus’s syntax, so let me know if I’m mistaken, but I don’t see any major differences anymore. I’d be really curious to hear your reasoning on this. Is it a technical limitation, or something else?

Next, the main pain point I have with GenQL currently is the generated types file. I’m working on a Hasura with around 30 tables, and as a result, I have a massive types file (40k~ lines). This causes huge slowdowns with IntelliSense in my IDE. I have reached a point where sometimes I have to wait ~2 seconds for my IDE to remove the red squiggly lines. And yet, I’m working on a powerful PC 😅

Do you think it would be possible to optimize this generated file? I’d have to look more into it, so stop me if I’m wrong, but it seems like there are a lot of duplicated types that could be merged together using generics or whatever, which could maybe help the TypeScript server be faster? I’ve noticed that you’re no longer generating the JS files that contained JS typeguards, which should already help a bit, I guess.

Another thing, not essential, but would also be super cool to have, is the ability to define aliases. As far as I know, this isn’t possible (let me know if I’m mistaken).

To finish off, I’d say that out-of-the-box support for Deno and Bun are not really priorities. I think 95% of users don’t care about that. Especially for Bun, which isn’t even production-ready yet. Now, I can understand that it’s a nice marketing argument, and you’re free to do what you want with your library, but in my opinion it’s totally secondary.

Thanks so much for your work on GenQL, and the new docs look great! Notaku seems really cool too, I might give it a try one day

Read more comments on GitHub >

github_iconTop Results From Across the Web

[RFC] What constitutes a breaking change? #249 - GitHub
[something is] a breaking change if someone runs ember install ember-cli-typescript@latest and sees the diff and accepts it, ...
Read more >
RFC v3 Format – LIVE
Over the fifty-year history of the series, the publication format of RFCs had very limited changes. Originally, the documents were typed on ...
Read more >
Migrating from Vue 2 - Vue Router
This guide is here to help you understand why these changes happened and how to adapt your application to make it work with...
Read more >
Release Notes - Keycloak
We added new functionality as well as a number of improvements, some which has resulted in breaking changes. Realm Operator. As the new...
Read more >
Ed-Fi RFC 17 - Change Log for v3.1a - Ed-Fi Tech Docs
Data Standard v3.1a introduces a limited set of breaking changes to the Data Standard v3.0 model in the Assessment domain and a small...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found