<?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: Putu Adi</title>
    <description>The latest articles on DEV Community by Putu Adi (@disann).</description>
    <link>https://dev.to/disann</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%2F2907836%2F265c2f57-f32e-482b-9b02-3929c42814a5.jpg</url>
      <title>DEV Community: Putu Adi</title>
      <link>https://dev.to/disann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/disann"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Putu Adi</dc:creator>
      <pubDate>Thu, 18 Jun 2026 06:51:24 +0000</pubDate>
      <link>https://dev.to/disann/-3h96</link>
      <guid>https://dev.to/disann/-3h96</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l" class="crayons-story__hidden-navigation-link"&gt;Vibe Coding 101: Notes from a Developer Who Got Tired of Writing Code by Hand&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/disann" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2907836%2F265c2f57-f32e-482b-9b02-3929c42814a5.jpg" alt="disann profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/disann" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Putu Adi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Putu Adi
                
              
              &lt;div id="story-author-preview-content-3929256" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/disann" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2907836%2F265c2f57-f32e-482b-9b02-3929c42814a5.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Putu Adi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l" id="article-link-3929256"&gt;
          Vibe Coding 101: Notes from a Developer Who Got Tired of Writing Code by Hand
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            12 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Vibe Coding 101: Notes from a Developer Who Got Tired of Writing Code by Hand</title>
      <dc:creator>Putu Adi</dc:creator>
      <pubDate>Thu, 18 Jun 2026 05:44:35 +0000</pubDate>
      <link>https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l</link>
      <guid>https://dev.to/disann/vibe-coding-101-catatan-seorang-developer-yang-capek-nulis-kode-manual-1e4l</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;My personal notes and a guide for anyone who wants to start vibe coding properly not just typing prompts and hoping the AI figures it out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is Vibe Coding?&lt;/li&gt;
&lt;li&gt;
1. Choose Your Editor / Environment

&lt;ul&gt;
&lt;li&gt;GUI Editors (IDE-based)&lt;/li&gt;
&lt;li&gt;CLI Agents (Terminal-based)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
2. Pick the Right Model

&lt;ul&gt;
&lt;li&gt;Model Comparison&lt;/li&gt;
&lt;li&gt;How to Choose Practically&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
3. Give the AI "Knowledge" Use a Skills Library

&lt;ul&gt;
&lt;li&gt;Skills Libraries I Use&lt;/li&gt;
&lt;li&gt;How Skills Work&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
4. Set Up Starter Documentation

&lt;ul&gt;
&lt;li&gt;CLAUDE.md vs GEMINI.md vs AGENTS.md Which One?&lt;/li&gt;
&lt;li&gt;Side-by-Side Comparison&lt;/li&gt;
&lt;li&gt;Multi-Tool Strategy: One File for All&lt;/li&gt;
&lt;li&gt;My Project Structure&lt;/li&gt;
&lt;li&gt;What Goes Inside the Config File?&lt;/li&gt;
&lt;li&gt;Scenario 1: Starting from Scratch&lt;/li&gt;
&lt;li&gt;Scenario 2: Existing Codebase&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;My Daily Vibe Coding Workflow&lt;/li&gt;
&lt;li&gt;Pre-flight Checklist&lt;/li&gt;
&lt;li&gt;Closing Thoughts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What is Vibe Coding?
&lt;/h2&gt;

&lt;p&gt;The term &lt;em&gt;vibe coding&lt;/em&gt; was coined by Andrej Karpathy in early 2025. The idea is simple: you describe your &lt;strong&gt;intent&lt;/strong&gt; and the outcome you want not a detailed technical spec and the AI writes the code.&lt;/p&gt;

&lt;p&gt;What changed in 2026: this is no longer an experiment. Vibe coding has become a recognized development methodology, and the tooling is mature enough to use on real production projects.&lt;/p&gt;

&lt;p&gt;But there's one thing that frustrates most beginners: &lt;strong&gt;AI works from context&lt;/strong&gt;. Give it the wrong context and the output will miss or worse, look correct but actually be wrong.&lt;/p&gt;

&lt;p&gt;This guide is about how to properly "brief" your AI before you start building together.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Choose Your Editor / Environment
&lt;/h2&gt;

&lt;p&gt;First question: do you want a &lt;strong&gt;GUI editor&lt;/strong&gt; or a &lt;strong&gt;CLI agent&lt;/strong&gt;?&lt;/p&gt;

&lt;h3&gt;
  
  
  GUI Editors (IDE-based)
&lt;/h3&gt;

&lt;p&gt;Best if you prefer visual feedback, editing directly in the editor, and strong codebase awareness.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Editor&lt;/th&gt;
&lt;th&gt;Character&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI-native, built on VS Code. Best for single-session work and codebase context.&lt;/td&gt;
&lt;td&gt;Developers who want a fast, familiar AI copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Windsurf&lt;/strong&gt; &lt;em&gt;(now Devin Desktop)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Agentic, proactive the AI acts without being asked. Cascade agent for multi-file edits.&lt;/td&gt;
&lt;td&gt;Teams that want AI to take initiative&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Antigravity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-agent: run up to 5 agents in parallel inside one editor. Early-adopter energy.&lt;/td&gt;
&lt;td&gt;Parallel task experiments, power users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VS Code + Copilot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Familiar, massive ecosystem, but the AI feels "bolted on".&lt;/td&gt;
&lt;td&gt;Developers who don't want to switch editors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note (June 18, 2026):&lt;/strong&gt; Windsurf officially rebranded to &lt;em&gt;Devin Desktop&lt;/em&gt; under Cognition on June 2, 2026. Cursor remains the most stable choice for teams; Antigravity is the most interesting for multi-agent workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI Agents (Terminal-based)
&lt;/h3&gt;

&lt;p&gt;Best if you prefer the terminal, want full control, or need tight git workflow integration.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Default Model&lt;/th&gt;
&lt;th&gt;Character&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Claude Opus/Sonnet&lt;/td&gt;
&lt;td&gt;Terminal-first, agentic, supports subagents. Bundled with Claude Pro ($17/mo).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemini CLI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gemini 3.1&lt;/td&gt;
&lt;td&gt;Free to start, Google integration. Great if you're already in the Google ecosystem.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenAI Codex CLI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GPT-5.x&lt;/td&gt;
&lt;td&gt;Latest from OpenAI, paired with the ChatGPT app. Windows desktop client available May 2026.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Personal tip:&lt;/strong&gt; If you use Claude Code, just run &lt;code&gt;claude&lt;/code&gt; in your project root. The difference is immediately noticeable the agent reads context from your entire codebase, not just the active file.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Pick the Right Model
&lt;/h2&gt;

&lt;p&gt;As of this writing (June 18, 2026), here's the most relevant model landscape for vibe coding:&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Comparison
&lt;/h3&gt;

&lt;p&gt;All SWE-bench Verified scores below are &lt;em&gt;self-reported&lt;/em&gt; by each vendor. Note that SWE-bench Verified is known to contain training data contamination; for a more rigorous comparison use SWE-bench Pro from Scale AI.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Coding Score (SWE-bench Verified)&lt;/th&gt;
&lt;th&gt;Price (per 1M tokens)&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Opus 4.8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;88.6% ¹&lt;/td&gt;
&lt;td&gt;$5 / $25 ²&lt;/td&gt;
&lt;td&gt;Primary coding agent, long-running tasks, large codebases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Sonnet 4.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~85%&lt;/td&gt;
&lt;td&gt;$3 / $15 ³&lt;/td&gt;
&lt;td&gt;Best daily driver. 98% of Opus quality at 60% less cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GPT-5.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;74.9% ⁴&lt;/td&gt;
&lt;td&gt;$2.50 / $15&lt;/td&gt;
&lt;td&gt;All-rounder, largest ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;80.6% ⁵&lt;/td&gt;
&lt;td&gt;$2 / $12 ⁶&lt;/td&gt;
&lt;td&gt;Long context (1M tokens) ⁷, data-heavy apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek V4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Competitive&lt;/td&gt;
&lt;td&gt;$0.14 / $0.28 ⁸&lt;/td&gt;
&lt;td&gt;Budget option, self-hostable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Haiku 4.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~70%&lt;/td&gt;
&lt;td&gt;$1 / $5 ³&lt;/td&gt;
&lt;td&gt;Quick edits, subagent tasks, high-volume work&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Source Notes — Model Table
&lt;/h4&gt;

&lt;p&gt;¹ &lt;strong&gt;Claude Opus 4.8 — 88.6% SWE-bench Verified:&lt;/strong&gt; Vendor-reported score from Anthropic. Confirmed by llm-stats.com leaderboard (updated June 2026) and Vellum blog "Claude Opus 4.8 Benchmarks Explained." Sources: &lt;a href="https://llm-stats.com/benchmarks/swe-bench-verified" rel="noopener noreferrer"&gt;llm-stats.com/benchmarks/swe-bench-verified&lt;/a&gt; · &lt;a href="https://www.vellum.ai/blog/claude-opus-4-8-benchmarks-explained" rel="noopener noreferrer"&gt;vellum.ai/blog/claude-opus-4-8-benchmarks-explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;² &lt;strong&gt;Claude Opus 4.8 price — $5/$25 per 1M tokens:&lt;/strong&gt; Cited from Anthropic and confirmed by multiple sources including Vellum and magicshot.ai. Price unchanged from Opus 4.7. Sources: &lt;a href="https://www.anthropic.com" rel="noopener noreferrer"&gt;anthropic.com&lt;/a&gt; · &lt;a href="https://magicshot.ai/news/claude-opus-4-8-release-features-benchmarks/" rel="noopener noreferrer"&gt;magicshot.ai/news/claude-opus-4-8-release-features-benchmarks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;³ &lt;strong&gt;Claude Sonnet 4.6 and Haiku 4.5 pricing:&lt;/strong&gt; Based on Anthropic's official pricing page. Current verification recommended at &lt;a href="https://www.anthropic.com/pricing" rel="noopener noreferrer"&gt;anthropic.com/pricing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⁴ &lt;strong&gt;GPT-5.4 (GPT-5) — 74.9% SWE-bench Verified:&lt;/strong&gt; This figure was originally reported for GPT-5 (base) at launch in August 2025, not GPT-5.4 specifically. Per OpenAI's developer blog: "GPT‑5 scores 74.9% on SWE-bench Verified." Sources: &lt;a href="https://openai.com/index/introducing-gpt-5-for-developers/" rel="noopener noreferrer"&gt;openai.com/index/introducing-gpt-5-for-developers&lt;/a&gt; · &lt;a href="https://runbear.io/posts/gpt-5-explained" rel="noopener noreferrer"&gt;runbear.io/posts/gpt-5-explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⁵ &lt;strong&gt;Gemini 3.1 Pro — 80.6% SWE-bench Verified:&lt;/strong&gt; Vendor-reported score from Google, reported at launch on February 19, 2026. Source: &lt;a href="https://www.nxcode.io/resources/news/gemini-3-1-pro-complete-guide-benchmarks-pricing-api-2026" rel="noopener noreferrer"&gt;nxcode.io/resources/news/gemini-3-1-pro-complete-guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⁶ &lt;strong&gt;Gemini 3.1 Pro price — $2/$12 per 1M tokens:&lt;/strong&gt; Official Google pricing, confirmed by OpenRouter, artificialanalysis.ai, and several independent price trackers. Sources: &lt;a href="https://openrouter.ai/google/gemini-3.1-pro-preview" rel="noopener noreferrer"&gt;openrouter.ai/google/gemini-3.1-pro-preview&lt;/a&gt; · &lt;a href="https://artificialanalysis.ai/models/gemini-3-1-pro-preview" rel="noopener noreferrer"&gt;artificialanalysis.ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⁷ &lt;strong&gt;Gemini 3.1 Pro — 1 million token context window:&lt;/strong&gt; Confirmed in official Google documentation and OpenRouter. Source: &lt;a href="https://openrouter.ai/google/gemini-3.1-pro-preview" rel="noopener noreferrer"&gt;openrouter.ai/google/gemini-3.1-pro-preview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⁸ &lt;strong&gt;DeepSeek V4 — $0.14/$0.28 per 1M tokens:&lt;/strong&gt; Pricing for the V4-Flash variant (non-thinking, cache miss). DeepSeek V4 Pro has different pricing ($1.74/$3.48 list price, or $0.435/$0.87 after promotional discount). Sources: &lt;a href="https://techjacksolutions.com/ai-tools/deepseek/deepseek-pricing/" rel="noopener noreferrer"&gt;techjacksolutions.com/ai-tools/deepseek/deepseek-pricing&lt;/a&gt; · &lt;a href="https://costgoat.com/pricing/deepseek-api" rel="noopener noreferrer"&gt;costgoat.com/pricing/deepseek-api&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  How to Choose Practically
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New project, small-to-medium codebase?
→ Claude Sonnet 4.6 (best price-to-performance sweet spot)

Large codebase, complex agentic tasks?
→ Claude Opus 4.8

Already in the OpenAI ecosystem / using Cursor?
→ GPT-5.4

Lots of data, very long context needed?
→ Gemini 3.1 Pro

Tight budget, repetitive tasks?
→ DeepSeek V4 or Haiku 4.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Don't default to the most powerful model for everything. Routing tasks to the right model tier can cut your AI bill by 2–5x without any quality loss. Quick edits and simple tasks? Haiku is more than enough.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Give the AI "Knowledge" Use a Skills Library
&lt;/h2&gt;

&lt;p&gt;This is the part most people skip.&lt;/p&gt;

&lt;p&gt;AI coding agents work entirely from context. Every session starts fresh there's no memory from the previous one. A skills library is how you give the agent &lt;strong&gt;reactivatable knowledge&lt;/strong&gt; whenever it needs it.&lt;/p&gt;

&lt;p&gt;Think of it this way: if the AI is a new developer joining your team, Skills are the onboarding docs they read before their first day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skills Libraries I Use
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Superpowers (&lt;code&gt;skills.sh/obra/superpowers&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is a game-changer. Superpowers isn't just a collection of skills it's a &lt;strong&gt;software development methodology&lt;/strong&gt; that runs on top of your agent.&lt;/p&gt;

&lt;p&gt;The workflow Superpowers enforces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Brainstorm → Design → Plan → Implement (TDD) → Review → Merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why does this matter? Without this structure, the AI will start writing code before you've even agreed on what you're building. Superpowers forces the agent to &lt;strong&gt;ask first, code second&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Install in Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install &lt;/span&gt;superpowers@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hard gate before coding:&lt;/strong&gt; The agent won't write a single line until you've approved the design&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TDD enforcement:&lt;/strong&gt; Always write a failing test first, then implement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subagent-driven:&lt;/strong&gt; Dispatches parallel subagents for execution with a two-stage review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git worktree workflow:&lt;/strong&gt; Every task runs on its own branch no clobbering each other&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;github.com/obra/superpowers&lt;/a&gt; — &lt;strong&gt;232K+ GitHub stars&lt;/strong&gt; as of June 2026 ⁹&lt;/p&gt;

&lt;h4&gt;
  
  
  Source Notes — Superpowers
&lt;/h4&gt;

&lt;p&gt;⁹ &lt;strong&gt;Superpowers — GitHub star count:&lt;/strong&gt; The original article cited "190K+". More recent data from multiple sources shows a higher figure: claudepluginhub.com recorded &lt;strong&gt;230,789 stars&lt;/strong&gt; (last updated Jun 17, 2026), while the GitHub repository directly shows &lt;strong&gt;232K stars&lt;/strong&gt;. The number changes over time; the original article likely used a snapshot from an earlier writing date. Sources: &lt;a href="https://www.claudepluginhub.com/plugins/obra-superpowers-2" rel="noopener noreferrer"&gt;claudepluginhub.com/plugins/obra-superpowers-2&lt;/a&gt; · &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;github.com/obra/superpowers&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Anthropic Official Skills (&lt;code&gt;skills.sh/anthropics/skills&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The official Anthropic skill library for Claude Code. Includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;frontend-design&lt;/code&gt; design system, tokens, typography&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docx&lt;/code&gt;, &lt;code&gt;pdf&lt;/code&gt;, &lt;code&gt;pptx&lt;/code&gt; create and edit documents&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;file-reading&lt;/code&gt;, &lt;code&gt;pdf-reading&lt;/code&gt; read various file formats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Figma / Design Skills&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you work from Figma designs to code, these skills give Claude context about your design tokens, component names, and naming conventions from your Figma project.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Skills Work
&lt;/h3&gt;

&lt;p&gt;Skills are structured &lt;code&gt;.md&lt;/code&gt; files containing explicit instructions. The agent reads them when needed and follows them as a process not just a prompt, but an &lt;strong&gt;activatable workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Without skills, this is what typically happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You:   "Build a login feature"
Agent: [Immediately writes 300 lines of code]
       → Auth stack turns out to be wrong
       → Pattern doesn't match the codebase
       → 2 hours of revision wasted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With skills loaded, the same request looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You:   "Build a login feature"
Agent: "Before we start, I have a few things to clarify:
        1. Are users logging in with email/password or OAuth?
        2. Is there an existing auth setup I should extend?
        3. Should this redirect somewhere specific after login?"
       [Presents design options]
       "Please review this before I begin implementation."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Set Up Starter Documentation
&lt;/h2&gt;

&lt;p&gt;Before starting a vibe coding session, the single most impactful thing you can do is create &lt;strong&gt;initial project documentation&lt;/strong&gt; the agent can read at the start of every session.&lt;/p&gt;

&lt;p&gt;Every AI coding tool has its own "magic file" that's loaded automatically when a new agent session begins this is how you provide context without re-typing it every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLAUDE.md vs GEMINI.md vs AGENTS.md Which One?
&lt;/h3&gt;

&lt;p&gt;This is the most common question, especially if you use more than one tool. Every tool has a different filename, but the purpose is identical: give the agent context before it starts working.&lt;/p&gt;

&lt;h3&gt;
  
  
  Side-by-Side Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;CLAUDE.md&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;GEMINI.md&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;AGENTS.md&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;.cursorrules&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Read by&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Gemini CLI&lt;/td&gt;
&lt;td&gt;Codex CLI, Cursor, Gemini CLI, Windsurf, Copilot, 60K+ tools&lt;/td&gt;
&lt;td&gt;Cursor (legacy)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File location&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Project root or &lt;code&gt;.claude/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Project root or &lt;code&gt;~/.gemini/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Project root, subdirectories, &lt;code&gt;~/.codex/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Project root&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hierarchy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Nested folder support&lt;/td&gt;
&lt;td&gt;Reads up &amp;amp; down the folder tree&lt;/td&gt;
&lt;td&gt;Walks from root to working dir&lt;/td&gt;
&lt;td&gt;Single file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Open standard?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Anthropic-only&lt;/td&gt;
&lt;td&gt;Google-only&lt;/td&gt;
&lt;td&gt;✅ Yes — Linux Foundation (AAIF)&lt;/td&gt;
&lt;td&gt;Cursor-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code reads it?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Native&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Via symlink / &lt;code&gt;@AGENTS.md&lt;/code&gt; import&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exclusive features&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hooks, tool permissions, Skills integration&lt;/td&gt;
&lt;td&gt;Plan Mode, Google Search grounding&lt;/td&gt;
&lt;td&gt;AGENTS.override.md for local overrides&lt;/td&gt;
&lt;td&gt;Glob-based rule scoping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams fully on Claude Code&lt;/td&gt;
&lt;td&gt;Teams using Gemini CLI&lt;/td&gt;
&lt;td&gt;Multi-tool / mixed teams&lt;/td&gt;
&lt;td&gt;Solo Cursor users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Multi-Tool Strategy: One File for All
&lt;/h3&gt;

&lt;p&gt;If you or your team uses more than one tool (e.g. Claude Code for heavy lifting, Gemini CLI for quick exploration), there are two popular approaches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: AGENTS.md as source of truth + symlinks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Write one file, symlink the rest. Update one file and all tools stay in sync no drift.&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;touch &lt;/span&gt;AGENTS.md

&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; AGENTS.md CLAUDE.md
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; AGENTS.md GEMINI.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code does &lt;em&gt;not&lt;/em&gt; read &lt;code&gt;AGENTS.md&lt;/code&gt; natively, so the symlink is necessary or you can manually import it inside &lt;code&gt;CLAUDE.md&lt;/code&gt; using the &lt;code&gt;@AGENTS.md&lt;/code&gt; syntax.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: AGENTS.md for universal rules + per-tool files for specific behavior&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;project/&lt;/span&gt;
&lt;span class="s"&gt;├── AGENTS.md&lt;/span&gt;     &lt;span class="c1"&gt;# Universal: tech stack, conventions, rules&lt;/span&gt;
&lt;span class="s"&gt;├── CLAUDE.md&lt;/span&gt;     &lt;span class="c1"&gt;# Claude-specific: hooks, tool permissions, skills&lt;/span&gt;
&lt;span class="s"&gt;└── GEMINI.md&lt;/span&gt;     &lt;span class="c1"&gt;# Gemini-specific: scope control instructions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works well when you need different instructions per tool. Gemini, for instance, tends to modify files outside the task's scope unless explicitly told not to Claude doesn't have that habit.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Project Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;project/&lt;/span&gt;
&lt;span class="s"&gt;├── AGENTS.md&lt;/span&gt;                &lt;span class="c1"&gt;# Source of truth read by all tools&lt;/span&gt;
&lt;span class="s"&gt;├── CLAUDE.md -&amp;gt; AGENTS.md&lt;/span&gt;   &lt;span class="c1"&gt;# Symlink to AGENTS.md&lt;/span&gt;
&lt;span class="s"&gt;├── GEMINI.md&lt;/span&gt;                &lt;span class="c1"&gt;# Gemini-specific tweaks&lt;/span&gt;
&lt;span class="s"&gt;├── .claude/&lt;/span&gt;
&lt;span class="s"&gt;│   └── settings.json&lt;/span&gt;        &lt;span class="c1"&gt;# Claude Code config (permissions, model)&lt;/span&gt;
&lt;span class="s"&gt;├── .codex/&lt;/span&gt;
&lt;span class="s"&gt;│   └── config.toml&lt;/span&gt;          &lt;span class="c1"&gt;# Codex CLI config&lt;/span&gt;
&lt;span class="s"&gt;└── docs/&lt;/span&gt;
    &lt;span class="s"&gt;├── architecture.md&lt;/span&gt;
    &lt;span class="s"&gt;├── business-logic.md&lt;/span&gt;
    &lt;span class="s"&gt;└── tech-stack.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Goes Inside the Config File?
&lt;/h3&gt;

&lt;p&gt;This template works for &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, or &lt;code&gt;GEMINI.md&lt;/code&gt; same structure, different filename.&lt;/p&gt;

&lt;p&gt;A good config file is &lt;strong&gt;50–200 lines&lt;/strong&gt;. Beyond that, models start ignoring parts they deem irrelevant. Only write what the AI can't infer from the code itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Project: [Project Name]&lt;/span&gt;

&lt;span class="gu"&gt;## Context&lt;/span&gt;
[One paragraph: what this app does, who it's for, what problem it solves]

&lt;span class="gu"&gt;## Tech Stack&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Framework: Next.js 15 (App Router)
&lt;span class="p"&gt;-&lt;/span&gt; Database: PostgreSQL + Prisma
&lt;span class="p"&gt;-&lt;/span&gt; Auth: Clerk
&lt;span class="p"&gt;-&lt;/span&gt; Styling: Tailwind CSS v4

&lt;span class="gu"&gt;## Folder Structure&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Components: &lt;span class="sb"&gt;`/components`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Hooks: &lt;span class="sb"&gt;`/hooks`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; API routes: &lt;span class="sb"&gt;`/app/api`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Types: &lt;span class="sb"&gt;`/types`&lt;/span&gt;

&lt;span class="gu"&gt;## Coding Rules&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Always use TypeScript strict mode
&lt;span class="p"&gt;-&lt;/span&gt; Never use &lt;span class="sb"&gt;`any`&lt;/span&gt; use proper types
&lt;span class="p"&gt;-&lt;/span&gt; Naming: camelCase for functions, PascalCase for components

&lt;span class="gu"&gt;## Critical Business Rules&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [Rules the AI must never violate]
&lt;span class="p"&gt;-&lt;/span&gt; [Example: prices are always in the smallest unit (cents), never decimals]

&lt;span class="gu"&gt;## Do NOT Do&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Don't change the database schema without discussing first
&lt;span class="p"&gt;-&lt;/span&gt; Don't install new libraries without confirmation
&lt;span class="p"&gt;-&lt;/span&gt; Don't modify files outside the scope of the requested task

&lt;span class="gu"&gt;## Key Commands&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Dev: &lt;span class="sb"&gt;`npm run dev`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Test: &lt;span class="sb"&gt;`npm run test`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Build: &lt;span class="sb"&gt;`npm run build`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Lint: &lt;span class="sb"&gt;`npm run lint`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Gemini CLI, add this section to &lt;code&gt;GEMINI.md&lt;/code&gt; to prevent scope expansion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Gemini-Specific Instructions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Do not modify files unrelated to the current task
&lt;span class="p"&gt;-&lt;/span&gt; Always confirm before creating new files outside the existing structure
&lt;span class="p"&gt;-&lt;/span&gt; If unsure about scope, ask never assume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scenario 1: Starting from Scratch ✨
&lt;/h3&gt;

&lt;p&gt;This is the ideal situation. You can set everything up correctly from the beginning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generate initial config file&lt;/strong&gt; ask Claude to help create one based on your project brief&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install Superpowers&lt;/strong&gt; before writing the first line of code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define your folder structure&lt;/strong&gt; so the AI knows where things belong&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run a brainstorming session&lt;/strong&gt; with the agent before starting any feature
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="s2"&gt;"I want to start a new project: [description].
Please help me create a comprehensive AGENTS.md
and suggest an appropriate folder structure."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Starting fresh means you &lt;strong&gt;establish conventions from day one&lt;/strong&gt;. The AI follows the patterns you set, rather than guessing from existing code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 2: Existing Codebase 🏗️
&lt;/h3&gt;

&lt;p&gt;This is more challenging. Before vibe coding in an existing codebase, two things need to be understood first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a. Understand the existing structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before giving the AI access, be able to answer: what is the folder structure and why? How does a request flow from entry to response? What libraries or patterns are already locked in? Which parts are fragile?&lt;/p&gt;

&lt;p&gt;A quick shortcut ask Claude to reverse-engineer the documentation:&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="s2"&gt;"Read through this entire codebase and create:
1. An architecture summary in markdown
2. A list of business rules you can infer from the code
3. Potential gotchas I should know before making modifications"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;b. Document the business flows already running&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the most commonly skipped step. Asking the AI to modify an existing feature without business context is how things break in production. Before touching anything, write down the happy path, existing edge cases, and inter-feature dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Business Flow: Checkout Process&lt;/span&gt;

&lt;span class="gu"&gt;## Happy Path&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; User adds item to cart
&lt;span class="p"&gt;2.&lt;/span&gt; User clicks checkout → validate stock (realtime from inventory service)
&lt;span class="p"&gt;3.&lt;/span&gt; Select payment → payment gateway
&lt;span class="p"&gt;4.&lt;/span&gt; Success → send confirmation email + update stock
&lt;span class="p"&gt;5.&lt;/span&gt; Webhook updates order status

&lt;span class="gu"&gt;## Existing Edge Cases&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Out of stock at step 3: rollback cart, notify user
&lt;span class="p"&gt;-&lt;/span&gt; Webhook timeout: retry 3x with exponential backoff
&lt;span class="p"&gt;-&lt;/span&gt; Duplicate order: idempotency key in payment service

&lt;span class="gu"&gt;## DO NOT change without discussion:&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Payment flow (compliance issue)
&lt;span class="p"&gt;-&lt;/span&gt; Stock calculation logic (finance depends on this)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  My Daily Vibe Coding Workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Open Claude Code at project root
   ↓
2. Agent reads AGENTS.md/CLAUDE.md automatically (context loaded)
   ↓
3. Describe intent: "I want to add feature X for Y"
   ↓
4. Superpowers activates → Brainstorming session
   (Agent asks for clarification, proposes approach)
   ↓
5. Approve design → Agent creates implementation plan
   ↓
6. Execute: Agent creates worktree, writes failing tests first
   ↓
7. Implement → Review → Merge
   ↓
8. Commit with a descriptive message
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pre-flight Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Config file exists (&lt;code&gt;AGENTS.md&lt;/code&gt; / &lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;GEMINI.md&lt;/code&gt;) with tech stack + business rules&lt;/li&gt;
&lt;li&gt;[ ] If using multiple tools: symlinks are in place, no files have drifted&lt;/li&gt;
&lt;li&gt;[ ] Superpowers is installed on the agent&lt;/li&gt;
&lt;li&gt;[ ] You can explain the main business flow to the AI (not just "build feature X")&lt;/li&gt;
&lt;li&gt;[ ] There's a clear definition of done for the task at hand&lt;/li&gt;
&lt;li&gt;[ ] For existing projects: basic architecture documentation exists&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Effective vibe coding isn't about writing "magic" prompts. It's about &lt;strong&gt;building a system&lt;/strong&gt; where the AI always has enough context to work correctly.&lt;/p&gt;

&lt;p&gt;Skills library = reactivatable knowledge. Starter docs = persistent memory. Clear workflow = guardrails so the AI doesn't jump straight to implementation before the problem is understood.&lt;/p&gt;

&lt;p&gt;With the right setup, one developer doing vibe coding can ship faster than a team of three using AI ad-hoc.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quantitative Data Source Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Claim&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 4.8 SWE-bench Verified&lt;/td&gt;
&lt;td&gt;88.6%&lt;/td&gt;
&lt;td&gt;Anthropic (vendor-reported); llm-stats.com; Vellum blog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 4.8 price&lt;/td&gt;
&lt;td&gt;$5/$25 per 1M tokens&lt;/td&gt;
&lt;td&gt;Anthropic; magicshot.ai&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5 (5.4) SWE-bench Verified&lt;/td&gt;
&lt;td&gt;74.9%&lt;/td&gt;
&lt;td&gt;OpenAI developer blog (this figure is for GPT-5 base, not 5.4 specifically)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro SWE-bench Verified&lt;/td&gt;
&lt;td&gt;80.6%&lt;/td&gt;
&lt;td&gt;Google (vendor-reported); nxcode.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro price&lt;/td&gt;
&lt;td&gt;$2/$12 per 1M tokens&lt;/td&gt;
&lt;td&gt;OpenRouter; artificialanalysis.ai&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro context window&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;td&gt;Google; OpenRouter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4-Flash price&lt;/td&gt;
&lt;td&gt;$0.14/$0.28 per 1M tokens&lt;/td&gt;
&lt;td&gt;DeepSeek API docs; techjacksolutions.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Superpowers GitHub stars&lt;/td&gt;
&lt;td&gt;232K+ (as of June 2026)&lt;/td&gt;
&lt;td&gt;GitHub; claudepluginhub.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;General note:&lt;/strong&gt; All SWE-bench Verified scores are &lt;em&gt;self-reported&lt;/em&gt; by vendors and carry a risk of training data contamination. For a more rigorous evaluation, see SWE-bench Pro from Scale AI (&lt;a href="https://www.morphllm.com/swe-bench-pro" rel="noopener noreferrer"&gt;morphllm.com/swe-bench-pro&lt;/a&gt;). API pricing is subject to change; always verify on each provider's official pricing page.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written June 18, 2026. Model references will keep changing — check &lt;a href="https://skills.sh" rel="noopener noreferrer"&gt;skills.sh&lt;/a&gt; for the latest skills and each model provider's official docs for current pricing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Website Optimization Strategy: SEO &amp; Core Web Vitals (2026)</title>
      <dc:creator>Putu Adi</dc:creator>
      <pubDate>Tue, 12 May 2026 06:08:07 +0000</pubDate>
      <link>https://dev.to/disann/seo-website-perfomance-48lg</link>
      <guid>https://dev.to/disann/seo-website-perfomance-48lg</guid>
      <description>&lt;h1&gt;
  
  
  Website Optimization Strategy: SEO &amp;amp; Core Web Vitals (2026)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;A practical guide for developers who want faster, higher-ranking, and more reliable websites.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Improving website traffic isn't just about publishing more content. Your site also needs to be fast, structurally sound, and optimized for how modern search engines evaluate quality.&lt;/p&gt;

&lt;p&gt;Modern website optimization rests on three pillars:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Technical Performance&lt;/strong&gt; — Core Web Vitals, loading speed, rendering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO &amp;amp; Content Structure&lt;/strong&gt; — Crawlability, metadata, structured data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Experience (UX)&lt;/strong&gt; — Stability, accessibility, navigation&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Core Web Vitals
&lt;/h2&gt;

&lt;p&gt;Google uses Core Web Vitals as ranking signals. As of 2026, the three active metrics are &lt;strong&gt;LCP&lt;/strong&gt;, &lt;strong&gt;INP&lt;/strong&gt;, and &lt;strong&gt;CLS&lt;/strong&gt;. INP officially replaced FID (First Input Delay) in March 2024.&lt;/p&gt;




&lt;h3&gt;
  
  
  Largest Contentful Paint (LCP)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it measures:&lt;/strong&gt; How quickly the largest visible element renders on screen (typically a hero image or headline).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Target:&lt;/strong&gt; ≤ 2.5 seconds&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimization strategies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use modern image formats: &lt;code&gt;WebP&lt;/code&gt; or &lt;code&gt;AVIF&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;fetchpriority="high"&lt;/code&gt; to your hero/above-the-fold image&lt;/li&gt;
&lt;li&gt;Use a CDN to reduce TTFB&lt;/li&gt;
&lt;li&gt;Avoid render-blocking resources (CSS, fonts) that delay the critical path
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Good: Prioritize the hero image --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt;
  &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/hero.avif"&lt;/span&gt;
  &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"high"&lt;/span&gt;
  &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"1200"&lt;/span&gt;
  &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"700"&lt;/span&gt;
  &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Hero Banner"&lt;/span&gt;
  &lt;span class="na"&gt;decoding=&lt;/span&gt;&lt;span class="s"&gt;"async"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;fetchpriority&lt;/code&gt; is now well-supported across all major browsers. Always combine it with explicit &lt;code&gt;width&lt;/code&gt;/&lt;code&gt;height&lt;/code&gt; to prevent layout shift.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Interaction to Next Paint (INP)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it measures:&lt;/strong&gt; The worst-case interaction latency across the full page session — clicks, taps, and keyboard inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Target:&lt;/strong&gt; ≤ 200ms (Good), 200–500ms (Needs improvement), &amp;gt; 500ms (Poor)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters more than FID:&lt;/strong&gt; FID only measured the first interaction. INP tracks every interaction throughout the session, making it a far more accurate reflection of perceived responsiveness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimization strategies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break up Long Tasks (&amp;gt; 50ms) on the main thread using &lt;code&gt;scheduler.yield()&lt;/code&gt; (available in Chrome 115+) or &lt;code&gt;setTimeout&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Defer non-critical JS with dynamic imports&lt;/li&gt;
&lt;li&gt;Use web workers for CPU-heavy logic&lt;/li&gt;
&lt;li&gt;Avoid forced synchronous layouts (reading layout properties after DOM mutations)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Defer non-critical module&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;renderChart&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./chart.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Yield to browser between tasks (modern approach)&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;processItems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;processItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;scheduler&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;yield&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Prevents long tasks&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Fallback for older browsers&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;yieldToMain&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Cumulative Layout Shift (CLS)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it measures:&lt;/strong&gt; Visual stability — how much content unexpectedly moves during loading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Target:&lt;/strong&gt; ≤ 0.1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images and iframes without explicit dimensions&lt;/li&gt;
&lt;li&gt;Dynamically injected content (ads, banners, cookie notices)&lt;/li&gt;
&lt;li&gt;Web fonts causing FOUT (Flash of Unstyled Text)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Optimization strategies:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Always define dimensions to reserve layout space --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt;
  &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/banner.webp"&lt;/span&gt;
  &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"1200"&lt;/span&gt;
  &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"600"&lt;/span&gt;
  &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Banner"&lt;/span&gt;
  &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Reserve space for aspect-ratio-based embeds --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"aspect-ratio: 16/9; width: 100%;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;iframe&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"..."&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"100%"&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"100%"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For ads and dynamic banners, use &lt;code&gt;min-height&lt;/code&gt; to pre-reserve space even when content hasn't loaded.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Technical SEO
&lt;/h2&gt;




&lt;h3&gt;
  
  
  Semantic HTML
&lt;/h3&gt;

&lt;p&gt;Search engines use HTML structure to understand page hierarchy and content relationships. Semantic tags carry meaning that &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; doesn't.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Use:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;section&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;aside&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;footer&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ &lt;strong&gt;Avoid:&lt;/strong&gt; Nesting everything in generic &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; containers without landmark roles.&lt;/p&gt;

&lt;p&gt;As a rule: if you're using a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; for layout that has a semantic equivalent, use the semantic tag.&lt;/p&gt;




&lt;h3&gt;
  
  
  Rendering Strategy
&lt;/h3&gt;

&lt;p&gt;JavaScript-heavy SPAs are still problematic for SEO if content isn't available in the initial HTML response. Use server-side or static rendering for any content that needs to be indexed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;th&gt;SEO Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;SSG&lt;/strong&gt; (Static Site Generation)&lt;/td&gt;
&lt;td&gt;Blogs, docs, marketing pages&lt;/td&gt;
&lt;td&gt;Excellent — instant HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;SSR&lt;/strong&gt; (Server-Side Rendering)&lt;/td&gt;
&lt;td&gt;Dynamic content, personalization&lt;/td&gt;
&lt;td&gt;Good — HTML available on first load&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;ISR&lt;/strong&gt; (Incremental Static Regeneration)&lt;/td&gt;
&lt;td&gt;Frequently updated pages&lt;/td&gt;
&lt;td&gt;Good — stale-while-revalidate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;CSR&lt;/strong&gt; (Client-Side Rendering)&lt;/td&gt;
&lt;td&gt;Authenticated dashboards&lt;/td&gt;
&lt;td&gt;Poor — bots may not execute JS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Recommended frameworks:&lt;/strong&gt; Next.js, Nuxt.js, Astro, SvelteKit, Remix&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Astro is worth evaluating for content-heavy sites — it ships zero JS by default and has excellent Core Web Vitals out of the box.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Metadata &amp;amp; Open Graph
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Core SEO --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Page Title | Site Name&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Concise, accurate description under 160 characters."&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"canonical"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/page"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Open Graph (social sharing) --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:title"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Page Title"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Description for social cards."&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:image"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/og-image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:url"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/page"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Twitter/X Card --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:card"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"summary_large_image"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:title"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Page Title"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:image"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/og-image.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  JSON-LD Structured Data
&lt;/h3&gt;

&lt;p&gt;Structured data enables rich results in Google Search (FAQ dropdowns, star ratings, product cards, breadcrumbs). Use JSON-LD — it's the preferred format and doesn't pollute your HTML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Article&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;headline&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Website Optimization Strategy 2026&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;datePublished&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2026-01-01&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dateModified&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2026-06-01&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Person&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your Name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/about&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;publisher&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Site Name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;logo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ImageObject&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/logo.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/article-cover.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validate your markup with &lt;a href="https://search.google.com/test/rich-results" rel="noopener noreferrer"&gt;Google's Rich Results Test&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Sitemap &amp;amp; robots.txt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/

Sitemap: https://example.com/sitemap.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For sitemaps, submit via &lt;strong&gt;Google Search Console&lt;/strong&gt; and keep &lt;code&gt;lastmod&lt;/code&gt; dates accurate — inflated dates signal low-quality updates.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Advanced Performance
&lt;/h2&gt;




&lt;h3&gt;
  
  
  Image Optimization
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt; with format fallbacks and &lt;code&gt;srcset&lt;/code&gt; for responsive delivery:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;picture&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"/hero.avif"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"image/avif"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"/hero.webp"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"image/webp"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt;
    &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/hero.jpg"&lt;/span&gt;
    &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Hero Banner"&lt;/span&gt;
    &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"1200"&lt;/span&gt;
    &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"700"&lt;/span&gt;
    &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"high"&lt;/span&gt;
  &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/picture&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For images below the fold, add &lt;code&gt;loading="lazy"&lt;/code&gt; to defer loading until the user scrolls near them.&lt;/p&gt;




&lt;h3&gt;
  
  
  Font Optimization
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@font-face&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Inter'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url('/fonts/inter.woff2')&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;'woff2'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;font-display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;swap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Show fallback immediately, swap when loaded */&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Best practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host fonts locally (eliminates third-party DNS lookup for Google Fonts)&lt;/li&gt;
&lt;li&gt;Preload critical fonts: &lt;code&gt;&amp;lt;link rel="preload" href="/fonts/inter.woff2" as="font" crossorigin /&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Limit font variations — each weight/style is a separate network request&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;font-display: optional&lt;/code&gt; for non-critical fonts to prevent any layout shift&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Resource Hints
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- DNS resolution for third-party domains --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"dns-prefetch"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://analytics.example.com"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Preconnect for critical third parties (DNS + TCP + TLS) --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"preconnect"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://fonts.gstatic.com"&lt;/span&gt; &lt;span class="na"&gt;crossorigin&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Prefetch next likely navigation --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"prefetch"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/next-page.html"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Preload critical resources --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"preload"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/fonts/inter.woff2"&lt;/span&gt; &lt;span class="na"&gt;as=&lt;/span&gt;&lt;span class="s"&gt;"font"&lt;/span&gt; &lt;span class="na"&gt;crossorigin&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Edge Caching &amp;amp; CDN
&lt;/h3&gt;

&lt;p&gt;Use a CDN for all static assets. Modern CDN providers with good developer experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare&lt;/strong&gt; — generous free tier, edge functions, image optimization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel Edge Network&lt;/strong&gt; — zero-config for Next.js/framework deployments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bunny CDN&lt;/strong&gt; — competitive pricing, good for media-heavy sites&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Target a &lt;strong&gt;TTFB under 200ms&lt;/strong&gt;. If your TTFB is consistently high, the bottleneck is usually server compute or geographic distance — a CDN solves the latter; caching solves the former.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. UX Checklist
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;What to Check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mobile-First&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google indexes the mobile version. Test with real devices, not just DevTools.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Non-HTTPS sites are flagged in browsers and penalized in rankings.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Internal Linking&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Distribute link equity and help crawlers discover deep pages.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Accessibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;alt&lt;/code&gt; text on images, keyboard navigability, ARIA roles where needed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;URL Structure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Clean, readable, lowercase, hyphens (not underscores). Avoid URL parameters for content pages.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;404 Handling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Custom 404 page with navigation. Monitor for crawl errors in Search Console.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Page Depth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Important pages should be reachable within 3 clicks from the homepage.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Recommended Tooling
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core Web Vitals &amp;amp; Performance
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://pagespeed.web.dev" rel="noopener noreferrer"&gt;PageSpeed Insights&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Field + lab data, LCP/INP/CLS breakdown, quick wins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lighthouse (Chrome DevTools)&lt;/td&gt;
&lt;td&gt;Local audits during development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://webpagetest.org" rel="noopener noreferrer"&gt;WebPageTest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Filmstrip view, advanced waterfall, multi-location&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://gtmetrix.com" rel="noopener noreferrer"&gt;GTmetrix&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Scheduled monitoring, trend tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chrome UX Report (CrUX)&lt;/td&gt;
&lt;td&gt;Real-world field data for your domain and competitors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  SEO &amp;amp; Crawling
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://search.google.com/search-console" rel="noopener noreferrer"&gt;Google Search Console&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Indexing, impressions, CWV reports, crawl errors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Screaming Frog SEO Spider&lt;/td&gt;
&lt;td&gt;Large-scale crawl audits, broken links, redirect chains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ahrefs / Semrush&lt;/td&gt;
&lt;td&gt;Backlink analysis, keyword tracking, site audits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sitebulb.com" rel="noopener noreferrer"&gt;Sitebulb&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Visual SEO auditing, good for reporting to non-technical stakeholders&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Image Optimization
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://squoosh.app" rel="noopener noreferrer"&gt;Squoosh&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Browser-based AVIF/WebP conversion with quality preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://sharp.pixelplumbing.com" rel="noopener noreferrer"&gt;Sharp&lt;/a&gt; (Node.js)&lt;/td&gt;
&lt;td&gt;Programmatic image processing in build pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudinary / ImageKit&lt;/td&gt;
&lt;td&gt;Automated resize, format conversion, responsive delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Structured Data
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://technicalseo.com/tools/schema-markup-generator/" rel="noopener noreferrer"&gt;Schema Markup Generator&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Generate valid JSON-LD without writing it by hand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://search.google.com/test/rich-results" rel="noopener noreferrer"&gt;Rich Results Test&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Validate structured data against Google's parser&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Recommended Workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Audit
   └── Run PageSpeed Insights on key pages (homepage, top landing pages)
   └── Identify your worst CWV metric — fix the worst one first

2. Debug Locally
   └── Chrome DevTools → Performance tab for INP/LCP traces
   └── Lighthouse for a full audit with specific recommendations

3. SEO Crawl
   └── Screaming Frog to catch broken links, missing titles, redirect chains
   └── Validate structured data with Rich Results Test

4. Deploy &amp;amp; Monitor
   └── Google Search Console for ongoing CWV, indexing, and CTR
   └── Set up alerts for sudden CWV regressions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Modern SEO is a technical discipline, not just a content strategy. The sites that rank and retain users in 2026 share a common foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast LCP through image optimization and server-side rendering&lt;/li&gt;
&lt;li&gt;Responsive INP through task scheduling and lean JS&lt;/li&gt;
&lt;li&gt;Stable CLS through explicit dimensions and font loading control&lt;/li&gt;
&lt;li&gt;Crawlable structure through semantic HTML and structured data&lt;/li&gt;
&lt;li&gt;Reliable monitoring through Search Console and real-user metrics (CrUX)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with the metric that's furthest from the "Good" threshold. Fix one thing at a time, measure the impact, and iterate. Performance is a product feature — not a post-launch checklist.&lt;/p&gt;

</description>
      <category>performance</category>
      <category>tutorial</category>
      <category>ux</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Vibe Coding with Gemini in Google AI Studio</title>
      <dc:creator>Putu Adi</dc:creator>
      <pubDate>Mon, 09 Mar 2026 09:49:07 +0000</pubDate>
      <link>https://dev.to/disann/vibe-coding-with-gemini-in-google-ai-studio-4353</link>
      <guid>https://dev.to/disann/vibe-coding-with-gemini-in-google-ai-studio-4353</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.amazonaws.com%2Fuploads%2Farticles%2Fs965uf66akx67jv43dnk.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fs965uf66akx67jv43dnk.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Vibe Coding with Gemini in Google AI Studio 🚀
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Build, Refine, and Deploy an AI-Generated App
&lt;/h3&gt;

&lt;p&gt;The AI era is changing the way developers build software. As a &lt;strong&gt;frontend developer&lt;/strong&gt;, I’ve noticed that AI tools are no longer optional—they’re becoming an essential part of the workflow.&lt;/p&gt;

&lt;p&gt;One interesting trend is &lt;strong&gt;Vibe Coding&lt;/strong&gt;: generating and iterating on applications using AI with natural language prompts.&lt;/p&gt;

&lt;p&gt;In this article, I’ll show how I used &lt;strong&gt;Gemini inside Google AI Studio&lt;/strong&gt; to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate a working application from a single prompt&lt;/li&gt;
&lt;li&gt;Refine the UI using annotation tools&lt;/li&gt;
&lt;li&gt;Save the project directly to GitHub&lt;/li&gt;
&lt;li&gt;Deploy it to Vercel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s walk through the process.&lt;/p&gt;




&lt;h1&gt;
  
  
  What You'll Do
&lt;/h1&gt;

&lt;p&gt;In this tutorial you will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build &amp;amp; Prompt&lt;/strong&gt;&lt;br&gt;
Use Google AI Studio's &lt;strong&gt;Build Mode&lt;/strong&gt; to generate a working app from a single prompt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Refine with System Instructions&lt;/strong&gt;&lt;br&gt;
“Vibe check” the AI by defining a persistent coding style and persona.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Save to GitHub&lt;/strong&gt;&lt;br&gt;
Bootstrap a new repository directly from AI Studio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deploy to Vercel&lt;/strong&gt;&lt;br&gt;
Deploy the generated application quickly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What You'll Learn
&lt;/h1&gt;

&lt;p&gt;By the end of this tutorial you will learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to use &lt;strong&gt;Build Mode&lt;/strong&gt; in Google AI Studio for rapid prototyping&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;System Instructions&lt;/strong&gt; help maintain consistent AI behavior&lt;/li&gt;
&lt;li&gt;How to integrate &lt;strong&gt;Google AI Studio with GitHub&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How to deploy an AI-generated app to &lt;strong&gt;Vercel&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What You'll Need
&lt;/h1&gt;

&lt;p&gt;Before starting, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome Web Browser&lt;/li&gt;
&lt;li&gt;Google Account&lt;/li&gt;
&lt;li&gt;Gmail Account&lt;/li&gt;
&lt;li&gt;GitHub Account&lt;/li&gt;
&lt;li&gt;Vercel Account&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Before You Begin
&lt;/h1&gt;

&lt;p&gt;Open the &lt;strong&gt;Google Cloud Console&lt;/strong&gt; and create or select a project.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://console.cloud.google.com/" rel="noopener noreferrer"&gt;https://console.cloud.google.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to the &lt;strong&gt;Project Selector&lt;/strong&gt; page and either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select an existing project&lt;/li&gt;
&lt;li&gt;Or create a new one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project will be used by &lt;strong&gt;Google AI Studio&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Brainstorming the Idea 💡
&lt;/h1&gt;

&lt;p&gt;First, we brainstorm the idea we want to build.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Ffplxgvlpufiiabsfnlfl.png" 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.amazonaws.com%2Fuploads%2Farticles%2Ffplxgvlpufiiabsfnlfl.png" alt="Brainstorming" width="762" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, I decided to build a &lt;strong&gt;Nutrition Tracker&lt;/strong&gt; for bulking and cutting.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Final Prompt
&lt;/h1&gt;

&lt;p&gt;Once the idea is clear, we write a detailed prompt.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Ftzra5xbxtfxhs2dca3nw.png" 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.amazonaws.com%2Fuploads%2Farticles%2Ftzra5xbxtfxhs2dca3nw.png" alt="Prompt" width="727" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the final prompt used in &lt;strong&gt;Google AI Studio Build Mode&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build a Next.js web application for a Bulking &amp;amp; Cutting Nutrition Tracker
with a high-contrast "Dark Gym" aesthetic using Tailwind CSS.

Features:
- Macro-Centric Dashboard displaying real-time progress for Protein, Carbs, Fats, and Calories
- Dynamic goals based on Bulking or Cutting mode
- Goal Switcher to toggle between modes
- Efficiency Score (Protein per 100 Calories) for each food item
- Meal Logger using weight-based input (grams)
- Use a 5-item dummy food database
- Body Weight &amp;amp; Body Fat % tracker

All user data should be stored and synchronized using LocalStorage with React Hooks.

The UI should be mobile-first and look like a professional fitness application.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Implementing the Prompt
&lt;/h1&gt;

&lt;p&gt;After submitting the prompt, &lt;strong&gt;Google AI Studio generates the application automatically&lt;/strong&gt;.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fcm4u4q13dvu66pin10so.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fcm4u4q13dvu66pin10so.png" alt="Generated App" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within minutes, we already have a working prototype.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Vibe Coding&lt;/strong&gt; shines: fast iteration with AI assistance.&lt;/p&gt;




&lt;h1&gt;
  
  
  Improve the Result with Annotation Mode ✨
&lt;/h1&gt;

&lt;p&gt;To refine the UI, we can use &lt;strong&gt;Annotation Mode&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This feature allows you to &lt;strong&gt;draw directly on the app preview and attach instructions&lt;/strong&gt; to specific UI elements.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fg9mhecl0wlb5txrpxvi3.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fg9mhecl0wlb5txrpxvi3.png" alt="Annotation" width="415" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F5buhjfbi3hg4ehkrrjzc.png" 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.amazonaws.com%2Fuploads%2Farticles%2F5buhjfbi3hg4ehkrrjzc.png" alt="Annotation Example" width="797" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example improvements:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Draw:&lt;/strong&gt;&lt;br&gt;
Use the box tool to highlight the score counter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comment:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Make this font larger, digital, and glitchy."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Sketch:&lt;/strong&gt;&lt;br&gt;
Point to the Play/Pause buttons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comment:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Change these to glowing neon icons."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This allows you to refine your UI visually instead of writing long prompts.&lt;/p&gt;

&lt;p&gt;📚 Reference:&lt;br&gt;
&lt;a href="https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio#3" rel="noopener noreferrer"&gt;https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio#3&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Save the Project to GitHub
&lt;/h1&gt;

&lt;p&gt;Instead of downloading files and manually creating a repository, &lt;strong&gt;Google AI Studio integrates directly with GitHub&lt;/strong&gt;.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Ft9yktbvag4l0sw7gur7c.png" 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.amazonaws.com%2Fuploads%2Farticles%2Ft9yktbvag4l0sw7gur7c.png" alt="GitHub Integration" width="800" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect your GitHub account&lt;/li&gt;
&lt;li&gt;Create a new repository&lt;/li&gt;
&lt;li&gt;Push the generated project automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This saves time and simplifies the workflow.&lt;/p&gt;

&lt;p&gt;📚 Reference:&lt;br&gt;
&lt;a href="https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio#5" rel="noopener noreferrer"&gt;https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio#5&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Deploy the Application 🚀
&lt;/h1&gt;

&lt;p&gt;You can deploy using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Cloud Platform&lt;/li&gt;
&lt;li&gt;Or other platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this example, I used &lt;strong&gt;Vercel (free tier)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Vercel&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Import the GitHub repository&lt;/li&gt;
&lt;li&gt;Follow the default configuration&lt;/li&gt;
&lt;/ol&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fkfaagztsqk3jjrgbqgok.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fkfaagztsqk3jjrgbqgok.png" alt="Vercel Setup" width="800" height="717"&gt;&lt;/a&gt;&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fn0r8prre84qmkkhhxanx.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fn0r8prre84qmkkhhxanx.png" alt="Vercel Deployment" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📚 Reference:&lt;br&gt;
&lt;a href="https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio#6" rel="noopener noreferrer"&gt;https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio#6&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Demo Project
&lt;/h1&gt;

&lt;p&gt;Here is the deployed demo project:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://iron-track-food-nutrition-apps.vercel.app/" rel="noopener noreferrer"&gt;https://iron-track-food-nutrition-apps.vercel.app/&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Vibe Coding&lt;/strong&gt; with Google AI Studio is a powerful way to rapidly prototype applications.&lt;/p&gt;

&lt;p&gt;Instead of spending hours building a basic structure, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate a full app with a prompt&lt;/li&gt;
&lt;li&gt;Iterate visually with annotations&lt;/li&gt;
&lt;li&gt;Push code directly to GitHub&lt;/li&gt;
&lt;li&gt;Deploy instantly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developers, AI should not replace our skills—but &lt;strong&gt;amplify productivity and creativity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And honestly, it’s pretty fun.&lt;/p&gt;




&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;p&gt;Google AI Studio Codelab&lt;br&gt;
&lt;a href="https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio" rel="noopener noreferrer"&gt;https://codelabs.developers.google.com/vibe-code-with-gemini-in-aistudio&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>MCP Figma: The Frontend Developer’s New Assistant</title>
      <dc:creator>Putu Adi</dc:creator>
      <pubDate>Tue, 02 Dec 2025 08:26:15 +0000</pubDate>
      <link>https://dev.to/disann/mcp-figma-the-frontend-developers-new-assistant-478n</link>
      <guid>https://dev.to/disann/mcp-figma-the-frontend-developers-new-assistant-478n</guid>
      <description>&lt;p&gt;Recently, I explored a new piece of technology called &lt;strong&gt;MCP Figma&lt;/strong&gt; or as I prefer to call it, &lt;strong&gt;The Frontend’s Assistant&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At first, a few questions crossed my mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;“Will this make my work easier, or do I need to adapt to new behaviors?”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;“Since Figma is mainly used by designers, will frontend developers like me struggle to understand it?”&lt;/em&gt;
(For context: I’m still a junior frontend developer, haha.)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;“Is this assistant going to replace frontend developers?”&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article is my attempt to answer those questions based on my research and hands-on experimentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1. What is MCP?&lt;/strong&gt;
&lt;/h2&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F7bgyp1f7hp31z6qgap7u.png" 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.amazonaws.com%2Fuploads%2Farticles%2F7bgyp1f7hp31z6qgap7u.png" alt="image here" width="615" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As stated on the official site:&lt;br&gt;
&lt;strong&gt;“An open-source standard for connecting AI applications to external systems.”&lt;/strong&gt;&lt;br&gt;
(&lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;https://modelcontextprotocol.io/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;In simple terms:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An MCP Server is an external service that exposes data or functions so AI applications can access them through the Model Context Protocol.&lt;/strong&gt;&lt;br&gt;
It acts as a bridge that connects AI to things like files, databases, APIs, or specific tools in a safe and structured format.&lt;/p&gt;

&lt;p&gt;Instead of the AI interacting directly with your system, it communicates through the MCP Server. This makes integrations safer, more consistent, and easier to manage especially when connecting AI to multiple external data sources.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;2. What is Figma?&lt;/strong&gt;
&lt;/h2&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fs2xmth2k6zcceap2oklu.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fs2xmth2k6zcceap2oklu.png" alt="image here" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://www.figma.com/" rel="noopener noreferrer"&gt;https://www.figma.com/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Figma is a cloud-based design platform for creating UI/UX designs, prototypes, and collaborative workflows in real-time.&lt;/strong&gt;&lt;br&gt;
Because it runs directly in the browser, designers, developers, and product teams can work together in the same file without installing additional software.&lt;/p&gt;

&lt;p&gt;With features like Auto Layout, prototyping, shared libraries, and component systems, Figma makes it easy to maintain large-scale design projects. It also provides integrations and plugins that support developer handoff making the design-to-code workflow smoother and faster.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;3. Why Figma MCP Server Exists&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After understanding MCP and Figma individually, the next question is:&lt;br&gt;
&lt;strong&gt;Why combine them? Why does “Figma MCP Server” exist?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is a growing need for AI to directly understand, analyze, and extract structured data from design files.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Figma MCP Server allows AI tools to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read design structures&lt;/li&gt;
&lt;li&gt;inspect components and metadata&lt;/li&gt;
&lt;li&gt;automate documentation&lt;/li&gt;
&lt;li&gt;convert design into code&lt;/li&gt;
&lt;li&gt;validate UI accuracy&lt;/li&gt;
&lt;li&gt;speed up design-to-development workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI no longer needs to &lt;em&gt;interpret&lt;/em&gt; a screenshot.&lt;br&gt;
It can access real, structured design data in a standardized and secure way.&lt;/p&gt;

&lt;p&gt;This results in faster, more accurate, and more efficient collaboration between designers and frontend developers.&lt;/p&gt;
&lt;h3&gt;
  
  
  📘 Setup Guides
&lt;/h3&gt;

&lt;p&gt;Official Setup Guide:&lt;br&gt;
&lt;a href="https://help.figma.com/hc/en-us/articles/32132100833559-Guide-to-the-Figma-MCP-server" rel="noopener noreferrer"&gt;https://help.figma.com/hc/en-us/articles/32132100833559-Guide-to-the-Figma-MCP-server&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🧩 Supported AI Tools
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;a. Cursor AI&lt;/strong&gt;&lt;br&gt;
Guide by &lt;em&gt;Sergei Chyrkov:&lt;/em&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=PPqt_xLg_5c" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=PPqt_xLg_5c&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://cursor.directory/mcp/figma" rel="noopener noreferrer"&gt;https://cursor.directory/mcp/figma&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;b. VS Code + Copilot / MCP&lt;/strong&gt;&lt;br&gt;
Guide by &lt;em&gt;Snyk:&lt;/em&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=50tkvZhOVqM" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=50tkvZhOVqM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference:&lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_add-an-mcp-server-to-your-workspace" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_add-an-mcp-server-to-your-workspace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Figma API Key (if needed):&lt;br&gt;
&lt;a href="https://essential-addons.com/docs/how-to-get-figma-api-key/" rel="noopener noreferrer"&gt;https://essential-addons.com/docs/how-to-get-figma-api-key/&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;4. My Own Implementation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A few weeks ago, I created a personal design case study:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A fruit shop e-commerce landing page called “Jaya Abadi.”&lt;/strong&gt;&lt;br&gt;
The page includes sections for products, business info, partners, testimonials, contact, and more fully responsive for desktop and mobile.&lt;/p&gt;
&lt;h3&gt;
  
  
  🎨 My Mockup
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fbvyeqstfyx9zxeij3ysw.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fbvyeqstfyx9zxeij3ysw.png" alt="Image here" width="800" height="777"&gt;&lt;/a&gt;&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fe3bqoj4bv86x2mrhqf9m.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fe3bqoj4bv86x2mrhqf9m.png" alt="Image here" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🔧 My Workflow
&lt;/h3&gt;

&lt;p&gt;a. Set up MCP Server (I used Cursor AI)&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fis9is5oujtty4ij1vxmx.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fis9is5oujtty4ij1vxmx.png" alt="Image here" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;b. Selected a model (I used the free plan limited, but okay).&lt;br&gt;
c. Prompting process.&lt;/p&gt;

&lt;p&gt;Example prompt I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create complete html, css native, sass and images used in the figma (_this link to figma selection part
![Image here](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2oahbexpq2j9gzu90ap.png)_)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;d. And boom the output arrived.&lt;br&gt;
e. So… how was the result?&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;5. The Result&lt;/strong&gt;
&lt;/h2&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fd14j4sc87t55tll9fk0n.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fd14j4sc87t55tll9fk0n.png" alt="Image here" width="800" height="761"&gt;&lt;/a&gt;&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Ff3ofaztiflkelhk8w9yq.png" 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.amazonaws.com%2Fuploads%2Farticles%2Ff3ofaztiflkelhk8w9yq.png" alt="Image here" width="480" height="917"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;this demo result link website : &lt;a href="https://experiment-use-figma-mcp-server-wit.vercel.app/" rel="noopener noreferrer"&gt;https://experiment-use-figma-mcp-server-wit.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just with a prompt,&lt;br&gt;
&lt;strong&gt;I was able to generate a full website structure.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;6. Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For me, the result is surprisingly good.&lt;br&gt;
Yes, the setup time is a bit long (especially if you're starting from zero), but the output is worth it.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A very fast way to generate initial code from design&lt;/li&gt;
&lt;li&gt;Roughly &lt;strong&gt;50% accurate&lt;/strong&gt; to the original design&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Clean code structure&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The AI even used &lt;strong&gt;BEM CSS methodology&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;And a folder layout similar to &lt;strong&gt;Atomic Design&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Some visual adjustments still needed design sense is not perfect&lt;/li&gt;
&lt;li&gt;CSS and spacing require manual refinement&lt;/li&gt;
&lt;li&gt;Free model limitations reduce quality&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💡 Suggestions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A better model produces a better output, simple as that&lt;/li&gt;
&lt;li&gt;Use good, clean prompting&lt;/li&gt;
&lt;li&gt;If you're a developer, prepare your project setup &lt;em&gt;before&lt;/em&gt; running the MCP workflow&lt;/li&gt;
&lt;li&gt;Expect to refine the design manually at the end&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Final Thoughts&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This is a fascinating innovation.&lt;br&gt;
It helps a lot, especially for frontend developers who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;don’t want to design from scratch&lt;/li&gt;
&lt;li&gt;want faster design-to-code workflows&lt;/li&gt;
&lt;li&gt;enjoy experimenting with AI tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It won’t replace frontend developers, but it &lt;strong&gt;will&lt;/strong&gt; empower us to focus more on structure, logic, performance, and polish.&lt;/p&gt;

&lt;p&gt;And I’m excited to see how this evolves next.&lt;/p&gt;

&lt;p&gt;Thanks for reading! 🙌&lt;/p&gt;




</description>
      <category>mcp</category>
      <category>figma</category>
      <category>frontend</category>
      <category>ai</category>
    </item>
    <item>
      <title>Moment.js vs Day.js — Which One Should You Use Today?</title>
      <dc:creator>Putu Adi</dc:creator>
      <pubDate>Sat, 05 Jul 2025 11:41:52 +0000</pubDate>
      <link>https://dev.to/disann/momentjs-vs-dayjs-which-one-should-you-use-today-103e</link>
      <guid>https://dev.to/disann/momentjs-vs-dayjs-which-one-should-you-use-today-103e</guid>
      <description>&lt;p&gt;Hi everyone! 👋&lt;br&gt;&lt;br&gt;
Welcome to my very first online article! 😄&lt;br&gt;&lt;br&gt;
This is actually my first time writing a technical post, so please bear with me if it’s not perfect. I'm open to feedback and discussion — feel free to drop your thoughts in the comments to keep me motivated and excited to share more!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Background
&lt;/h2&gt;

&lt;p&gt;This article is inspired by a recent task I received from my team at work. We're currently working on a JavaScript-based project using &lt;strong&gt;Nuxt.js&lt;/strong&gt;, and I was asked to research date manipulation libraries.&lt;/p&gt;

&lt;p&gt;We had previously used &lt;strong&gt;Moment.js&lt;/strong&gt;, but I kept encountering discussions comparing it to &lt;strong&gt;Day.js&lt;/strong&gt; — some even questioned whether Moment.js was still relevant. That piqued my curiosity.&lt;/p&gt;

&lt;p&gt;So I ran a quick technical comparison between the two. Rather than saying one is "better", I wanted to understand &lt;strong&gt;where each library excels&lt;/strong&gt; and what trade-offs they offer. Hopefully, this post helps you make the right choice for your use case too!&lt;/p&gt;




&lt;h2&gt;
  
  
  🆚 Moment.js vs Day.js
&lt;/h2&gt;

&lt;p&gt;Here’s a side-by-side comparison of the two popular JavaScript libraries for date and time handling.&lt;/p&gt;




&lt;h3&gt;
  
  
  📆 Moment.js
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Released&lt;/strong&gt;: September 15, 2011
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Created by&lt;/strong&gt;: Tim Wood
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purpose&lt;/strong&gt;: Simplify date parsing, validation, manipulation, and formatting with a developer-friendly API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  🔍 Project Status
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;As of 2020, Moment.js is in &lt;strong&gt;maintenance mode&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;No new features are planned, but bug fixes and security updates may still be provided.
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://momentjs.com/docs/#/-project-status/" rel="noopener noreferrer"&gt;Reference – Project Status&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📆 Day.js
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Released&lt;/strong&gt;: May 23, 2018
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Created by&lt;/strong&gt;: &lt;a href="https://github.com/iamkun" rel="noopener noreferrer"&gt;@iamkun&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;A modern and lightweight alternative to Moment.js, with a &lt;strong&gt;similar API&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ✨ Strengths of Day.js
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Small bundle size (~2KB without plugins)&lt;/li&gt;
&lt;li&gt;Fast performance&lt;/li&gt;
&lt;li&gt;Immutable date objects&lt;/li&gt;
&lt;li&gt;Tree-shaking friendly&lt;/li&gt;
&lt;li&gt;Plugin-based system for optional features&lt;/li&gt;
&lt;li&gt;Compatible with modern frameworks like Vue, Nuxt, and React&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📊 Quick Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Moment.js&lt;/th&gt;
&lt;th&gt;Day.js&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Release Year&lt;/td&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;2018&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bundle Size&lt;/td&gt;
&lt;td&gt;~67 KB&lt;/td&gt;
&lt;td&gt;~2 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tree-shaking Support&lt;/td&gt;
&lt;td&gt;❌ Not supported&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Project Status&lt;/td&gt;
&lt;td&gt;Maintenance&lt;/td&gt;
&lt;td&gt;Actively maintained&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Immutability&lt;/td&gt;
&lt;td&gt;❌ Mutable&lt;/td&gt;
&lt;td&gt;✅ Immutable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timezone Support&lt;/td&gt;
&lt;td&gt;✅ Built-in&lt;/td&gt;
&lt;td&gt;➕ Via plugin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parsing Flexibility&lt;/td&gt;
&lt;td&gt;✅ High&lt;/td&gt;
&lt;td&gt;➕ With plugin (customParseFormat)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;📦 &lt;a href="https://bundlephobia.com/package/moment" rel="noopener noreferrer"&gt;Moment.js on Bundlephobia&lt;/a&gt;&lt;br&gt;&lt;br&gt;
📦 &lt;a href="https://bundlephobia.com/package/dayjs" rel="noopener noreferrer"&gt;Day.js on Bundlephobia&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 When to Use What?
&lt;/h2&gt;

&lt;p&gt;Here’s a quick guide to help you decide:&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Use &lt;strong&gt;Moment.js&lt;/strong&gt; if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You're maintaining or working on a legacy codebase.&lt;/li&gt;
&lt;li&gt;You need comprehensive parsing and timezone support out-of-the-box.&lt;/li&gt;
&lt;li&gt;Bundle size is not a major concern.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅ Use &lt;strong&gt;Day.js&lt;/strong&gt; if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You're building a modern application where performance and size matter.&lt;/li&gt;
&lt;li&gt;You prefer immutability and a modular plugin system.&lt;/li&gt;
&lt;li&gt;You're using frameworks like Vue, Nuxt, React, etc.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Conclusion
&lt;/h2&gt;

&lt;p&gt;Both Moment.js and Day.js are powerful in their own ways.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Moment.js&lt;/strong&gt; remains a mature and battle-tested option for robust date handling, especially in older codebases.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day.js&lt;/strong&gt; offers a more modern take, focused on size, speed, and simplicity — while keeping the familiar API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than suggesting one is strictly "better" than the other, I hope this article shows how they &lt;strong&gt;serve different needs&lt;/strong&gt; depending on your project context.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you're starting a &lt;strong&gt;new JavaScript project&lt;/strong&gt;, it’s worth evaluating Day.js for its modern architecture and smaller footprint.&lt;br&gt;&lt;br&gt;
If you're maintaining a &lt;strong&gt;legacy project&lt;/strong&gt;, Moment.js might still be the more practical choice, but keep in mind its status.&lt;/p&gt;

&lt;p&gt;Ultimately, the best tool is the one that fits your project’s requirements, team familiarity, and long-term maintainability goals.&lt;/p&gt;




&lt;h2&gt;
  
  
  🙏 Thank You
&lt;/h2&gt;

&lt;p&gt;Thanks so much for reading my first blog post!&lt;br&gt;&lt;br&gt;
I hope this helped clarify the differences and use cases between Moment.js and Day.js. If you’ve used either (or both), I’d love to hear your experience in the comments!&lt;/p&gt;

&lt;p&gt;💻 Check out the small experiment I built:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://disan-experiment-momentjs-dayjs-adisan103s-projects.vercel.app/" rel="noopener noreferrer"&gt;Live Demo – GitHub Pages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until next time — happy coding and keep learning! 🚀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>nuxt</category>
    </item>
  </channel>
</rss>
