- 
        Couldn't load subscription status. 
- Fork 1.8k
Open
Description
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
Hi there,
I want to add a tab add and content to graphiql-react through code.
Here are some code snippets, that should give you an idea:
    <GraphiQL
      fetcher={fetcher}
      defaultEditorToolsVisibility="variables"
      isHeadersEditorEnabled={false}
      plugins={[HISTORY_PLUGIN, explorer]}
      inputValueDeprecation={true}
      initialQuery={query}
      initialVariables={variables}
    >
      <UpdateHashHandler
        newQuerySetter={setQuery}
        newVariablesSetter={setVariables}
      />
    </GraphiQL>
const UpdateHashHandler = ({
  newQuerySetter,
  newVariablesSetter,
}: UpdateHashHandlerProps) => {
  const { addTab, updateActiveTabValues } = useGraphiQLActions();
  const { storage } = useGraphiQL(pick("storage"));
  useEffect(() => {
    const onMessage = (evt: MessageEvent) => {
      // get a message from outside the iframe and parse it 
      const parsed = parseQueryFromMessage(evt.data);
      if (parsed && parsed.query) {
        newQuerySetter?.(parsed.query);
        newVariablesSetter?.(parsed.variables);
        addTab();
        const store = debounce(500, () => {
          storage?.set(STORAGE_KEY.query, parsed.query);
          storage?.set(STORAGE_KEY.variables, parsed.variables);
        });
        const updateTab = debounce(100, (q: string, v: string) => {
          updateActiveTabValues({
            query: q,
            variables: v,
            operationName: "from outside",
          });
        });
        updateTab(parsed.query, parsed.variables);
        store();
      }
    };
    window.addEventListener("message", onMessage);
    return () => {
      window.removeEventListener("message", onMessage);
    };
  }, []);
  return <></>;
};
This somewhat works, as it is parsing the message and opening a new tab with title "from outside", but the content of the ne tab (editor) is empty. I first have to click into an old tab and then back to the new one, then it suddenly is populated.
Expected Behavior
I would expect the function updateActiveTabValues() to update the current tab and immediately show the result.
Steps To Reproduce
No response
Environment
- GraphiQL Version:
- OS:
- Browser: chrome
- Bundler: npm
- reactVersion:
 "react": "18.3.1",
 "react-dom": "18.3.1"
- graphqlVersion:
 "@graphiql/plugin-explorer": "5.1.1",
 "@graphiql/react": "0.37.1",
 "graphiql": "5.2.0",
 "graphql": "16.11.0",
Anything else?
No response
clement911