<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yasir Najeep</title>
    <description>The latest articles on DEV Community by Yasir Najeep (@yasir_najeep).</description>
    <link>https://dev.to/yasir_najeep</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4090563%2F3bd2cdc5-a160-48fd-b55d-4f488fd9e7e2.png</url>
      <title>DEV Community: Yasir Najeep</title>
      <link>https://dev.to/yasir_najeep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yasir_najeep"/>
    <language>en</language>
    <item>
      <title>The Zero-Quota Trap in Google Antigravity: How I Built an Autonomous Multi-Account Skill</title>
      <dc:creator>Yasir Najeep</dc:creator>
      <pubDate>Tue, 22 Sep 2026 18:02:22 +0000</pubDate>
      <link>https://dev.to/yasir_najeep/the-zero-quota-trap-in-google-antigravity-how-i-built-an-autonomous-multi-account-skill-47h7</link>
      <guid>https://dev.to/yasir_najeep/the-zero-quota-trap-in-google-antigravity-how-i-built-an-autonomous-multi-account-skill-47h7</guid>
      <description>&lt;p&gt;When coding extensively with AI agents in Google Antigravity, few things disrupt developer flow state as abruptly as an unexpected quota brick wall:&lt;br&gt;
&lt;code&gt;HTTP 429 Resource Exhausted / Quota Exceeded&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To maintain uninterrupted development, many engineers register multiple Google AI accounts (Pro or Starter) and configure proxy servers to balance requests. Yet in real production workloads, developers frequently discover that all promises of "full autopilot" collapse at the most critical moment: when an active account exhausts its quota, the editor halts, forcing the developer to exit their workflow, open management GUIs, manually find an account with remaining quota, click switch, and restart the editor.&lt;/p&gt;

&lt;p&gt;This recurring friction led me to dissect the underlying token routing and credential storage architecture, uncover a hidden quota blindspot, and engineer an open-source skill called &lt;strong&gt;Antigravity Autopilot&lt;/strong&gt; for true zero-touch rotation.&lt;/p&gt;

&lt;p&gt;The skill is fully open source under the MIT license on &lt;a href="https://github.com/yasircs4/antigravity-autopilot" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and adheres to the open &lt;a href="https://agentskills.io/specification" rel="noopener noreferrer"&gt;Agent Skills specification&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Root Causes: Why Conventional Rotation Fails
&lt;/h2&gt;

&lt;p&gt;Analyzing account management daemons and proxy routing code revealed two fundamental structural flaws:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. The 5-Hour vs. Weekly Quota Blindspot
&lt;/h3&gt;

&lt;p&gt;Google Antigravity enforces two independent quota buckets for model families:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Rolling 5-Hour Bucket&lt;/strong&gt;: Refreshes continuously on a rolling 5-hour window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Hard Weekly Bucket&lt;/strong&gt;: A fixed weekly allocation across the billing cycle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most manager tools calculate an account's health percentage by examining only the 5-hour rolling bucket. If an account exhausts its weekly quota (&lt;strong&gt;0.0%&lt;/strong&gt;), but its 5-hour rolling window elapses and resets, the management UI displays &lt;strong&gt;100% available quota&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As a result, proxy routers mistakenly treat depleted accounts as healthy, continually dispatching requests directly into immediate &lt;code&gt;HTTP 429&lt;/code&gt; rejections. Preemptive quota protection never engages because the algorithm falsely assumes the account has 100% capacity.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. The IDE Active Credential Lock
&lt;/h3&gt;

&lt;p&gt;Antigravity IDE (built on Electron and the VS Code architecture) stores active OAuth session credentials directly in operating system keystores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;macOS Keychain&lt;/strong&gt;: Service &lt;code&gt;gemini&lt;/code&gt; under account &lt;code&gt;antigravity&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internal SQLite Database&lt;/strong&gt;: &lt;code&gt;state.vscdb&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Standard HTTP proxies only intercept traffic routed through local ports; they have no ability to update the active session credentials inside the running editor. When the account currently driving an interactive chat conversation depletes, the editor freezes until the developer performs a manual credential swap.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Solution: A Three-Tier Autonomous Controller
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Antigravity Autopilot&lt;/strong&gt; operates continuously in the background on macOS, organized across three cohesive layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────────────────────┐
│               Continuous 60s Watcher (com.antigravity.controller)       │
├────────────────────────────────────────────────────────────────────────┤
│ 1. Polls Google Quota API via local admin service                      │
│ 2. Calculates TRUE QUOTA: min(5h_bucket, weekly_bucket)                │
│ 3. Detects active IDE account quota exhaustion (&amp;lt;= 2.0%)               │
│ 4. Selects the Pro account with highest available True Quota           │
│ 5. Gracefully restarts Antigravity IDE &amp;amp; injects fresh credentials     │
│ 6. Dispatches native macOS notification with sound ("Hero")            │
└────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│                 5-Minute Watchdog (com.antigravity.autopilot)          │
├────────────────────────────────────────────────────────────────────────┤
│ • Auto-heals crashed or zombie background daemons                      │
│ • Runs 5-hour rolling warm-ups to trigger rolling window refresh       │
│ • Automatically backs up config integrity                              │
└────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The True Quota Formula
&lt;/h2&gt;

&lt;p&gt;The mathematical foundation of the controller replaces naive percentage displays with an accurate bottleneck calculation:&lt;/p&gt;

&lt;p&gt;$$\text{True Quota} = \min(\text{Bucket}&lt;em&gt;{\text{5h}}, \text{Bucket}&lt;/em&gt;{\text{weekly}})$$&lt;/p&gt;

&lt;p&gt;If an account shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5-Hour Bucket: 100%&lt;/li&gt;
&lt;li&gt;Weekly Bucket: 0.0%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Its calculated True Quota is strictly &lt;strong&gt;0.0%&lt;/strong&gt;. The candidate is immediately excluded from active selection and model protection rules are enforced, eliminating 429 cascade failures.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Installation
&lt;/h2&gt;

&lt;p&gt;Antigravity Autopilot is designed for seamless deployment on macOS:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Automated One-Line Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/yasircs4/antigravity-autopilot.git
&lt;span class="nb"&gt;cd &lt;/span&gt;antigravity-autopilot
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x scripts/install.sh
./scripts/install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Install as an Agent Skill
&lt;/h3&gt;

&lt;p&gt;To equip autonomous coding agents (Claude Code, Codex, OpenCode, or Cursor):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.agents/skills/antigravity-autopilot
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; skills/antigravity-autopilot/&lt;span class="k"&gt;*&lt;/span&gt; ~/.agents/skills/antigravity-autopilot/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Google Antigravity / Gemini CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.gemini/config/skills/antigravity-autopilot
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; skills/antigravity-autopilot/&lt;span class="k"&gt;*&lt;/span&gt; ~/.gemini/config/skills/antigravity-autopilot/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Live Diagnostics via Doctor
&lt;/h2&gt;

&lt;p&gt;The included diagnostic script inspects LaunchAgents, proxy connectivity, and live account quotas in real time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 scripts/doctor.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sample output from active production:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=== 1. Checking LaunchAgents ===
  [PASS] com.antigravity.controller   (PID: 39727, Exit: 0)
  [PASS] com.antigravity.autopilot    (PID: -, Exit: 0)
  [PASS] com.antigravity.notifier     (PID: 67890, Exit: 0)

=== 2. Checking Local Antigravity Tools Proxy (port 8045) ===
  [PASS] Health endpoint reachable: {'status': 'ok', 'version': '4.7.4'}

=== 3. Account True Quotas &amp;amp; Active Selection ===
  account1@gmail.com   | True Gemini:  23.3% | 5h:  99.9% | Weekly:  23.3% | HEALTHY 
  account2@gmail.com   | True Gemini:   0.5% | 5h: 100.0% | Weekly:   0.5% | DEPLETED
  account3@gmail.com   | True Gemini:   0.0% | 5h: 100.0% | Weekly:     0% | DEPLETED
  account4@gmail.com   | True Gemini:  37.4% | 5h:  89.5% | Weekly:  37.4% | HEALTHY  [ACTIVE IDE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Real-World Production Proof
&lt;/h2&gt;

&lt;p&gt;During live testing, the active account &lt;code&gt;najeepyasir&lt;/code&gt; dropped to &lt;strong&gt;0.2%&lt;/strong&gt; quota. Within 60 seconds, the controller identified the exhaustion, disqualified depleted accounts, verified that standby account &lt;code&gt;yasir.najeeb.official&lt;/code&gt; had reset to &lt;strong&gt;70.6%&lt;/strong&gt;, executed the credential injection, relaunched the IDE, and notified the desktop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[INFO] Active account: najeepyasir@gmail.com | True Gemini: 0.2% (5h: 79.9%, Weekly: 0.2%)
[WARN] 🚨 ACTIVE ACCOUNT DEPLETED: najeepyasir@gmail.com is at 0.2% (&amp;lt;= 2.0%)! Triggering rotation...
[INFO] ✅ Selected best replacement account: yasir.najeeb.official@gmail.com (70.6% True Gemini quota)
[INFO] Executing switch via API: accountId=f7e1c14c-0509-4252-bfb7-4558307ed8f1 targetIde=null...
[INFO] 🎉 SUCCESS: Switched active account from najeepyasir@gmail.com to yasir.najeeb.official@gmail.com (70.6% quota)!
[INFO] Active account: yasir.najeeb.official@gmail.com | True Gemini: 68.7% | Threshold: 2.0%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The complete code, automation daemons, and documentation are available on &lt;a href="https://github.com/yasircs4/antigravity-autopilot" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Turn AI Agents into Autonomous Video Directors with Playwright and Edge-TTS</title>
      <dc:creator>Yasir Najeep</dc:creator>
      <pubDate>Mon, 21 Sep 2026 10:26:34 +0000</pubDate>
      <link>https://dev.to/yasir_najeep/turn-ai-agents-into-autonomous-video-directors-with-playwright-and-edge-tts-4f15</link>
      <guid>https://dev.to/yasir_najeep/turn-ai-agents-into-autonomous-video-directors-with-playwright-and-edge-tts-4f15</guid>
      <description>&lt;p&gt;Delivering any software application or business system to end users does not conclude when the code passes unit tests and the deployment pipeline turns green. The real operational bottleneck begins immediately after: How do you help customers, cashiers, or operations staff understand how to use the system without booking endless training calls that exhaust everyone’s schedule?&lt;/p&gt;

&lt;p&gt;Written documentation is rarely read in high-velocity frontline environments like retail stores, warehouses, and point-of-sale terminals. Recording walkthrough videos manually is tedious: you have to write a script, practice mouse movements, re-record whenever a typo happens, record audio, edit the timeline, export, and manually upload to video hosting platforms. If the UI changes next week, you have to throw everything away and start over.&lt;/p&gt;

&lt;p&gt;When developers try automating screen recordings with tools like Playwright or Puppeteer, the output is notoriously robotic: pages switch instantly with no transition, clicks are invisible, viewers have no idea what was pressed or why, and there is no voiceover to provide narrative context.&lt;/p&gt;

&lt;p&gt;To solve this end-to-end, I built &lt;strong&gt;interactive-tutorial-video&lt;/strong&gt;, an open-source Agent Skill that turns any AI coding agent (such as Claude Code, Codex, Cursor, or Windsurf) into an autonomous digital video director. It produces broadcast-ready 1080p interactive tutorial videos complete with animated visual HUD guidance, localized neural voiceovers in native accents, and autonomous YouTube Studio upload into organized playlists ready to send to clients.&lt;/p&gt;

&lt;p&gt;The skill is fully open source under the MIT license on &lt;a href="https://github.com/yasircs4/interactive-tutorial-video" rel="noopener noreferrer"&gt;GitHub (yasircs4/interactive-tutorial-video)&lt;/a&gt; and conforms to the open &lt;a href="https://agentskills.io/specification" rel="noopener noreferrer"&gt;Agent Skills specification&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/eVI7mJWuKxE" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Live interactive walkthrough (1080p Full HD): Glowing focus spotlight halo, virtual vector cursor, click ripple waves, glassmorphic step banner, and synchronized neural voiceover.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Genesis: Taiba Store POS in Suluq, Libya
&lt;/h2&gt;

&lt;p&gt;This skill was born out of a real operational challenge. While deploying an Odoo inventory and Point of Sale (POS) system for Taiba Store (a retail shoes and bags shop in Suluq, Libya), I needed to provide my business partner Saleh and the cashier team with five concrete, practical video walkthroughs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Fast Checkout Cycle:&lt;/strong&gt; Selecting items from categories, applying discounts, calculating cash change, and printing receipts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product &amp;amp; Barcode Setup:&lt;/strong&gt; Adding new items, specifying Benghazi wholesale costs vs. retail prices, and generating barcode labels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily Sales &amp;amp; Margin Tracking:&lt;/strong&gt; Reviewing daily revenue, net profit margins, physical stock audits, and low-inventory alerts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cash Drawer &amp;amp; Shift Reconciliation:&lt;/strong&gt; Registering expenses, cash inflows, end-of-day drawer counts, and closing sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Returns &amp;amp; Exchange Flow:&lt;/strong&gt; Processing customer returns, restocking items automatically, and issuing refunds.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of spending hours manually recording and editing five separate videos, I let the AI agent execute the entire workflow autonomously using this skill. The result was a polished five-part training suite recorded in 1080p with natural Libyan Arabic voiceover (&lt;code&gt;ar-LY-ImanNeural&lt;/code&gt;), uploaded directly into an unlisted YouTube playlist ready for WhatsApp sharing with the shop staff.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Result Playlist on YouTube:&lt;/strong&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLE7Mvo3W8zQY" rel="noopener noreferrer"&gt;Watch the Generated Training Suite on YouTube&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Three Architecture Pillars
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;interactive-tutorial-video&lt;/code&gt; pipeline operates across three decoupled, deterministic phases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------+
| 1. RECORDING PHASE (Playwright + In-Browser DOM HUD Engine)                       |
|    - Inject CSS animations (pulseHalo, rippleEffect, glassmorphic HUD)            |
|    - Smart Virtual Cursor follows actions smoothly via cubic-bezier transitions   |
|    - Pulsating Spotlight Rings frame target elements                              |
|    - Tooltip pills display contextual action hints                                |
|    - Output: Raw 1080p Full HD recording                                          |
+-----------------------------------------------------------------------------------+
                                       |
                                       v
+-----------------------------------------------------------------------------------+
| 2. AUDIO SYNTHESIS &amp;amp; TIMELINE MUXING (edge-tts + ffmpeg)                          |
|    - Synthesize discrete voice segments across dialects (ar, en, zh, hi, fil...) |
|    - Construct ffmpeg filter_complex with adelay &amp;amp; amix (zero clipping)           |
|    - Apply loudness normalization &amp;amp; AAC audio encoding (-c:v copy)                |
|    - Output: Voiced 1080p MP4 tutorial video                                      |
+-----------------------------------------------------------------------------------+
                                       |
                                       v
+-----------------------------------------------------------------------------------+
| 3. AUTONOMOUS YOUTUBE STUDIO DISTRIBUTION (Playwright + macOS Keychain)           |
|    - Decrypt active Chrome cookie store via PBKDF2 + AES-128-CBC                  |
|    - Launch authenticated browser context into YouTube Studio                     |
|    - Upload MP4, inject titles/descriptions, set "Not made for kids", unlisted    |
|    - Automatically generate and populate unlisted playlist in sequence            |
|    - Output: Direct shareable youtu.be links ready for WhatsApp/client delivery   |
+-----------------------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. In-Browser Visual HUD Engine
&lt;/h3&gt;

&lt;p&gt;Rather than capturing an unguided browser viewport where viewers lose track of the mouse cursor, &lt;code&gt;tutorial_engine.js&lt;/code&gt; injects a dynamic visual overlay layer into the active DOM during Playwright execution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart Virtual Cursor:&lt;/strong&gt; A crisp SVG vector cursor that glides between interactive targets using smooth &lt;code&gt;cubic-bezier&lt;/code&gt; timing curves, mimicking deliberate human guidance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pulsating Spotlight Rings:&lt;/strong&gt; Glowing bounding rings with customizable brand colors (&lt;code&gt;accentColor&lt;/code&gt;) that pulse around the target button or input field before any interaction occurs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click Ripple Waves:&lt;/strong&gt; An expanding radial wave that animates outward at the exact moment of a click, removing ambiguity about when actions register.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Tooltip Pills:&lt;/strong&gt; Directional dark badges with micro-arrows pointing to the target element, providing brief instructional text (e.g., "Click here to add product", "Enter cash received").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glassmorphism Status Banner:&lt;/strong&gt; A frosted-glass status card positioned at the bottom of the screen displaying the current step number, step headline, and operational description.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Localized Neural Voiceover Muxer
&lt;/h3&gt;

&lt;p&gt;Visuals without narration leave users guessing. The &lt;code&gt;mux_voiceover.py&lt;/code&gt; engine leverages Microsoft's high-fidelity neural voices via &lt;code&gt;edge-tts&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supports native dialect accents: Libyan Arabic (&lt;code&gt;ar-LY-ImanNeural&lt;/code&gt;), Saudi Arabic (&lt;code&gt;ar-SA-ZariyahNeural&lt;/code&gt;), Egyptian Arabic (&lt;code&gt;ar-EG-SalmaNeural&lt;/code&gt;), UAE Arabic (&lt;code&gt;ar-AE-FatimaNeural&lt;/code&gt;), US English (&lt;code&gt;en-US-JennyNeural&lt;/code&gt;), Chinese (&lt;code&gt;zh-CN-XiaoxiaoNeural&lt;/code&gt;), Hindi (&lt;code&gt;hi-IN-SwaraNeural&lt;/code&gt;), and Filipino (&lt;code&gt;fil-PH-BlessicaNeural&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Discrete speech segments are timed to match visual steps with precision down to the millisecond.&lt;/li&gt;
&lt;li&gt;An advanced &lt;code&gt;ffmpeg&lt;/code&gt; &lt;code&gt;filter_complex&lt;/code&gt; combines segments using &lt;code&gt;adelay&lt;/code&gt; and &lt;code&gt;amix&lt;/code&gt; with loudness normalization, preventing audio clipping or dead air.&lt;/li&gt;
&lt;li&gt;Audio is muxed directly with the video stream using video stream copying (&lt;code&gt;-c:v copy&lt;/code&gt;), preserving crystal-clear 1080p visual fidelity without re-encoding delays.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Solving the YouTube API Barrier: macOS Chrome Session Decryption
&lt;/h3&gt;

&lt;p&gt;Uploading video files to YouTube programmatically has traditionally been painful for developers: Google Cloud API requires project registration, OAuth consent screens, and strict daily upload quotas (often capped at 6 uploads per day). Furthermore, automated headless logins are routinely flagged and blocked by Google's fraud detection.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;interactive-tutorial-video&lt;/code&gt; solves this via &lt;code&gt;youtube_session_uploader.js&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Queries the macOS Keychain for the local &lt;code&gt;Chrome Safe Storage&lt;/code&gt; credential.&lt;/li&gt;
&lt;li&gt;Derives the 128-bit encryption key using PBKDF2 (&lt;code&gt;saltysalt&lt;/code&gt;, 1003 iterations).&lt;/li&gt;
&lt;li&gt;Safely copies the SQLite cookie database from Google Chrome to avoid file locking.&lt;/li&gt;
&lt;li&gt;Decrypts &lt;code&gt;v10&lt;/code&gt; cookies for &lt;code&gt;google.com&lt;/code&gt; and &lt;code&gt;youtube.com&lt;/code&gt; via AES-128-CBC.&lt;/li&gt;
&lt;li&gt;Injects the active authenticated session into Playwright, granting instant access to YouTube Studio without login screens or 2FA prompts.&lt;/li&gt;
&lt;li&gt;Uploads the MP4 video, fills SEO-optimized titles and descriptions, configures COPPA ("Not made for kids"), and sets visibility to unlisted.&lt;/li&gt;
&lt;li&gt;Creates the client playlist and adds videos in sequence, returning clean &lt;code&gt;youtu.be&lt;/code&gt; links for immediate sharing.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  How to Install and Use in Your Agent
&lt;/h2&gt;

&lt;p&gt;The skill is compatible with any AI coding agent that supports the &lt;a href="https://agentskills.io" rel="noopener noreferrer"&gt;Agent Skills specification&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Global installation for all supported agents on your machine&lt;/span&gt;
npx skills add yasircs4/interactive-tutorial-video &lt;span class="nt"&gt;-g&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# Or targeted installation for Codex&lt;/span&gt;
npx skills add yasircs4/interactive-tutorial-video &lt;span class="nt"&gt;-g&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; codex &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# Or for Claude Code&lt;/span&gt;
npx skills add yasircs4/interactive-tutorial-video &lt;span class="nt"&gt;-g&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; claude-code &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, simply instruct your agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use interactive-tutorial-video to record a full 1080p tutorial for our new invoicing flow.
Highlight each form input with emerald spotlight rings and directional tooltip pills.
Generate synchronized English voiceover (en-US-JennyNeural) explaining each step.
Upload the resulting video as unlisted to my YouTube account and add it to the 'Client Onboarding' playlist.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Summary and the Future of AI Production
&lt;/h2&gt;

&lt;p&gt;The role of AI agents is evolving from writing lines of code to orchestrating the complete lifecycle of software delivery. When agents are equipped with visual guidance and neural voice capabilities, they bridge the gap between technical implementation and human understanding, empowering non-technical operators to adopt new tools effortlessly.&lt;/p&gt;

&lt;p&gt;Explore the code, test the examples, and contribute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/yasircs4/interactive-tutorial-video" rel="noopener noreferrer"&gt;https://github.com/yasircs4/interactive-tutorial-video&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Agent Skills Standard:&lt;/strong&gt; &lt;a href="https://agentskills.io/specification" rel="noopener noreferrer"&gt;https://agentskills.io/specification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Author Contact:&lt;/strong&gt; &lt;a href="mailto:info@yasirnajeep.com"&gt;info@yasirnajeep.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Astro 7.2 incremental static builds: is the upgrade worth it for content sites?</title>
      <dc:creator>Yasir Najeep</dc:creator>
      <pubDate>Tue, 25 Aug 2026 07:36:39 +0000</pubDate>
      <link>https://dev.to/yasir_najeep/astro-72-incremental-static-builds-is-the-upgrade-worth-it-for-content-sites-2c1m</link>
      <guid>https://dev.to/yasir_najeep/astro-72-incremental-static-builds-is-the-upgrade-worth-it-for-content-sites-2c1m</guid>
      <description>&lt;p&gt;Astro 7.2 was released on 6 August 2026 with experimental incremental static builds. The idea is simple: do not regenerate a prerendered page when its code and data have not changed. That can materially reduce build time on a large content site. The word experimental still matters, and a major-version upgrade is not a performance toggle in isolation.&lt;/p&gt;

&lt;p&gt;The release also adds an option to disable session support, background mode for &lt;code&gt;astro preview&lt;/code&gt;, and a simpler relative entry point for a custom logger. These can help sites, CI pipelines, and coding agents, but each benefit needs measurement in the actual project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://astro.build/blog/astro-720/" rel="noopener noreferrer"&gt;Official Astro 7.2 announcement&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The evidence boundary for this article
&lt;/h2&gt;

&lt;p&gt;This portfolio runs Astro 5.16.6 at the review date. I have not migrated it to Astro 7 or enabled incremental static builds in its production deployment. This article is an evaluation plan based on Astro's announcement and documentation, not evidence that this site achieved an Astro 7.2 improvement.&lt;/p&gt;

&lt;p&gt;That distinction matters in technical writing. A framework feature does not prove project value, and a local build does not prove production deployment or route integrity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the expected gain comes from
&lt;/h2&gt;

&lt;p&gt;A traditional static build may regenerate thousands of pages after a small change. An incremental system tries to identify pages whose code and data did not change and skip them. Value increases when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the site has many pages;&lt;/li&gt;
&lt;li&gt;most releases change a small content subset;&lt;/li&gt;
&lt;li&gt;data dependencies are stable and traceable;&lt;/li&gt;
&lt;li&gt;build cache survives between CI runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The gain may be small on a site that builds in seconds, a project where one shared dependency invalidates most pages, or CI that deletes its cache every run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test invalidation, not only speed
&lt;/h2&gt;

&lt;p&gt;The most dangerous failure is not a stopped build. It is a successful build that keeps a stale page. Test invalidation explicitly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Change one Markdown entry.&lt;/li&gt;
&lt;li&gt;Change a component shared by every article.&lt;/li&gt;
&lt;li&gt;Change a layout, metadata helper, or schema.&lt;/li&gt;
&lt;li&gt;Delete an entry or rename a slug.&lt;/li&gt;
&lt;li&gt;Change external loader data.&lt;/li&gt;
&lt;li&gt;Change an environment variable that affects output.&lt;/li&gt;
&lt;li&gt;Build with a clean cache and a warm cache.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Compare HTML markers or hashes for pages that should change and those that should remain stable. Inspect sitemap, RSS, canonical, and hreflang output because one article change may also update collection pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disabling sessions should remove only what is unused
&lt;/h2&gt;

&lt;p&gt;Astro 7.2 adds &lt;code&gt;session: false&lt;/code&gt;. A static site without sessions can let an adapter skip its driver and remove unnecessary runtime. Astro also says tree shaking can remove session code when no driver is configured, so do not assume a bundle improvement before measuring it.&lt;/p&gt;

&lt;p&gt;On a site using login, server islands, or adapter state, do not disable sessions just to remove code. Inventory routes, middleware, and integrations that depend on state, then test signed-in, anonymous, and failure behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background preview is useful for automation
&lt;/h2&gt;

&lt;p&gt;The release lets preview run in the background with commands for status, logs, and shutdown. A coding agent or CI process can start a production build, run HTTP and Playwright checks, and continue using the terminal.&lt;/p&gt;

&lt;p&gt;Background mode is not enough by itself. The process needs a known port, PID, and log location, and it must stop even when a test fails. Otherwise the convenience creates orphan processes, occupied ports, and tests against an old build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Astro 5 to 7 is a major migration
&lt;/h2&gt;

&lt;p&gt;I would not jump from 5.16 to 7.2 and fix only the final visible error. A safer path is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read Astro 6 and 7 guides, including Vite, content layer, and adapter changes.&lt;/li&gt;
&lt;li&gt;Record build time, &lt;code&gt;dist&lt;/code&gt; size, page count, and Lighthouse baseline.&lt;/li&gt;
&lt;li&gt;Create an upgrade branch without unrelated content changes.&lt;/li&gt;
&lt;li&gt;Run the upgrade tool, then review configuration and diff manually.&lt;/li&gt;
&lt;li&gt;Run type, unit, build, and generated HTML audits.&lt;/li&gt;
&lt;li&gt;Test routes, RSS, sitemap, 404, and redirects.&lt;/li&gt;
&lt;li&gt;Evaluate incremental builds after the full build is correct.&lt;/li&gt;
&lt;li&gt;Deploy a separate preview and compare it with production before cutover.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a critical adapter or integration is incompatible, stay on the supported current version with a dated plan. Do not weaken an SEO or output audit to force the migration through.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calculate the return
&lt;/h2&gt;

&lt;p&gt;Record a clean full build, a warm no-change build, a one-page change, and a shared-component change. Repeat each case on the same CI environment. Then calculate monthly build minutes and the effect on delivery time and compute cost.&lt;/p&gt;

&lt;p&gt;Reducing a 12-minute build to four minutes matters across dozens of releases. Reducing 35 seconds to 25 seconds may not justify an experimental feature. Performance becomes a business decision when it is connected to release frequency, pipeline failures, and developer waiting time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Effect on the content team
&lt;/h2&gt;

&lt;p&gt;Faster builds can shorten correction and publication time, but correctness comes first. The content team needs the new article in the index, topic page, RSS, and sitemap, not only at its direct route. A date or tag change must invalidate the right collection pages.&lt;/p&gt;

&lt;p&gt;Add output contract tests before enabling the feature. If cache behavior becomes unclear, provide a full-rebuild escape hatch that does not require a code edit.&lt;/p&gt;

&lt;h2&gt;
  
  
  My recommendation
&lt;/h2&gt;

&lt;p&gt;I would evaluate Astro 7.2 in a branch now for a large site or slow pipeline, but I would not enable the experimental feature directly in production. First complete the Astro 5 to 7 migration with full builds. Then build an invalidation matrix and compare outputs. If the saving is not material, wait for the feature to stabilize.&lt;/p&gt;

&lt;p&gt;The best framework version is not always the newest. It is the supported version the team can build, test, deploy, and roll back with confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources and review date
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://astro.build/blog/astro-720/" rel="noopener noreferrer"&gt;Astro 7.2 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.astro.build/en/guides/upgrade-to/v7/" rel="noopener noreferrer"&gt;Astro 7 upgrade guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Astro release status and this repository were reviewed on 22 August 2026.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>astro</category>
      <category>webperf</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>React Native 0.87: Strict TypeScript, AGP 9, and SwiftPM upgrade guide</title>
      <dc:creator>Yasir Najeep</dc:creator>
      <pubDate>Sun, 23 Aug 2026 08:08:32 +0000</pubDate>
      <link>https://dev.to/yasir_najeep/react-native-087-strict-typescript-agp-9-and-swiftpm-upgrade-guide-4hl3</link>
      <guid>https://dev.to/yasir_najeep/react-native-087-strict-typescript-agp-9-and-swiftpm-upgrade-guide-4hl3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fur124r043eczdywu76tc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fur124r043eczdywu76tc.jpg" alt="React Native 0.87 upgrade guide" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React Native 0.87 was released on 11 August 2026. It brings meaningful improvements to Metro, TypeScript, and iOS setup, but also raises tool requirements and removes old APIs. An upgrade is more than changing a version in &lt;code&gt;package.json&lt;/code&gt;, especially for an Arabic app, a native-heavy dependency graph, or an older CI image.&lt;/p&gt;

&lt;p&gt;The Strict TypeScript API is now the default, Metro moves to 0.87, and experimental Swift Package Manager support arrives. Android requirements rise to Node.js 22.13 or newer, Kotlin 2.0 or newer, AGP 9, and compile SDK 37 in the reference setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://reactnative.dev/blog/2026/08/11/react-native-0.87" rel="noopener noreferrer"&gt;Official React Native 0.87 announcement&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Strict TypeScript API matters
&lt;/h2&gt;

&lt;p&gt;React Native's previous types were maintained separately and could drift from source. The strict types are generated from the code and define the public API around root exports. That improves accuracy, but it exposes application or library dependencies on internal paths such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;SomeInternalThing&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-native/Libraries/...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In 0.87, deep imports become type errors and several type names or shapes change. Replacing every error with &lt;code&gt;any&lt;/code&gt; defeats the purpose. Search the application and dependencies for internal imports, move to a public export or maintained package, and verify runtime behavior on a device.&lt;/p&gt;

&lt;p&gt;There is a temporary &lt;code&gt;react-native-legacy-deep-imports&lt;/code&gt; opt-out. The release notes say it remains through 0.88 and that legacy types are intended for removal in the following release. Treat the switch as a dated bridge with an owner, not a permanent fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Android requirements may break CI first
&lt;/h2&gt;

&lt;p&gt;The build may fail before JavaScript runs because the environment changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js 22.13 or newer.&lt;/li&gt;
&lt;li&gt;Kotlin 2.0 or newer, with 2.2 bundled.&lt;/li&gt;
&lt;li&gt;Android Gradle Plugin 9.&lt;/li&gt;
&lt;li&gt;Library &lt;code&gt;minCompileSdk&lt;/code&gt; 34 and project compile SDK 37.&lt;/li&gt;
&lt;li&gt;Related Gradle, Java, and plugin compatibility changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pin Node, JDK, and Android SDK versions in CI instead of relying on &lt;code&gt;latest&lt;/code&gt;. Inspect every native dependency. A compatible application is not enough when an old package uses a removed API or incompatible Gradle configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metro improves while old configuration disappears
&lt;/h2&gt;

&lt;p&gt;Meta reports faster source-map generation, lower source-map memory use, and stable TypeScript and ESM configuration support. Metro no longer supports YAML configuration or JavaScript config files with the &lt;code&gt;.es6&lt;/code&gt; extension.&lt;/p&gt;

&lt;p&gt;Measure cold build, incremental build, and DevTools startup on the same machine. Do not credit Metro for every difference when Node, Gradle, and caches also changed. Keep the timing and logs if CI duration has a direct team cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  SwiftPM is experimental, not an automatic production decision
&lt;/h2&gt;

&lt;p&gt;React Native 0.87 introduces an experimental path to Swift Package Manager as an alternative to CocoaPods. Removing Ruby and repeated &lt;code&gt;pod install&lt;/code&gt; steps is attractive, but the release explicitly keeps CocoaPods as the default supported path.&lt;/p&gt;

&lt;p&gt;Do not migrate a published application only because the feature is new. Some libraries lack &lt;code&gt;Package.swift&lt;/code&gt;, commands and generated structure may change, and CI needs an initialization step. Test SwiftPM on a separate branch or internal app. Inventory every native library, extension, build phase, signing setting, and capability before comparing paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Removed and changed APIs
&lt;/h2&gt;

&lt;p&gt;The release removes &lt;code&gt;InteractionManager&lt;/code&gt; in favor of &lt;code&gt;requestIdleCallback&lt;/code&gt;, old &lt;code&gt;Modal&lt;/code&gt; and &lt;code&gt;StatusBar&lt;/code&gt; properties, some &lt;code&gt;ScrollView&lt;/code&gt; behavior, and tooling packages. &lt;code&gt;useColorScheme&lt;/code&gt; changes its return shape, Jest preset packaging changed, and new deprecations include &lt;code&gt;ImageBackground&lt;/code&gt; and Android APIs.&lt;/p&gt;

&lt;p&gt;Search for every symbol called out in the release notes across your code and dependencies. Resolve each use with a test rather than running a broad codemod and accepting a large diff without review.&lt;/p&gt;

&lt;h2&gt;
  
  
  A controlled upgrade path
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Record baseline iOS and Android builds, tests, bundle size, startup, and crashes.&lt;/li&gt;
&lt;li&gt;Upgrade the toolchain in CI and one reproducible local environment.&lt;/li&gt;
&lt;li&gt;Use Upgrade Helper and review template changes manually.&lt;/li&gt;
&lt;li&gt;Enable Strict API and resolve deep imports before considering the opt-out.&lt;/li&gt;
&lt;li&gt;Upgrade native libraries in small groups.&lt;/li&gt;
&lt;li&gt;Run unit, integration, and E2E tests, then signed release builds.&lt;/li&gt;
&lt;li&gt;Prefer connected physical iPhone and Android devices when available.&lt;/li&gt;
&lt;li&gt;Ship to a test channel before store production.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Do not shorten the RTL matrix
&lt;/h2&gt;

&lt;p&gt;An English pass is not evidence that an Arabic application is ready. Test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cold start in Arabic, then English, and the reverse;&lt;/li&gt;
&lt;li&gt;mixed text such as &lt;code&gt;QAR 1,250&lt;/code&gt;, an order ID, and email;&lt;/li&gt;
&lt;li&gt;back arrows, gestures, drawers, and bottom sheets;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useColorScheme()&lt;/code&gt; because it can now return &lt;code&gt;null&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;large text, VoiceOver, and TalkBack;&lt;/li&gt;
&lt;li&gt;notification, deep link, and permission screens;&lt;/li&gt;
&lt;li&gt;a signed release build rather than Metro development alone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare screenshots before and after in both directions. TypeScript can pass while an icon mirrors incorrectly, a safe area changes, or a navigation dependency fails only on Android.&lt;/p&gt;

&lt;h2&gt;
  
  
  Business impact
&lt;/h2&gt;

&lt;p&gt;The benefit is a clearer API, current tooling, improved Metro, and a possible simpler future iOS setup. The cost is compatibility work across libraries, CI, and devices. A project that relies heavily on internals will pay more now, but it was already carrying hidden risk.&lt;/p&gt;

&lt;p&gt;Do not let a store release deadline be the first encounter with AGP 9 or Strict API. Keep the upgrade separate from a large feature so failures are attributable and rollback remains simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  My recommendation
&lt;/h2&gt;

&lt;p&gt;I would start a dedicated upgrade branch now for an app on a nearby supported version, but I would not promise a one-day migration. Fix deep imports instead of hiding them, pin the toolchain, and keep CocoaPods in production until SwiftPM proves compatible with every dependency. For an Arabic app, the upgrade is incomplete without signed builds and real RTL testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources and review date
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactnative.dev/blog/2026/08/11/react-native-0.87" rel="noopener noreferrer"&gt;React Native 0.87 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactnative.dev/releases/" rel="noopener noreferrer"&gt;React Native releases overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Release status and requirements were reviewed on 22 August 2026.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Originally published on &lt;a href="https://yasirnajeep.com/en/blog/react-native-0-87-upgrade-guide/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=authority_gcc_2026q3&amp;amp;utm_content=react-native-0-87-upgrade-guide_en_article_v1" rel="noopener noreferrer"&gt;Yasir Najeep&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>typescript</category>
      <category>testing</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
