Pinterest, previously Relay team at Meta
Also great handle
Also great handle
- Fragments are a way of expressing parameter types, e.g. `function fooNonGraphQL(data: { user: name })` is somewhat equivalent
- Fragments are a way of expressing parameter types, e.g. `function fooNonGraphQL(data: { user: name })` is somewhat equivalent
So it's a step. Still 100x better than what most folks do.
So it's a step. Still 100x better than what most folks do.
function UserCard(data: UserCard_propType) {
return <><h1>{data.name}</h1><UserAvatar data={data} /></>
}
function UserCard(data: UserCard_propType) {
return <><h1>{data.name}</h1><UserAvatar data={data} /></>
}
- Runtime data masking might be harder to achieve, but you can certainly imagine having many of the benefits of GraphQL as follows:
- Runtime data masking might be harder to achieve, but you can certainly imagine having many of the benefits of GraphQL as follows:
/fin
/fin
- So "fragments are not for reuse" is easily misinterpreted! It's bad marketing! Clearly UserCard_user is reused.
- But the downsides of reuse don't occur as long as you
- So "fragments are not for reuse" is easily misinterpreted! It's bad marketing! Clearly UserCard_user is reused.
- But the downsides of reuse don't occur as long as you
- But realistically, I don't think anyone is thinking at that level. Instead, they think of DevEx
- But realistically, I don't think anyone is thinking at that level. Instead, they think of DevEx
- Doing so opens up a risk: that you receive more data than you actually use, which (of course) is bad for perf, since that data came from the network.
- So, why might you *want* to opt into receiving more data than you use?
- Doing so opens up a risk: that you receive more data than you actually use, which (of course) is bad for perf, since that data came from the network.
- So, why might you *want* to opt into receiving more data than you use?
- These are input types that are explicitly, easily statically analyzable! c.f. `fooNonGraphQL(data: SomeType)`, which is not easily statically analyzable
- So, why would you reuse a parameter type
- These are input types that are explicitly, easily statically analyzable! c.f. `fooNonGraphQL(data: SomeType)`, which is not easily statically analyzable
- So, why would you reuse a parameter type
- Fragments are a way of expressing parameter types, e.g. `function fooNonGraphQL(data: { user: name })` is somewhat equivalent
- Fragments are a way of expressing parameter types, e.g. `function fooNonGraphQL(data: { user: name })` is somewhat equivalent
- if you're deferring some data, it's probably a best practice to defer the JS! That's two separate steps other frameworks
- Entrypoints and 3D work, without any server support, out of the box, using no fancy machinery
And so much more!
- if you're deferring some data, it's probably a best practice to defer the JS! That's two separate steps other frameworks
- Entrypoints and 3D work, without any server support, out of the box, using no fancy machinery
And so much more!
TLDR, imagine:
- Relay, but without fragment spreads or other boilerplate, i.e. as if everything was a resolver, and
- if everything is a resolver, you can do a whole bunch of awesome things: defer without server support...
TLDR, imagine:
- Relay, but without fragment spreads or other boilerplate, i.e. as if everything was a resolver, and
- if everything is a resolver, you can do a whole bunch of awesome things: defer without server support...
- Currently, it targets GraphQL + React + JS, but all of those are implementation details (e.g. the user never writes GraphQL)
Lots of other advantages! Check out the quickstart, too: isograph.dev/docs/quickst...
- Currently, it targets GraphQL + React + JS, but all of those are implementation details (e.g. the user never writes GraphQL)
Lots of other advantages! Check out the quickstart, too: isograph.dev/docs/quickst...