المستخدم نفسه، في الشريحة نفسها، في كل مكان
محرّك واحد يعمل في الـ edge والـ SDK والـ CLI وCI. اكتب أي معرّف مستخدم، وستُحسب النتيجة في متصفحك بالشيفرة نفسها.
hash("checkout-v2", "user_1") → 40.61 < 50 ✓ · rollout 50%
Feature flags · أمان الإصدارات
يضيف NanoFlags المسودات والموافقات المستقلة وفحوص السيناريوهات إلى كل تغيير في الأعلام، ثم يوصله حزمةً موقّعة إلى حزم الـ SDK لديك في نحو 0.2 ثانية. ويجري التقييم محليًا داخل تطبيقك، فلا يتحول أي انقطاع عابر في الشبكة إلى عطل.
خطة Explore بـ $0SDK برخصة Apache-2.0مزوّد OpenFeature
دليل حي: p50 222 ms · p95 327 msمن التثبيت إلى الـ SDK، آخر 24 ساعةحِزم موقّعة بـ Ed25519SDK برخصة Apache-2.0شاهد زمن الانتشار مباشرة
| منطقة القياس | p50 (ms) | p95 (ms) |
|---|---|---|
| KIX أوساكا | 189 | 280 |
| MEL ملبورن | 194 | 282 |
| LHR لندن | 229 | 318 |
| ATL أتلانتا | 253 | 341 |
| DEN دنفر | 255 | 342 |
لماذا NanoFlags
أربعة أمور مدمجة في كل تغيير على الأعلام. كلٌّ منها يفرضه المنتج أو يُقاس علنًا، ولكلٍّ منها رابط إلى الصفحة التي تشرح كيف.
فحص السيناريو هو القيمة التي تتوقع أن يعيدها العلم لسياق محدد. وحين تكون الفحوص إلزامية، يكفي فشل فحص واحد لمنع النشر.
لا يستطيع صاحب التغيير ولا أي شخص عدّل المسودة أن يوافق عليه. وترتبط الموافقة بالمسودة نفسها، فتسقط إذا تغيّرت المسودة.
الموافقة مرتبطة بهذه المسودة بعينها، وأي تعديل يُسقطها.
توقيعات Ed25519 يتحقق منها الـ SDK افتراضيًا. تُرفض الإعدادات المعدَّلة أو غير الموقّعة، ويواصل تطبيقك العمل بآخر إعدادات سليمة.
تقيس مجسّات اصطناعية كل 5 دقائق الزمن من تثبيت النشر في قاعدة البيانات حتى وصوله إلى الـ SDK. والنتائج وطريقة القياس منشورة للجميع.
222ms
p50 حسب منطقة القياس · آخر 24 ساعة
p50 · من التثبيت إلى الـ SDK · آخر 24 ساعةp95 327 ms · 1,418 عيّنة
الموافقات وفحوص السيناريوهات الإلزامية جزء من خطتَي Team وScale، وفيهما تبدأ كل بيئة Production جديدة وكلاهما مفعّل.
عرض حي · على الشبكة الفعلية
هذه بيئة NanoFlags عامة. اضغط المفتاح: يُنشر التغيير ويُوقَّع ويُدفع إلى حزمة SDK العاملة في هذه الصفحة، وإلى كل زائر آخر لها.
العلامة
العرض العام · بيئة العرض الحي
صفحة الدفع الجديدة
demo-new-checkoutاللون المميز demo-accent
متصفحك
متجر تجريبي يقيّم العلامات محليًا باستخدام @nanoflags/sdk
حذاء Trail Runner 2
حذاء جري خفيف
$129
الخطوة 1 من 3 · عنوان الشحن
كل ما تنشره هنا يراه جميع الزوار. يعود إلى الإعداد الافتراضي كل 15 دقيقة.
تريد هذا في تطبيقك؟ ابدأ مجانًا — بلا بطاقةتغيير واحد من البداية إلى النهاية
يمرّ كل تغيير في الأعلام بالمسار نفسه الذي يمرّ به تغيير الشيفرة، وتترك كل خطوة أثرًا يمكنك الرجوع إليه.
عدّل الاستهداف أو القيم أو نسبة الإطلاق. لا يصل شيء إلى المستخدمين قبل النشر.
draft · checkout-v2
تشغّل فحوص السيناريوهات سياقات محفوظة على المسودة وتقارنها بالنتائج المتوقعة. وأي فحص فاشل يمنع النشر.
12 / 12 passed
يراجع زميلك الفروقات. ولا يمكن لصاحب التغيير أو محرّريه الموافقة عليه.
approved · not an author
يصبح التغيير نسخة ثابتة لا تُعدَّل، موقّعة بـ Ed25519، وتُدفع عبر الاتصالات المباشرة.
r184 · kid k2
تتحقق حزم الـ SDK من التوقيع، وتطبّق الإعدادات الجديدة، وتُبلغ عن النسخة التي حمّلتها. وما لا نعرفه يظهر صراحةً على أنه «غير معروف».
signature valid
تراجع عن أي تغيير باستعادة نسخة سابقة. وكل خطوة مسجّلة في سجل التدقيق.
التوصيل
تنتقل التغييرات المنشورة عبر WebSockets على شبكة Cloudflare وتصل إلى حزم الـ SDK في نحو خُمس ثانية. ويقيّم تطبيقك الأعلام محليًا، فلا تُبطئ الشبكة أي طلب، وإذا انقطع الاتصال تبقى آخر إعدادات جرى التحقق منها قيد العمل.
النشر
postgres commit
التوقيع
Ed25519
الـ edge
WebSocket push
الـ SDK
verify → evaluate
import { createClient } from "@nanoflags/sdk";
const flags = createClient({
sdkKey: process.env.NANOFLAGS_SDK_KEY!,
baseUrl: "https://edge.nanoflags.io",
service: "checkout-api",
});
await flags.ready(); // never rejects
const on = flags.boolean("checkout-v2", false, { key: user.id, region: "EU" });
// Evaluated locally. Falls back to false only if no config has ever loaded.import { createClient } from "@nanoflags/sdk";
import { NanoFlagsProvider, useFlag } from "@nanoflags/sdk/react";
const client = createClient({ sdkKey: "nf_pub_…", baseUrl: "https://edge.nanoflags.io", service: "web" });
export function App({ user }) {
return (
<NanoFlagsProvider client={client} context={{ key: user.id }}>
<Checkout />
</NanoFlagsProvider>
);
}
function Checkout() {
const v2 = useFlag("checkout-v2", false);
return v2 ? <NewCheckout /> : <OldCheckout />;
}import { OpenFeature } from "@openfeature/server-sdk";
import { createClient } from "@nanoflags/sdk";
import { NanoFlagsProvider } from "@nanoflags/openfeature-provider/server";
const nanoflags = createClient({ sdkKey: process.env.NANOFLAGS_SDK_KEY!, baseUrl: "https://edge.nanoflags.io" });
await OpenFeature.setProviderAndWait(new NanoFlagsProvider({ client: nanoflags }));
const on = await OpenFeature.getClient().getBooleanValue("checkout-v2", false, { targetingKey: user.id });npm i -g @nanoflags/cli
nanoflags scenarios run --source draft # gate a publish in CI
nanoflags refs scan . --repo acme/web # find flag references
nanoflags export --out project.json # take everything with youثق، لكن تحقّق
شغّل محرّك توزيع المستخدمين في متصفحك، واطّلع بدقة على ما يتلقاه مفتاح المتصفح، واقرأ ضوابط الحسابات. ومفاتيح التوقيع العامة منشورة على /v1/keys.
محرّك واحد يعمل في الـ edge والـ SDK والـ CLI وCI. اكتب أي معرّف مستخدم، وستُحسب النتيجة في متصفحك بالشيفرة نفسها.
hash("checkout-v2", "user_1") → 40.61 < 50 ✓ · rollout 50%
لا يتلقى مفتاح المتصفح إلا الأعلام المكشوفة للعميل والشرائح التي تستخدمها، فتبقى قواعد الخادم على خوادمك.
TOTP
MFA مع رموز استرداد، ويمكن فرضه على المديرين
RLS
أمان مستوى الصفوف (RLS) على كل جدول، تتحقق منه حزمة اختبارات عزل آلية بين المؤسسات
1 h
نسخ احتياطية كل ساعة، وصفحة حالة عامة تعرض الحوادث
≈1 min
يُرفض المفتاح الملغى على الـ edge خلال دقيقة تقريبًا
دون ارتباط إجباري
الأجزاء التي تعمل داخل شيفرتك مفتوحة المصدر، وبياناتك لك تأخذها متى شئت.
LICENSEApache-2.0
الـ SDK ومحرّك التقييم والـ CLI وGitHub Action كلها برخصة Apache-2.0. اقرأ كل سطر يعمل داخل تطبيقك.
الـ SDK على GitHubاكتب استدعاءات الأعلام وفق واجهة OpenFeature القياسية، ويتولى NanoFlags تقييمها محليًا من تحتها.
دليل OpenFeatureنزّل مشروعًا كاملًا (الأعلام والشرائح والبيئات والمسودات والسيناريوهات والحِزم المنشورة) في ملف JSON واحد من لوحة التحكم، أو شغّل nanoflags export في CI.
مرجع الـ CLIإذا تعذّر الوصول إلينا، يواصل تطبيقك العمل بآخر إعدادات تحقّق منها. والقرار يبقى بيدك.
ضمن سير عملك
ثبّت الـ CLI
npm i -g @nanoflags/cliتعليق على طلب الدمج يعرض حالة الأعلام التي يمسّها التغيير، ومراجع الشيفرة، وفحص «NanoFlags scenarios».
nanoflags[bot] علّق
الأعلام المقروءة في طلب الدمج هذا
| flag | Staging | Production |
|---|---|---|
| checkout-v2 | on · 50% · r212 | on · 25% · r184draft differs |
| new-pricing-page | off · r212 | off · r184 |
NanoFlags scenarios — success
الأسعار
ابدأ مجانًا بمشروع واحد. الأسعار معلنة، والحدود لا تمنع تطبيقاتك من قراءة الأعلام، ويمكنك طلب الاسترداد خلال 14 يومًا.
$0
جرّب سير العمل كاملًا على مشروع واحد.
$149شهريًا
مراجعات وفحوص سيناريوهات إلزامية لبيئة الإنتاج.
$499شهريًا
عدة منتجات، وأعضاء بلا حد، وتصدير سجل التدقيق.
حسب الاتفاق
مراجعة أمنية وحدود مخصّصة وشروط تعاقدية.
من تثق به
أُطلق NanoFlags في 2026. ليست لدينا بعد شعارات عملاء نعرضها، ولن نختلقها. ما نقدّمه لك هو كل ما تحتاجه للتحقق منّا: بيانات أداء حية، وشيفرة مفتوحة المصدر، وصفحة أمان عامة، وبيانات شركتنا المسجّلة.
مجاني لمشروع واحد. لا رسوم على التقييمات. وصدّر بياناتك متى شئت.