Why is my Shopify homepage blank after I install a theme?
If your Shopify homepage is blank after installing a theme, open the page source and search it for a heading you expect to see. If that text is in the HTML, your content rendered correctly and a CSS rule is hiding it. If the text is not there, the template never asked for it in the first place. Those two answers lead to completely different fixes, and the check takes about two minutes.
What follows comes from our own defect catalog rather than from general advice. We log every way a generated theme has failed, and between 30 April and 27 August 2026 that file reached 37 entries. Six of them produce a page that installs cleanly and then shows nothing. Every figure below is from one of those recorded incidents.
One check comes before all of them, because it is not a theme fault at all: if the store has never been launched, customers are not seeing your homepage. They are seeing the password page.
Are customers seeing a password page instead of my homepage?
On a store that has not been launched, yes. Shopify puts every new store in private mode, and a logged out visitor who asks for the homepage is redirected to /password, a short landing page with a password box and very little else. We checked this on our own development store on 24 October 2026: a request for the homepage returned a 302 redirect to /password, and the password page itself returned 200. Shopify also keeps the store out of search results while it is private.
The reason this reads as a blank homepage is that you are the one person who never sees it. While you are logged in to the admin, the theme editor and the theme preview both render the real homepage, sections and all. The shopper, the friend you sent the link to, and Google all get the password page. So a store can look finished to its owner and empty to everyone else.
| Who is looking | Store is private (not launched) | Store is public |
|---|---|---|
| You, in the theme editor or theme preview | Full homepage | Full homepage |
| A logged out visitor at your domain | Password page, redirected to /password | Full homepage |
| A visitor who types the store password | Full homepage | Not asked |
| Search engines | Store not listed | Can index the store |
To test it, open your store address in a private or incognito window, where you are not logged in. If you land on a password box, the theme is not the problem. To open the store, go to Online Store in the admin, click the Private label in the access setting menu, choose Public, then click Update. The first time you do this the button reads Launch store instead. On a trial, Shopify may ask you to finish a setup step, such as adding a business address, before it lets you remove the password. If the incognito window shows your homepage and it is still blank, carry on below: the cause is in the theme.
Why does Shopify theme check pass on a page that renders nothing?
Because a blank page is usually not a syntax problem, and shopify theme check only reads your files. It validates Liquid syntax, schema shape, translation keys and asset references. It has no way to know that a section rendered its markup and then got hidden by a rule elsewhere in your CSS, or that a JSON template asked for a section without asking for its contents.
The most severe case we ever recorded made this explicit. The theme uploaded, shopify theme check was silent, our own validator returned a pass, and there was no console error and no Liquid error anywhere on the page. Every content section was set to display: none and the document collapsed to roughly 900 pixels of header and footer. The theme was valid. It was simply invisible.
So do not read a clean theme check as evidence that the theme is fine. It only rules out the errors that stop a theme ZIP from uploading at all, which is a different failure that happens earlier.
The same blind spot covers the pages behind the homepage. A theme with no default page template passes theme check and uploads cleanly, then shows Page not found on every About or Shipping page: why a Shopify page says Page not found.
How do I tell which kind of blank page I have?
Right click the blank page and choose View Page Source. Do not use Inspect for this first step. Inspect shows you the DOM after JavaScript has run, and source shows you what the server actually sent, and the whole diagnosis turns on that difference. Then search the source for a phrase you know should be on the page, such as a product name or a section heading.
| What you see in View Page Source | What it means | Where to look |
|---|---|---|
| Your text is in the HTML, but the screen is blank | The section rendered. Something is hiding it after the fact | CSS visibility rules and reveal animations |
| Your text is not in the HTML, and the section wrapper is not there either | The template never called that section | Your JSON template and the theme layout |
| The section wrapper is there but empty inside | The section was called without its content blocks | The blocks and block_order keys in the JSON template |
A sentence beginning Liquid error is printed on the page |
A tag failed at render time on Shopify servers | The file and line number in the error text |
| Headings show, images are grey or coloured rectangles | The theme is working. Nothing has been uploaded to its image fields yet | Theme editor image settings |
My text is in the source but the page is blank. What is hiding it?
Two rules account for nearly all of this, and both are invisible to every automated check we run.
A reveal animation that never finished
Most modern themes fade sections in as you scroll, using a rule that sets the content to opacity: 0 and an IntersectionObserver that raises it to 1 when the element enters the viewport. If that observer never fires, the content stays at zero opacity permanently. It is in the DOM, it takes up space, it is selectable, and it is completely invisible.
We hit this on 4 May 2026 on a generated theme where two sections rendered as blank white space below their own headings. The HTML held four product cards. The screenshot held four card heights of nothing. The cause was that the theme animation used a pattern that defaults to hidden and only becomes visible when JavaScript runs, rather than one that defaults to visible and only animates when JavaScript runs.
To confirm it: open Inspect, select the empty area, and read the computed styles. If you see opacity: 0 or visibility: hidden on an element that clearly contains your text, this is your cause. To fix it, invert the default so the content is visible unless JavaScript arrives to animate it, or add a timeout that force reveals everything after two seconds regardless of whether the observer fired. Content that depends on JavaScript to become visible will eventually fail to become visible.
A display rule that matches far more than it was meant to
This one is worth understanding even if you never write CSS, because it is the reason a theme can look perfect to you and blank to a customer.
A single overly broad selector paired with display: none !important can take out every section on the page at once. In our case a safety rule intended to hide a mobile navigation panel on desktop was written against an ID prefix that also matched every section wrapper in the theme, so all 13 to 14 sections vanished together. The rule was correct code doing exactly what it said. It just pointed at the wrong things. That same rule class is the last stop in why a Shopify mobile menu will not open when you tap it, which covers the panel it was aimed at.
Why is my theme blank on a large monitor but fine on my laptop?
Because the rule hiding your content lives inside a media query, so it only applies above a certain screen width. This is the single most misleading version of the blank page problem, and it is why a theme can pass a review and still be broken for a share of your customers.
In an A and B comparison we ran on 27 August 2026, three of six themes went blank above a width, and each one had a different threshold:
| Theme | Renders correctly | Blank at and above |
|---|---|---|
| Theme A | Up to 1040px | 1041px |
| Theme B | Up to 1180px | 1181px |
| Theme C | Up to 1400px | 1401px |
Read the middle row again. That theme is fine on a 1280px laptop and blank on a 1440px monitor. Anyone reviewing it on a MacBook signs it off, and anyone shopping on a desktop monitor sees nothing. The threshold is derived from each theme own largest breakpoint, so there is no fixed width you can test that catches all of them. We checked 1280, 1440, 1600 and 1920 and still would have missed a theme whose breakpoint sat at 2200px.
The practical version of this: drag your browser window slowly from narrow to as wide as it goes and watch the page. If content disappears at a specific width, you have found a media query, and the width you found is the number to search your CSS for. That takes ten seconds and it is the only test that does not depend on guessing the right breakpoint in advance.
The same mechanism runs the other way. A hiding rule inside a max-width query blanks the page only below a width, which is how a homepage can be fine on your desktop and empty on a phone. The window drag catches both, as long as you take it all the way down to about 390px, the width of a common phone.
Worth stating plainly, since we found this in our own output: it affected our reference builds and not our customers. A sweep of the 48 most recent stored themes on 26 August 2026 found the bad rule in zero of them, because the code path that emits it is only used by a minority of generations.
My text is missing from the source. What did the template skip?
If View Page Source does not contain your content at all, no CSS rule can be responsible. The page rendered exactly what it was asked for, and it was asked for too little.
The section is there but its blocks are not
This is the most common one, and the least obvious. Shopify 2.0 sections define their contents in two separate places, and only one of them is used at install time.
The presets array in the section schema | The blocks key in the JSON template | |
|---|---|---|
| When it is used | Only when a merchant adds the section by hand in the theme editor | Every time the template renders |
| What happens on a fresh install | Nothing. It is never read | The blocks render |
| If you only have this one | Section heading appears, contents are empty | Works |
A theme can define a product grid with a full presets array and ship a homepage that renders the grid title and decoration with nothing underneath, because templates/index.json named the section type and never listed any blocks. We recorded this on 30 April 2026 on two sections in the same theme. There is no lint error for it. Nothing is malformed. The template simply asked for an empty section and got one.
The fix is to add explicit blocks and block_order keys to that section entry in the JSON template. Every block you want to appear on a fresh install has to be listed there by name.
The layout calls a section file that does not exist
If your page is missing its header or footer specifically, and the rest of the page is intact, check for this. The theme layout contains lines like {% section 'header' %}, which look for sections/header.liquid by that exact filename. If the theme ships a custom header under a different name, the call finds nothing and Shopify prints Error in tag 'section' - 'header' is not a valid section type, either on the page or in place of that region. We recorded this on 1 May 2026 on a theme whose custom header had been written to the right folder under the wrong filename.
The fix is renaming, not rewriting. The file has to be named for the call in the layout.
A newsletter form using a type Shopify does not accept
The Shopify {% form %} tag accepts a fixed list of 15 types in the current Liquid reference, such as product, contact, customer and cart, one of which (currency) is deprecated in favour of localization. Pass anything else and the storefront renders an error sentence where your section should be. On 7 July 2026 we saw a live store print Invalid form type in its footer because an email capture form had been named after its own section instead of using customer.
This one deserves its own mention because of where it does not show up. Theme check does not catch it. The upload does not catch it. Most local preview tools accept any form type. It appears only on real Shopify, in front of real shoppers. Use {% form 'customer' %} for any newsletter or email signup, which is what the Shopify Dawn theme uses in its own footer.
If the form renders but signups seem to vanish, that is a different set of causes, covered in why your Shopify newsletter signup is not working.
Why does my homepage show grey boxes where the photos should be?
This is not a bug and it is the easiest one to mistake for one. Sections declare image fields with a setting type of image_picker, and until something is uploaded to that field the section falls through to a placeholder rectangle. A well designed homepage with four empty image fields looks half built rather than empty, which reads as broken.
We logged this on 4 May 2026 on a theme where four of four image fields rendered as placeholders on first install. Nothing was wrong with it. Open the theme editor, click each section, and upload an image to each picker. If you want to see what the design is meant to look like before sourcing photography, most themes let you preview with sample content. Once your own photos are in, a different image fault takes over, which is blank space around images that do not fill their frame.
Which cause is which?
| Symptom | Cause | Text in page source? | Caught by theme check? | Fix |
|---|---|---|---|---|
| Fine for you, a password box for everyone else | Store not launched yet (private mode) | Not applicable, the visitor gets a different page | Not applicable, this is a store setting | Online Store, then Private, then Public, then Update |
| Whole page blank above a certain browser width | An over broad display: none inside a media query |
Yes | No | Narrow the selector so it matches only the intended element |
| Sections blank below their own headings | Reveal animation stuck at opacity: 0 |
Yes | No | Default to visible, or force reveal on a timeout |
| Section title renders, contents do not | JSON template lists the section but no blocks | Partly. Wrapper yes, contents no | No | Add blocks and block_order to the template entry |
| Header or footer missing, error text in its place | Layout calls a section filename that is not there | No | Sometimes | Rename the file to match the {% section %} call |
| An error sentence where a signup form should be | A {% form %} type outside the Shopify allowed list |
No | No | Use {% form 'customer' %} |
| Layout intact, images are flat rectangles | Empty image_picker settings |
Yes | Not applicable, this is expected | Upload images in the theme editor |
What order should I check these in?
- Open the store in a private window. Ten seconds. If you get a password box, the store is not launched and the theme is fine.
- Resize the window from narrow to wide. Ten seconds. If content appears or disappears at a specific width, you have a media query and you now know its number.
- View Page Source and search for your text. Two minutes. This splits the problem into the CSS half and the template half and saves you looking in the wrong one.
- Read the page for the words Liquid error. Shopify prints these inline with a filename and a line number, which is the most direct answer you will get.
- Inspect an empty area and read its computed opacity and display. This confirms or rules out the two hiding rules in one look.
- Open your JSON template and check that block based sections list their blocks. Only after the steps above, because it is the slowest to read.
Throughout this, work on a duplicate. Shopify keeps up to 20 themes in the library and only one is live, so you can install, break and delete without a customer ever seeing it. Our guide to what happens to your products when you change theme covers what carries across and what has to be set up again.
Why is this so hard to catch before it ships?
Every cause on this page shares one property: the theme is valid. Nothing is malformed, no file is missing, and the validators all pass, because none of these are errors in the sense a validator understands. They are correct instructions pointed at the wrong thing, and the only way to see them is to look at the rendered page at more than one width.
That is the same lesson as the one in our audit of stores that scroll sideways on mobile, where 20 of 20 design presets shipped CSS that was correct at 1280px and broken at 390px. In both cases the defect was invisible to the person who wrote it and obvious to anyone measuring. It is why Themr renders every theme it generates at several widths and fails the build on a page that collapses, rather than relying on a reviewer to notice.
The quietest member of that family is a theme that renders perfectly and cannot be customized, which we measured separately in why a Shopify theme color setting saves and changes nothing. A near neighbour is a section that exists in the theme and refuses to appear in the editor, which comes down to one array in the schema: why you cannot add a section in the Shopify theme editor.
One last distinction worth holding on to. If the page is not blank but simply unfamiliar, full of grey placeholder drawings and products you do not sell, nothing is wrong at all and you are looking at an unfilled theme rather than a broken one: why your store does not look like the theme demo covers what a theme file does and does not contain.
Frequently asked questions
Why is my Shopify homepage blank after I install a theme?
First check whether customers are seeing a password page: an unlaunched store sends every logged out visitor to /password while you still see the full homepage in the editor. If the homepage itself is blank, it is almost always because the content rendered and something is hiding it, rather than because the theme failed. Open View Page Source and search for a heading you expect. If the text is in the HTML, a CSS rule such as an unfinished reveal animation or an over broad display none is hiding it. If the text is absent, the template never called that section or never listed its blocks.
Why do customers see a password page instead of my Shopify homepage?
Because the store has not been launched. Shopify starts every store in private mode and redirects logged out visitors from the homepage to /password, while you keep seeing the real homepage in the theme editor. In the admin, go to Online Store, click the Private label in the access setting menu, choose Public and click Update (the first time, the button reads Launch store). On a trial, Shopify may ask you to finish a setup step such as adding a business address first.
How do I see my Shopify store the way a customer does?
Open your store address in a private or incognito browser window, where you are not logged in to the admin. That shows the password page if the store is private, and the live published theme if it is public. The theme editor and theme preview always show the full homepage to the owner, so they cannot tell you what a visitor sees.
Why is my Shopify homepage blank on my phone but fine on desktop?
The rule hiding your content is most likely inside a max-width media query, so it only applies below a certain screen width. Drag your desktop browser window down to about 390px, the width of a common phone, and watch for the point where content vanishes. That width is the number to search your CSS for.
Why does shopify theme check pass when my page renders nothing?
Theme check only reads your files. It validates Liquid syntax, schema shape, translation keys and asset references, so it cannot see that a section rendered and was then hidden by a CSS rule, or that a JSON template requested a section without its content blocks. In our worst recorded case the theme passed theme check and our own validator while every section on the page was set to display none.
Why is my Shopify theme blank on a big monitor but fine on my laptop?
Because the rule hiding your content sits inside a media query with a minimum width, so it only applies above a certain screen size. In one comparison of six themes, three went blank above a width, at 1041px, 1181px and 1401px respectively. The middle one looks correct on a 1280px laptop and blank on a 1440px monitor. Drag your browser window from narrow to wide and watch for the width where content vanishes.
My section heading shows but the products underneath are missing. Why?
The JSON template named the section but did not list any blocks. A section schema can define a presets array describing its default contents, but presets are only read when a merchant adds the section by hand in the theme editor. On a fresh install the template renders only what its own blocks and block_order keys list, so those keys have to be filled in for anything to appear.
What does "is not a valid section type" mean in Shopify?
The theme layout contains a call such as {% section "header" %} that looks for a file named sections/header.liquid, and no file by that exact name exists. It usually happens when a custom header or footer was saved under a different filename. The fix is to rename the file to match the call rather than to rewrite the section.
Why does my newsletter form show a Liquid error on the live store?
The Shopify form tag accepts a fixed list of 15 types, and anything outside that list renders an error sentence in place of the form. Email capture and newsletter forms should use the customer type, the same one Dawn uses in its footer. This error is invisible locally: theme check, the theme upload and most preview tools all accept an invalid form type, so it appears for the first time on the real storefront.
Why does my new Shopify theme show grey boxes instead of photos?
The theme is working. Sections declare their photo slots as image_picker settings, and those slots render a placeholder rectangle until you upload something into them. Open the theme editor, select each section and upload an image to each picker. It reads as broken because a finished layout with empty image slots looks half built rather than empty.
Should I edit the live theme while debugging a blank page?
No. Duplicate it first. Shopify holds up to 20 themes in the library and only one is published, so a duplicate lets you install, break and delete without any customer seeing it. Preview links work against your real products, so nothing about the test is less realistic for being unpublished.
Generate a theme that looks like your brand
A complete Shopify 2.0 theme with conversion features built in, ready in minutes. No credit card required.
Generate my theme freeNo Shopify store yet? Start one here, then bring the theme. Themr may earn a commission if you start a paid plan; it does not change what you pay.