حملات زنجیره تأمین نرمافزار (Supply Chain) یکی از جدیترین تهدیدهای امنیتی دنیای توسعه نرمافزار هستن. در مارس ۲۰۲۶، پکیجهایی مثل trivy-action و axios دچار آلودگی شدن و میلیونها پروژه رو در معرض خطر گذاشتن. این مقاله یه نقشه راه عملی برای کاهش ریسک مصرف پکیجهای شخص ثالث ارائه میده — از کم کردن وابستگیها و اعمال تأخیر در نصب آپدیتها گرفته تا استفاده از پروکسی رجیستری و محیطهای توسعه ابری. اصول مطرحشده فراتر از npm هستن و برای تمام اکوسیستمهای مدیریت پکیج قابل اجرا ان.
opentype.js یه کتابخانه جاوااسکریپتیه که بهت امکان میده فایلهای فونت رو توی مرورگر و Node.js بخونی، بنویسی و رندر کنی. نسخه ۱.۳.۵ با تعداد زیادی تغییر و بهبود منتشر شده که شامل پشتیبانی از فونتهای متغیر، رفع چند آسیبپذیری امنیتی مهم و بهبود قابل توجه پرفورمنس میشه. این نسخه در واقع همون نسخه ۲.۰.۰ پریریلیزه که به اشتباه با شماره ۱.۳.۵ منتشر شده.
EmailMD یه ابزار متنبازه که بهت اجازه میده ایمیلهای ریسپانسیو رو فقط با Markdown بنویسی و بفرستی، بدون اینکه دردسر کدنویسی پیچیده HTML داشته باشی. کافیه فایل Markdown بنویسی و با چند تا بلوک ساده مثل header، callout و footer ساختار ایمیلت رو بچینی. این ابزار مخصوصاً برای توسعهدهندههایی طراحی شده که از نوشتن جداول تودرتو و کدهای HTML قدیمی برای ایمیل خسته شدن.
مدیا کوئریهای کلاسیک با min-width و max-width یه مشکل آزاردهنده دارن: وقتی دو کوئری با یه مقدار breakpoint یکسان به هم میرسن، میتونن همزمان فعال بشن و لایهبندی رو خراب کنن. راهحل قدیمی اینه که مقدار یکی از breakpointها رو یه پیکسل جابهجا کنی، ولی با چند breakpoint این کار پیچیده میشه. مدیا کوئریهای Range که بخشی از Media Queries Level 4 هستن، با استفاده از عملگرهای مقایسهای مثل این مشکل رو به شکل خواناتری حل میکنن. این قابلیت از مارس ۲۰۲۳ در تمام مرورگرهای اصلی پشتیبانی میشه و میشه
d3-3d یه کتابخانه جاوااسکریپتیه که بهت اجازه میده دادههای سهبعدی رو مستقیماً توی مرورگر و با استفاده از d3.js رندر کنی. این کتابخانه از پروجکشن ارتوگرافیک استفاده میکنه تا دادههای سهبعدی رو روی صفحهی SVG نمایش بده. شکلهایی مثل مثلث، مکعب، خط، پلیگون، گریدپلین و غیره پشتیبانی میشن و همهشون یه API مشترک دارن. پشتیبانی کامل از TypeScript هم یکی از ویژگیهای کلیدی این پروژهست که نیاز به نصب تایپهای جداگانه نداره.
Tool UI یه مجموعه کامپوننت ریاکت کپی/پیستیه که برای نمایش فراخوانی ابزارها (tool calls) در رابطهای چت هوش مصنوعی طراحی شده. بیشتر اپها وقتی مدل یه ابزار فراخوانی میکنه، JSON خام رو توی مکالمه نشون میدن؛ Tool UI این پیلودها رو به UIهای تعاملی مثل فرم، جدول، نمودار، و کارت تأیید تبدیل میکنه. این پروژه از مدل shadcn/ui پیروی میکنه، یعنی کامپوننتها مستقیم داخل کدبیس شما زندگی میکنن و هیچ وابستگی اضافهای نداره. هر کامپوننت یه اسکیما Zod داره و روی shadcn/ui و Tailwind ساخته شده.
فایرفاکس یه استاندارد جدید به اسم WAICT معرفی کرده که میخواد مشکل اعتماد به سرور در اپهای وب رو حل کنه. ایده اصلی اینه که کد سمت کلاینت به یه مانیفست رمزنگاریشده گره بخوره و اون مانیفست توی یه لاگ عمومی قابل بازرسی ثبت بشه. اگه سروری کد دستکاریشدهای ارسال کنه، مرورگر اون رو رد میکنه. این قابلیت الان به صورت پروتوتایپ توی Firefox Nightly در دسترسه و موزیلا داره با شرکای بزرگی مثل Cloudflare و Meta روش کار میکنه.
این مقاله یه سیستم ردیابی هویت کاربر رو بدون نیاز به احراز هویت توضیح میده که با تولید یه شناسه تصادفی (userPseudoId) کار میکنه. این شناسه بهترتیب در localStorage، sessionStorage و کوکی ذخیره میشه تا حتی اگه یه روش در دسترس نبود، اطلاعات از دست نره. شناسهها تاریخ انقضا دارن و بعد از مدت معین، بهطور خودکار پاک و دوباره تولید میشن. این رویکرد برای سایتهایی که میخوان رفتار کاربران ناشناس رو ردیابی کنن خیلی مفیده.
پلتفرم وب خیلی از بهترین APIهایش را از خودش در نیاورده — از کتابخانههایی که توسعهدهندهها سالها در پروژههای واقعی ازشون استفاده کردن کپی کرده. jQuery، Bootstrap، Lodash و امثالشون ایدههایی رو آزمایش کردن که بعداً مستقیم وارد استانداردهای مرورگر شدن. از `querySelector` گرفته تا `classList` و متدهای آرایه و رشته، همه ریشه در این کتابخانهها دارن. این مقاله نگاهی به تبارشناسی APIهایی میکنه که هر روز باهاشون کار میکنیم.
تست نوشتن برای پروژههای فرانتاند بدون Node یا هر runtime سمت سرور دیگهای یه چالش قدیمیه. توی این مقاله نویسنده نشون میده که چطور میشه کامپوننتهای Vue رو مستقیم توی تب مرورگر با کمک QUnit تست کرد. با یه تابع mountComponent، دادههای fixture و یه waitFor() ساده، میشه تستهای integration واقعی نوشت بدون اینکه به Playwright یا ابزارهای سنگین نیاز داشت.
Anime.js یه کتابخونهی سبک و قدرتمند جاوااسکریپته که باهاش میتونی هر چیزی روی وب رو انیمیت کنی. از ترنسفورمهای CSS و مسیرهای SVG گرفته تا اسکرول سینک و درگانددراپ فنری، همهچیز با یه API یکپارچه مدیریت میشه. حجم کل باندل فقط حدود ۲۴ کیلوبایته و بهصورت ماژولاره، پس فقط همون چیزی رو import میکنی که نیاز داری.
Anime.js از نسخه ۴.۴.۰ یه قابلیت جدید به اسم scrambleText اضافه کرده که بهت اجازه میده متن رو با یه افکت باحال «کاراکتر به کاراکتر» نمایش بدی — درست مثل صحنههای هک تو فیلمها! این ابزار به عنوان یه مقدار tween مستقیماً توی متد animate() استفاده میشه. کافیه scrambleText() رو روی خاصیت innerHTML ست کنی تا انیمیشن درهمریختن و آشکار شدن تدریجی متن فعال بشه. استفاده از innerHTML به جای textContent توصیه میشه چون scrambleText داخلی از فاصلههای غیرشکننده HTML استفاده میکنه.
opentype.js یه کتابخونه جاوااسکریپتیه که بهت اجازه میده مستقیماً به شکل حروف فونتها دسترسی داشته باشی، هم توی مرورگر و هم توی Node.js. با این ابزار میتونی متن رو به مسیرهای بزیه تبدیل کنی، کرنینگ و لیگاتور رو مدیریت کنی، و حتی فونتهای رنگی و ایموجی رو پشتیبانی کنی. فرمتهای WOFF، OTF و TTF همگی ساپورت میشن و نصبش هم از طریق npm یا CDN خیلی سادست.
TanStack Form یه کتابخونهی جدید برای مدیریت فرمهاست که مثل بقیهی ابزارهای TanStack، روی تایپینگ قوی و پرفورمنس تمرکز داره. با یه هوک ساده فرمت رو تعریف میکنی، ولیدیشن رو در مراحل مختلف (مثل submit یا blur) تنظیم میکنی، و چون هدلس طراحی شده، خودت میتونی هر UI دلخواهی رندر کنی. آرایهها، مقادیر وابسته به هم، و state های کامل فیلد مثل isTouched و isDirty هم به خوبی پشتیبانی میشن.
حملات زنجیره تامین به npm داره بیشتر و خطرناکتر میشه. Axios با بیش از ۱۰۰ میلیون دانلود هفتگی آخرین قربانی بود. یه مفهوم ساده به اسم «dependency cooldown» میتونه جلوی بخش بزرگی از این حملات رو بگیره. ابزارهایی مثل npm، pnpm، Yarn و Dependabot الان این قابلیت رو دارن که نصب پکیجهای تازهمنتشرشده رو برای مدت مشخصی به تعویق بندازن.
مدلهای زبانی کوچک (SLM) الان در Chrome و Edge پشت یه فلگ آزمایشی در دسترسن و میتونن مستقیماً توی مرورگر و بدون نیاز به سرور یا API key اجرا بشن. این ایده جذابیتهای واقعی داره؛ رایگانه، آفلاینه، خصوصیه و به دیتاسنتر وصل نمیشه. اما موزیلا رسماً موضع منفی گرفته و نگرانیهایی مثل انحصار مدل گوگل و شکستن استانداردها رو مطرح کرده. نویسنده هم هم خوشبینه هم نگران، و یه سری پیشنهاد برای بهتر کردن این اکوسیستم ارائه میده.
Astro 6.2 با یه سری ویژگی آزمایشی جذاب رسید. مهمترینشون یه لاگر سفارشی با خروجی JSON هست که برای کار با ایجنتهای کدنویسی خیلی به درد میخوره. علاوه بر این، API بهینهسازی SVG بازطراحی شده، یه هلپر جدید برای لود کردن فونت در مرحله پیشرندر اضافه شده، و اولین آلفای Astro 7 هم برای تست در دسترسه. این نسخه همچنین از Vite 8 پشتیبانی میکنه و کامپایلر Rust رو بهعنوان پیشفرض معرفی میکنه.
spawn-agent یه پکیج npm هست که بهت اجازه میده ایجنتهای هوش مصنوعی نصبشده روی کامپیوترت مثل Claude Code، Codex، Cursor، GitHub Copilot، Gemini و بقیه رو از طریق Vercel AI SDK صدا بزنی. همه چیز روی پروتکل Agent Client Protocol (ACP) سوار شده و خروجی به صورت استریم دریافت میشه. میتونی تنظیماتی مثل دایرکتوری کاری، مجوزها و سرورهای MCP رو هم بهش پاس بدی. برای مکالمات چندمرحلهای هم میشه از session استفاده کرد تا حافظهی مکالمه حفظ بشه.
تیم Remix نسخه بتای Remix 3 رو منتشر کرد؛ یه قدم بزرگ از یه فریمورک «مرکزی-استک» به یه راهحل واقعاً فولاستک. این نسخه دیگه فقط روتینگ و رندرینگ نیست، بلکه همه چیز از سشن و احراز هویت گرفته تا آپلود فایل، کامپوننتهای UI، تمبندی، تست و مدیریت داده زیر یه سقف جمع شده. Remix 3 بر پایه Fetch API ساخته شده و ایده اصلیش اینه که بدون کلی وابستگی پراکنده بتونی مستقیم بری سراغ ساختن اپ. این نسخه هنوز پروداکشنردی نیست ولی برای آزمایش و فیدبک آمادست.
Trigger.dev یه پلتفرم متنباز برای ساخت و دیپلوی AI agentها و workflowهای پیچیده با تایپاسکریپته. بدون نگرانی از تایماوت، بدون مدیریت سرور، و با قابلیتهایی مثل retry خودکار، صفبندی، و observability کامل. توسعهدهندهها میتونن مستقیم با کد Node.js آشنا کار کنن و همه چیز رو روی زیرساخت Trigger.dev اجرا کنن. این ابزار با مدلهای مختلف AI مثل Claude هم کار میکنه و امکان stream کردن پاسخهای LLM به فرانتاند رو هم داره.