<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Error: Invalid stardust hook call. Hooks can only be called inside a visualization component. in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/Error-Invalid-stardust-hook-call-Hooks-can-only-be-called-inside/m-p/2514686#M22088</link>
    <description>&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;This is my index.ts for my Qlik Sense extension which I am trying to build with NebulaJS / React.&lt;/P&gt;&lt;P&gt;I am getting the error Error: Invalid stardust hook call. Hooks can only be called inside a visualization component inside the component().&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My index.ts:&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;/* eslint-disable react-hooks/rules-of-hooks */
import {
  useApp, useElement, useEmbed, useInteractionState, useKeyboard,
  useModel, useRect, useSelections, useStaleLayout, useTranslator, useTheme
} from "@nebula.js/stardust";
import { useEffect } from "react";
import qae from "./qae";
import useReactRoot from "./hooks/use-react-root";
import { renderFormBuilder } from "./Root";
import { ExtendedLayout, Galaxy } from "./types";

const ext = (env: Galaxy) =&amp;gt; ({
  definition: qae,
  support: {
    snapshot: true,
    export: true,
    exportData: true,
  },
});

export default function supernova(env: Galaxy) {
  return {
    qae,
    ext: ext(env),
    component() {
      const rootElement = useElement();
      const layout = useStaleLayout() as ExtendedLayout;
      const app: any = useApp();
      const model: any = useModel();
      const interactions = useInteractionState();
      const translator = useTranslator();
      const selections = useSelections();
      const keyboard = useKeyboard();
      const rect = useRect();
      const embed = useEmbed();
      const theme = useTheme();
      
      const reactRoot = useReactRoot(rootElement); 
  
      useEffect(() =&amp;gt; {      
        renderFormBuilder({
          reactRoot,
          rootElement,
          layout,
          app,
          model,
          interactions,
          translator,
          selections,
          keyboard,
          rect,
          embed,
          theme,
        });
      }, [
        reactRoot, rootElement, layout, app, model, interactions,
        translator, selections, keyboard, rect, embed, theme
      ]);    
      return null;
    },
  };
}&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Anyone has any idea what I am doing wrong? Been bashing my head over this for a while. &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Tks a bunch!&lt;/P&gt;</description>
    <pubDate>Thu, 17 Apr 2025 08:17:30 GMT</pubDate>
    <dc:creator>catalin</dc:creator>
    <dc:date>2025-04-17T08:17:30Z</dc:date>
    <item>
      <title>Error: Invalid stardust hook call. Hooks can only be called inside a visualization component.</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Error-Invalid-stardust-hook-call-Hooks-can-only-be-called-inside/m-p/2514686#M22088</link>
      <description>&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;This is my index.ts for my Qlik Sense extension which I am trying to build with NebulaJS / React.&lt;/P&gt;&lt;P&gt;I am getting the error Error: Invalid stardust hook call. Hooks can only be called inside a visualization component inside the component().&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My index.ts:&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;/* eslint-disable react-hooks/rules-of-hooks */
import {
  useApp, useElement, useEmbed, useInteractionState, useKeyboard,
  useModel, useRect, useSelections, useStaleLayout, useTranslator, useTheme
} from "@nebula.js/stardust";
import { useEffect } from "react";
import qae from "./qae";
import useReactRoot from "./hooks/use-react-root";
import { renderFormBuilder } from "./Root";
import { ExtendedLayout, Galaxy } from "./types";

const ext = (env: Galaxy) =&amp;gt; ({
  definition: qae,
  support: {
    snapshot: true,
    export: true,
    exportData: true,
  },
});

export default function supernova(env: Galaxy) {
  return {
    qae,
    ext: ext(env),
    component() {
      const rootElement = useElement();
      const layout = useStaleLayout() as ExtendedLayout;
      const app: any = useApp();
      const model: any = useModel();
      const interactions = useInteractionState();
      const translator = useTranslator();
      const selections = useSelections();
      const keyboard = useKeyboard();
      const rect = useRect();
      const embed = useEmbed();
      const theme = useTheme();
      
      const reactRoot = useReactRoot(rootElement); 
  
      useEffect(() =&amp;gt; {      
        renderFormBuilder({
          reactRoot,
          rootElement,
          layout,
          app,
          model,
          interactions,
          translator,
          selections,
          keyboard,
          rect,
          embed,
          theme,
        });
      }, [
        reactRoot, rootElement, layout, app, model, interactions,
        translator, selections, keyboard, rect, embed, theme
      ]);    
      return null;
    },
  };
}&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Anyone has any idea what I am doing wrong? Been bashing my head over this for a while. &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Tks a bunch!&lt;/P&gt;</description>
      <pubDate>Thu, 17 Apr 2025 08:17:30 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Error-Invalid-stardust-hook-call-Hooks-can-only-be-called-inside/m-p/2514686#M22088</guid>
      <dc:creator>catalin</dc:creator>
      <dc:date>2025-04-17T08:17:30Z</dc:date>
    </item>
  </channel>
</rss>

