The member storefront lets one cacheable storefront page work for both signed-in members and guests. Your Liquid template renders guest-safe content. A browser runtime then replaces the parts that depend on who is signed in.
Nothing member-specific is baked into the cached HTML. That keeps pages shareable on a CDN while members still see their own prices, name, and account menu.
It powers four things:
Install the runtime
The runtime ships as one script that Fluid installs for you as a global embed on the storefront, placed in the page head:
You do not add this tag by hand, and you do not need a theme change to get it. Fluid provisions the embed for the company and keeps it pointing at the current release. Review it alongside your other embeds in Fluid Admin — see Manage global embeds.
Two things to know about the script:
- It is an ES module, so it must load with
type="module".
- The URL carries no version. Fluid publishes each release under an immutable versioned path and repoints this stable URL once the release is verified, so storefronts pick up fixes without a theme edit.
Ask Fluid to enable the member storefront for your company. Until it is enabled, the Liquid tags below render nothing and the runtime stays idle.
How hydration works
The runtime never reads a token from the URL or from browser storage. Instead it checks for a non-sensitive marker cookie that Fluid sets next to the real signed-in session cookie.
- Your template renders guest-safe fallbacks and empty shells.
- On load, the runtime looks for member shells on the page.
- If it finds one and the marker cookie is present, it confirms the session with Fluid.
- It fills the shells and reveals member-only branches.
If the marker is missing, the runtime makes no network requests at all. A forged or stale marker grants nothing, because Fluid still authenticates the real session cookie on every request.
Members who were already signed in before your company was enabled need to sign in once more.
Guest-safe by default
Every shell keeps its original content until real data replaces it. Expired sessions, failed requests, and timeouts leave the guest content in place rather than blanking the page.
The runtime revalidates when the page regains focus or is restored from history, and it discards responses that arrive after a sign-out.
Show member identity
Use the {% member %} block to branch on audience. The {% else %} branch is what guests and crawlers see:
Both branches ship in the cached HTML. The member branch starts hidden and is revealed in the browser, so never put anything private in it.
Treat the member branch as public. It is present in the page source for every visitor, including guests and crawlers. Put only content you are willing to publish there.
Use {% member_name %} where the member’s display name should appear. The tag renders an empty shell that the runtime fills in for members, so a guest sees nothing in its place.
Pair it with copy that still reads correctly when the name is absent, or place it inside a member branch:
Scope
Member name shells and audience branches must sit inside a section marked with data-fluid-member-storefront. Price shells hydrate anywhere on the page.