I think we should approach this from the perspective of two discrete packages: graphiql
and graphql-ide
. Doing this allows us to design different APIs that cater to the distinct sets of users would be interested in using graphiql
directly. The break down of the two libraries is outlined below with motivations further down.
The actual names and API here couldn't be further from final. They were just what came to mind first.
This library is meant for simple users who have already bought into the GraphiQL experience and are looking to customize it. These customizations would include things like a custom fetcher
, themes, etc. They explicitly do not include any modification of the internal UI. If the user cares about modifying the internals of the UI they should go to graphql-ide
. If/when plugins and presets exist, they are implemented here - not in graphql-ide
.