Looking for Advice on Building a Large Menu Website in Shopify

Hi everyone,

I’m currently working on a Shopify project that’s designed more as a menu and information website than a traditional online store.

The site contains a large number of categorized menu items with images, descriptions, and pricing, so the primary goal is helping visitors browse information quickly rather than encouraging product purchases.

As the catalog continues to grow, I’m starting to notice a few challenges, such as:

  • Collection pages becoming larger and slower to load

  • Finding the best way to organize hundreds of menu items into clear categories

  • Keeping the navigation simple on both desktop and mobile

  • Maintaining good page speed without relying on too many third-party apps

  • Making sure the structure remains SEO-friendly while still being easy for visitors to browse

From a developer’s perspective, what would you recommend for building a large menu-style catalog in Shopify?

Would you suggest using:

  • Standard collections with pagination

  • Nested collections and custom navigation

  • Metaobjects or metafields for organizing menu content

  • A custom theme structure for better performance

  • Any other lightweight approach you’ve found effective

For reference, this is the type of menu-style website I’m building:

I’d really appreciate hearing from anyone who has built similar large catalog or menu-based Shopify websites.

Thanks in advance!

Hey harryroy — fun project, and thinking about structure before it gets big will save you a lot of pain later. The right answer really hinges on one question: are these menu items actually purchasable through checkout, or is it pure browse/info?

If they’re purchasable → lean on standard products + collections. You get image, price, description, a clean SEO URL, native search and filtering for free — don’t rebuild that with pages or metaobjects. Organize with product type + tags, let automated collections build your categories, and turn on the free Search & Discovery app for native filters. Nav is just the menu editor (up to 3 levels → mega menu).

If it’s pure menu/info (no checkout, like your Dutch Bros reference) → metaobjects are the cleaner model. Define a menu_item metaobject (name, image, description, price as text, category reference) and render it via a metaobject template or a section that loops the entries. That keeps all the cart machinery out of the way, stays light, and each entry can get its own SEO-indexable page.

On your specific points — slow collection pages are almost always too many items + full-size images loading at once. Paginate, lazy-load below-the-fold images, and serve sized images instead of the raw upload:

{% paginate collection.products by 24 %}
  {% for product in collection.products %}
    <img src="{{ product.featured_image | image_url: width: 400 }}"
         srcset="{{ product.featured_image | image_url: width: 400 }} 400w,
                 {{ product.featured_image | image_url: width: 800 }} 800w"
         sizes="(min-width: 750px) 25vw, 50vw"
         loading="lazy" width="400" height="400"
         alt="{{ product.title | escape }}">
  {% endfor %}
  {{ paginate | default_pagination }}
{% endpaginate %}

That alone usually fixes the slowness — no app needed. Staying app-light is the right instinct for speed; most catalog apps add more weight than they save at this scale. And SEO takes care of itself if the structure is native and the nav is real crawlable links (not JS-only) — collections, products and metaobject pages all give clean canonical URLs.

Avoid a fully custom theme structure unless you hit a real wall — Dawn/Horizon + collections + metafields scales to hundreds of items fine. If you tell me whether the items are actually sold or just displayed, I’ll sketch the concrete data model.

Frankly, I do not quite understand your problem.

Couple of things I’d like to highlight for big complex catalogs:

  1. Unfortunately, Shopify does not have native collection nesting.
    You can emulate it though with linklists or metaobjects – would need some coding though;
  2. Consider adding breadcrumbs with proper json-ld metadata which will reflect the nesting, etc;
  3. Shopify has an update to how collections work coming – Introducing the New Collections API (2026-07) — Developer Preview - Products and Orders APIs - Shopify Developer Community Forums so it may make sense to consider this.

Collections with pagination are better crawlable than infinite scroll type.

Complex navigation menus can take long time to render server-side.
I’ve seen site with a very complex top menu navigation done via an app because 3 levels were not enough and only rendering the menu HTML server-side took about half a second on each page (and that’s TTFB!).
Size of the nav menu HTML was several hundreds of kilobytes.

Lazy-loading those can help, but require theme support/modification.

Hi @harryroy

Yes, this is definitely possible.

If you’re referring to the navigation menu itself, it can be built to match virtually any design. If you can share your design or a reference, I can create the same layout in Shopify.

Depending on your requirements, there are a few approaches:

  • Custom theme sections for the best performance and complete design flexibility.

  • Metafields or Metaobjects if you want menu categories, featured items, icons, or promotional content to be managed dynamically from the Shopify admin.

  • Standard Shopify navigation for simpler menu structures.

For large menu-style websites, I generally recommend a custom theme implementation combined with metafields/metaobjects where appropriate. This keeps the site lightweight, avoids unnecessary apps, is easier to maintain, and provides better performance as the catalog grows.

If you share your desired menu design or functionality, I’d be happy to suggest the most suitable approach and explain how I would implement it.

Best regards,
Devcoder :laptop: