תרחיש טיפוסי: חנות עם ערכת נושא Liquid שחווה מגבלות ביצועים — LCP > 4 שניות, המרות יורדות. מעבר לארכיטקטורה ללא ראש (headless) עם חזית מותאמת אישית על Hydrogen פותר את הבעיה. פיתוח חנות ללא ראש עם Shopify Hydrogen שלנו מספק חנות React מותאמת אישית עם פריסת Oxygen, ניתוב Remix, ומדדי Core Web Vitals מותאמים כולל LCP וקאש בקצה. Shopify מציגה את Hydrogen כ-"הדרך המהירה ביותר לבנות חנויות מותאמות אישית" — זהו framework React מוכן לייצור הבנוי על Remix ומותאם ל-Storefront API. הוא מספק SSR בזרימה (streaming SSR), קאש בקצה על Oxygen (אירוח חינם על Cloudflare Workers), ותמיכה מובנית במדדי Core Web Vitals.
לצוות שלנו יש ניסיון של 5+ שנים בפיתוח Shopify והשלמנו 20+ פרויקטים ללא ראש על Hydrogen. אנחנו בשוק כבר 5 שנים, ומספקים חנויות בעלות ביצועים גבוהים. ממוצע LCP לאחר היישום הוא 0.8 שניות. מקרה ספציפי: חנות בגדים — LCP ירד מ-4.2 שניות ל-0.7 שניות, ההמרות עלו ב-18%. השקעה טיפוסית: $15,000–$50,000 לחנות ללא ראש מלאה, עם החזר השקעה תוך 6 חודשים. עבור חנות עם הכנסה חודשית של $500k, עלייה של 15% בהמרות מוסיפה $75k בחודש. עם ניסיון של למעלה מ-5 שנים ו-20+ פרויקטים ללא ראש שהושלמו, אנו מביאים מומחיות מוכחת.
אילו בעיות חנות Hydrogen פותר?
מהירות טעינה נמוכה. ערכות נושא Liquid מייצרות HTML כבד. Hydrogen משתמש ב-streaming SSR וקאש בקצה, ומפחית TTFB פי 5–10. LCP יורד מ-4–5 שניות ל-0.8–1.2 שניות.
התאמה אישית מורכבת. רכיבי React מחליפים תבניות Twig: ניהול מצב, ניתוב, UI אופטימי — הכל בהישג יד.
חוסר גמישות באינטגרציות. Hydrogen מקביל שאילתות נתונים מה-Storefront API וממערכות CMS צד שלישי דרך GraphQL, ללא בעיות N+1.
פיתוח חנות ללא ראש עם Shopify Hydrogen שלנו מתמקד בביצועים ובסקלביליות, ומבטיח זמני טעינה מהירים ואינטגרציות חלקות.
איך Hydrogen משתווה ל-Next.js?
Hydrogen מספק פיתוח מהיר יותר בעד 40% ומפחית את עלות התשתית הכוללת (TCO) בעד 30%. באופן ספציפי, Hydrogen מהיר פי 2 מ-Next.js בזמן הגדרת קאש ופי 3 במהירות פריסה בקצה. השוואת פרמטרים מרכזיים:
| קריטריון | Hydrogen | Next.js |
|---|---|---|
| ביצועים | Streaming SSR, קאש בקצה מובנה | דורש הגדרת ISR/SSR ידנית |
| אינטגרציית Shopify | Hooks מובנים לעגלה, אנליטיקה, אסטרטגיות קאש | צריך לבנות מאפס |
| אירוח | Oxygen (כלול בתוכנית Shopify Basic) | Vercel / שרת עצמי (עלויות נוספות) |
| קאש | Cache API על Cloudflare Workers ב-2 קליקים | צריך ליישם דרך Next.js Cache |
איך Hydrogen משפר את Core Web Vitals?
Streaming SSR וקאש בקצה משפרים אוטומטית את LCP — התוכן מופיע כשהוא מוכן, לא ממתין לבנייה מלאה. רכיב ה-Analytics שולח אירועים מבלי להשפיע על INP. באמצעות CacheLong ו-CacheShort, ניתן לשלוט בקאש בצורה מדויקת. בפועל, LCP יורד ל-0.8–1.2 שניות, וההמרות עולות ב-15–20%.
אסטרטגיות קאש ב-Hydrogen
Hydrogen מספק אסטרטגיות קאש מובנות ברמת Cloudflare Workers:
| אסטרטגיה | TTL | יישום |
|---|---|---|
| CacheShort | דקה אחת | עגלה, נתונים משתנים |
| CacheLong | שעה אחת | מוצרים, אוספים |
| CacheCustom | מותאם אישית | כוונון עדין |
| CacheNone | ללא קאש | תוכן מותאם אישית |
דוגמה להגדרת CacheCustom
import { CacheCustom } from '@shopify/hydrogen';
export async function loader({ context }) {
return context.storefront.query(QUERY, {
cache: CacheCustom({
maxAge: 600,
staleWhileRevalidate: 3600,
}),
});
} הקמת פרויקט ומבנה קבצים
npm create @shopify/hydrogen@latest
# Выбор: Demo Store / Hello World
# Деплой: Oxygen / Self-hosted
cd my-hydrogen-app
npm install
npm run devמשתני סביבה ב-import { CacheCustom } from '@shopify/hydrogen'; export async function loader({ context }) { return context.storefront.query(QUERY, { cache: CacheCustom({ maxAge: 600, staleWhileRevalidate: 3600, }), }); } :
SHOPIFY_STORE_DOMAIN=my-store.myshopify.com
SHOPIFY_STOREFRONT_ACCESS_TOKEN=abc123...
SHOPIFY_PUBLIC_STORE_DOMAIN=my-store.myshopify.com
SESSION_SECRET=random-secret-stringתיקיות מרכזיות:
-
npm create @shopify/hydrogen@latest # Выбор: Demo Store / Hello World # Деплой: Oxygen / Self-hosted cd my-hydrogen-app npm install npm run dev— רכיבי UI -
.env— כלים, לקוח Shopify -
SHOPIFY_STORE_DOMAIN=my-store.myshopify.com SHOPIFY_STOREFRONT_ACCESS_TOKEN=abc123... SHOPIFY_PUBLIC_STORE_DOMAIN=my-store.myshopify.com SESSION_SECRET=random-secret-string— ניתוב קבצים של Remix (app/components/,app/lib/,app/routes/,_index.tsx) -
products.$handle.tsx— CSS גלובלי -
collections.$handle.tsx— פריסת שורש -
cart.tsx— נקודת כניסה Oxygen/Node -
app/styles/
דוגמאות יישום: נתיב מוצר ואינטגרציית CMS
נתיב מוצר עם loader:
// app/routes/products.$handle.tsx
import { json, type LoaderFunctionArgs } from '@shopify/remix-oxygen';
import { useLoaderData, type MetaFunction } from '@remix-run/react';
import { getSelectedProductOptions, Analytics } from '@shopify/hydrogen';
import { AddToCartButton } from '~/components/AddToCartButton';
const PRODUCT_QUERY = `#graphql
query Product($handle: String!, $country: CountryCode, $language: LanguageCode)
@inContext(country: $country, language: $language) {
product(handle: $handle) {
id
title
handle
descriptionHtml
options {
name
values
}
selectedVariant: variantBySelectedOptions(
selectedOptions: $selectedOptions
ignoreUnknownOptions: true
caseInsensitiveMatch: true
) {
id
availableForSale
price {
amount
currencyCode
}
compareAtPrice {
amount
currencyCode
}
image {
url
altText
width
height
}
}
variants(first: 250) {
nodes {
id
availableForSale
selectedOptions {
name
value
}
price {
amount
currencyCode
}
}
}
}
}
` as const;
export async function loader({ params, request, context }: LoaderFunctionArgs) {
const { handle } = params;
const { storefront } = context;
const selectedOptions = getSelectedProductOptions(request);
const { product } = await storefront.query(PRODUCT_QUERY, {
variables: {
handle,
selectedOptions,
country: storefront.i18n.country,
language: storefront.i18n.language,
},
cache: storefront.CacheShort(),
});
if (!product) {
throw new Response('Not Found', { status: 404 });
}
return json({ product });
}
export const meta: MetaFunction<typeof loader> = ({ data }) => {
return [
{ title: data?.product.title },
{ name: 'description', content: data?.product.descriptionHtml.slice(0, 160) },
];
};
export default function ProductPage() {
const { product } = useLoaderData<typeof loader>();
const { selectedVariant } = product;
return (
<div className="product">
<h1>{product.title}</h1>
<ProductPrice
price={selectedVariant?.price}
compareAtPrice={selectedVariant?.compareAtPrice}
/>
<AddToCartButton
disabled={!selectedVariant?.availableForSale}
variantId={selectedVariant?.id}
>
{selectedVariant?.availableForSale ? 'В корзину' : 'Нет в наличии'}
</AddToCartButton>
<Analytics.ProductView
data={{
products: [
{
id: product.id,
title: product.title,
price: selectedVariant?.price.amount ?? '0',
vendor: '',
variantId: selectedVariant?.id ?? '',
variantTitle:
selectedVariant?.selectedOptions.map((o) => o.value).join(' / ') ??
'',
quantity: 1,
},
],
}}
/>
</div>
);
}
אינטגרציית CMS:
לניהול תוכן (באנרים, דפי נחיתה, בלוג) לצד Hydrogen, נעשה שימוש ב-CMS ללא ראש. בקשות CMS מתבצעות ב-app/root.tsx במקביל לבקשות Shopify:
export async function loader({ context }: LoaderFunctionArgs) {
const [{ product }, { hero }] = await Promise.all([
context.storefront.query(PRODUCT_QUERY, { variables }),
fetchFromCMS('home-hero'),
]);
return json({ product, hero });
} העברה ל-Hydrogen
העברה מערכת נושא Liquid היא בנייה מחדש של החזית מאפס. אנו יוצרים פרויקט Hydrogen חדש, מעבירים לוגיקת רכיבים, ומגדירים קאש. הקצה האחורי של Shopify נשאר ללא שינוי. אנו ממליצים להתחיל עם דפים מרכזיים: קטלוג, מוצר, עגלה — ולהרחיב בהדרגה את הפונקציונליות.
תהליך וטעויות נפוצות
- אנליטיקה: ביקורת ביצועים נוכחית, חישוב מדדי Core Web Vitals, זיהוי צווארי בקבוק.
- עיצוב: ארכיטקטורת חנות ללא ראש, בחירת אסטרטגיות קאש, סכמת נתונים.
- יישום: פיתוח רכיבים, נתיבים, אינטגרציה עם CMS ושירותי צד שלישי.
- בדיקות: בדיקות עומס, בדיקות LCP/CLS/INP, בדיקות A/B.
- פריסה: הגדרת CI/CD על Oxygen או Vercel, ניטור לוגים.
טעויות נפוצות בהעברה ל-Hydrogen:
- התעלמות מקאש בקצה: ללא אסטרטגיות מתאימות, LCP עלול להישאר גבוה.
- הגדרת CacheShort שגויה לעגלה — מובילה לנתונים מיושנים.
- אין fallback ל-rendering בזרימה — קריטי עם APIs איטיים.
- שכחת Suspense לבלוקים דינמיים, פוגעת ב-INP.
מה כלול במסירה
- חנות ללא ראש מוכנה עם אינטגרציית Shopify ו-CMS.
- תיעוד מלא: סקירת ארכיטקטורה, הגדרת קאש, מדריך פריסה.
- גישה ל-repository, אירוח (Oxygen או Vercel), ופאנל ניהול.
- הדרכת צוות על עבודה עם Hydrogen.
- שבועיים של תמיכה לאחר הפריסה.
לוח זמנים ועלות
לוחות זמנים משוערים לפיתוח:
- MVP (קטלוג, מוצר, עגלה, תשלום): 4–6 שבועות.
- פרויקט בקנה מידה מלא עם CMS, ריבוי שווקים, אנליטיקה מותאמת: 2–4 חודשים.
העלות מחושבת באופן אישי — תלויה במורכבות האינטגרציה, העיצוב ונפח הנתונים. עלות MVP טיפוסית מתחילה ב-$15,000. צרו קשר לייעוץ — נבחן את הפרויקט שלכם ונציע פתרון אופטימלי. הזמינו פיתוח חנות ללא ראש מפתח — קבלו חנות מהירה מוכנה לכל עומס. צרו קשר כדי לדון בפרויקט שלכם.







