title: SSR and GraphQL: how to avoid the loading state if no javascript is present (SEO purposes)?
body: <p>I'm trying SSR (server side rendering) for the first time today.</p>
  
  <p>I need to use it only for SEO purposes: so NO-Javascript browsers (readers) along with standard ones.</p>
  
  <p>In my Svelte/Sapper app I'm using GraphQL (Apollo, URQL or SVQL).</p>
  
  <h3>QUESTION</h3>
  
  <p>Whatever the GraphQL client I choose I can't understand how to manage the loading of the call to the GraphQL endpoint.</p>
  
  <p>I mean that since we are not in an environment where I can use the reactivity to an event to rewrite part of the DOM (I am rendering in the nodejs server) every time a user (or a bot: search engine) browses the site (without javascript) will only see the wait state for the GraphQL call: "Loading todos ...".</p>
  
  <p>Am I brutally wrong?</p>
  
  <h3>CODE EXAMPLE</h3>
  
  <pre><code>&lt;script&gt;
    import { initClient, query } from '@urql/svelte';
  
    initClient({ url: "https://0ufyz.sse.codesandbox.io" });
  
    const todos = query({
      query: `
        query {
          todos {
            id
            text
            complete
          }
        }
      `
    });
  &lt;/script&gt;
  
  {#if $todos.fetching} &lt;!-- This is the only state I see in my server rendered response --&gt;
    Loading todos...
  {:else}
    &lt;ul&gt;
      {#each $todos.data.todos as todo}
        &lt;li&gt;{todo.text}&lt;/li&gt;
      {/each}
    &lt;/ul&gt;
  {/if}
  </code></pre>
  
  <p>Even if I manage to wait for the GraphQL response in the express server and to render the data instead of the loading message, the problem is that the times are much longer (if the GraphQL endpoint is slow) and the user experience is depressing, especially for the standard user with the browser and javascript.</p>
  
  <p>Maybe I am missing something in the reasoning.</p>
  
  <p>But what?</p>