<?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: Samee Ullah</title>
    <description>The latest articles on DEV Community by Samee Ullah (@samee-ullah).</description>
    <link>https://dev.to/samee-ullah</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%2F455983%2Fcd72c6d1-fe98-49eb-a766-f5c4a7f09712.jpeg</url>
      <title>DEV Community: Samee Ullah</title>
      <link>https://dev.to/samee-ullah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samee-ullah"/>
    <language>en</language>
    <item>
      <title>Agentic Browsing in PageSpeed Insights: Checks and Fixes</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Fri, 21 Aug 2026 16:31:48 +0000</pubDate>
      <link>https://dev.to/samee-ullah/agentic-browsing-in-pagespeed-insights-checks-and-fixes-3ch3</link>
      <guid>https://dev.to/samee-ullah/agentic-browsing-in-pagespeed-insights-checks-and-fixes-3ch3</guid>
      <description>&lt;p&gt;&lt;em&gt;Last updated: August 21, 2026&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You opened PageSpeed Insights to check a slow page and noticed a new category: &lt;strong&gt;Agentic Browsing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Some checks passed. One says &lt;em&gt;Not applicable&lt;/em&gt;. Others mention &lt;code&gt;llms.txt&lt;/code&gt; and WebMCP.&lt;/p&gt;

&lt;p&gt;Should you worry?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No. Agentic Browsing measures whether an AI agent can understand and use your page. It is not a Google ranking factor, and a failed check is not an SEO penalty.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s what the checks mean and which ones deserve your attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Agentic Browsing?
&lt;/h2&gt;

&lt;p&gt;Agentic Browsing is an experimental Lighthouse category in PageSpeed Insights and Chrome DevTools.&lt;/p&gt;

&lt;p&gt;Traditional Lighthouse checks ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this page usable for people?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agentic Browsing asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can software understand this page and complete a task without guessing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means identifying buttons, understanding form fields, reading page structure, and interacting with stable content.&lt;/p&gt;

&lt;p&gt;The category currently focuses on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Accessibility and semantic structure&lt;/li&gt;
&lt;li&gt;Cumulative Layout Shift (CLS)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;WebMCP&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The score is based on applicable checks. A result marked &lt;strong&gt;Not applicable&lt;/strong&gt; is not a failure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Agentic Browsing is a readiness signal, not a ranking system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. Accessibility: Give Every Element a Clear Meaning
&lt;/h2&gt;

&lt;p&gt;Agents, screen readers, and other automated tools rely on semantic HTML and accessible names.&lt;/p&gt;

&lt;p&gt;Avoid clickable &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; elements and unlabeled inputs:&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn"&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"submitForm()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;svg&amp;gt;&amp;lt;use&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#icon-send"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"you@company.com"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use real controls and labels instead:&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;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;svg&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;use&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#icon-send"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
  Send reset link
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Email address&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt;
  &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;required&lt;/span&gt;
  &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key improvements are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; for buttons&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; for form fields&lt;/li&gt;
&lt;li&gt;Use meaningful input types&lt;/li&gt;
&lt;li&gt;Hide decorative icons from assistive technology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can quickly find unlabeled controls in DevTools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;button, a, input, select, textarea&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="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
      &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;aria-label&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
      &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;labels&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="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
      &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
      &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;No accessible name:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;el&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;Priority: high.&lt;/strong&gt; This improves accessibility, usability, and machine readability.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. CLS: Keep the Page Stable
&lt;/h2&gt;

&lt;p&gt;Agentic Browsing also checks &lt;strong&gt;Cumulative Layout Shift&lt;/strong&gt;, a Core Web Vital.&lt;/p&gt;

&lt;p&gt;If content moves after loading, an agent—or a human—may click the wrong element.&lt;/p&gt;

&lt;p&gt;The standard thresholds are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CLS&lt;/th&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.00 to 0.10&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.10 to 0.25&lt;/td&gt;
&lt;td&gt;Needs improvement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Above 0.25&lt;/td&gt;
&lt;td&gt;Poor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Common fixes include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Add image dimensions
&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;img&lt;/span&gt;
  &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"hero.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;"630"&lt;/span&gt;
  &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Acme dashboard overview"&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;
  
  
  Reserve space for embeds
&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;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;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt;
    &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Product tour"&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;h3&gt;
  
  
  Avoid injecting banners into the page flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.cookie-banner&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;inset-inline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&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;p&gt;&lt;strong&gt;Priority: high.&lt;/strong&gt; CLS already affects mobile usability and Core Web Vitals.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;code&gt;llms.txt&lt;/code&gt;: Optional, Not an SEO Requirement
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;llms.txt&lt;/code&gt; check looks for a file at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://yoursite.com/llms.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the file is missing, Lighthouse may show &lt;strong&gt;Not applicable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That does not mean your site is broken.&lt;/p&gt;

&lt;p&gt;Google has stated that &lt;code&gt;llms.txt&lt;/code&gt; is not required for Google Search and does not improve or reduce rankings.&lt;/p&gt;

&lt;p&gt;A basic file might look like this:&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;# Acme Analytics&lt;/span&gt;
&lt;span class="gt"&gt;
&amp;gt; Self-serve product analytics for small engineering teams.&lt;/span&gt;

&lt;span class="gu"&gt;## Docs&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Quickstart&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://acme.dev/docs/quickstart.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;REST API&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://acme.dev/docs/api.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Event schema&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://acme.dev/docs/events.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Consider creating one if you publish technical documentation or an API that AI tools may need to understand.&lt;/p&gt;

&lt;p&gt;For a standard business website or blog, you can usually skip it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Priority: low and situational.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. WebMCP: Useful for Task-Based Websites
&lt;/h2&gt;

&lt;p&gt;WebMCP lets a website expose structured actions to AI agents.&lt;/p&gt;

&lt;p&gt;For example, instead of asking an agent to find a search box, type into it, and guess which button to click, you can expose a tool such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;modelContext&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;)&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;controller&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;AbortController&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;modelContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registerTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;searchProducts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Search the product catalogue.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="na"&gt;inputSchema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Search keyword or phrase&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="na"&gt;required&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="s1"&gt;query&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="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;query&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;await&lt;/span&gt; &lt;span class="nx"&gt;productStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;

    &lt;span class="na"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signal&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;WebMCP is still experimental, so most websites do not need it yet.&lt;/p&gt;

&lt;p&gt;It may be worth exploring if your site supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product searches&lt;/li&gt;
&lt;li&gt;Booking&lt;/li&gt;
&lt;li&gt;Quote generation&lt;/li&gt;
&lt;li&gt;Support tickets&lt;/li&gt;
&lt;li&gt;Account workflows&lt;/li&gt;
&lt;li&gt;Other task-based interactions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Priority: low for most sites.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Read the Report
&lt;/h2&gt;

&lt;p&gt;A report might look 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;Agentic Browsing                    3/3 checks passed

Accessibility tree                Passed
Cumulative Layout Shift  0.019    Passed
llms.txt                          Passed
WebMCP registered tools           Not applicable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important detail is that &lt;strong&gt;Not applicable is excluded from the score&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can inspect the underlying Lighthouse report with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx lighthouse@latest https://example.com &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--only-categories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;agentic-browsing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the JSON output, &lt;code&gt;notApplicable&lt;/code&gt; and &lt;code&gt;informative&lt;/code&gt; do not mean failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does Agentic Browsing Affect SEO?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agentic Browsing is a Lighthouse diagnostic category, not a Google ranking factor.&lt;/p&gt;

&lt;p&gt;Your SEO priorities remain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Helpful content&lt;/li&gt;
&lt;li&gt;Crawlability and indexing&lt;/li&gt;
&lt;li&gt;Internal linking&lt;/li&gt;
&lt;li&gt;Mobile usability&lt;/li&gt;
&lt;li&gt;Structured data where appropriate&lt;/li&gt;
&lt;li&gt;Core Web Vitals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The good news is that several improvements overlap. Clear headings, semantic HTML, labeled forms, and stable layouts help users, search engines, assistive technology, and AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Should You Do?
&lt;/h2&gt;

&lt;p&gt;Use this priority order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fix accessibility issues&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve CLS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider **&lt;/strong&gt;&lt;code&gt;llms.txt&lt;/code&gt;**** if you publish technical documentation**&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explore WebMCP only if your site depends on completing tasks&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not implement a technology simply because it appears in a new PageSpeed panel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Not applicable” is not a to-do item.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agentic Browsing is still experimental, but its main lesson is practical: make your website clear, semantic, and stable.&lt;/p&gt;

&lt;p&gt;That helps every kind of visitor—including people, search engines, assistive tools, and future AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Agentic Browsing a Google ranking factor?
&lt;/h3&gt;

&lt;p&gt;No. It is a Lighthouse category, not part of Google's ranking system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need &lt;code&gt;llms.txt&lt;/code&gt; for SEO?
&lt;/h3&gt;

&lt;p&gt;No. Google does not require it for Search rankings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does my report say “Not applicable”?
&lt;/h3&gt;

&lt;p&gt;It means Lighthouse found nothing to evaluate. This is common for WebMCP when no tools are registered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I implement WebMCP?
&lt;/h3&gt;

&lt;p&gt;Only if your website's main purpose involves completing actions such as searching, booking, purchasing, or submitting forms. WebMCP is still experimental.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will these checks change?
&lt;/h3&gt;

&lt;p&gt;Probably. Chrome describes Agentic Browsing and WebMCP as experimental and subject to change. Focus first on durable improvements such as accessibility and CLS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Step
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Not sure which Agentic Browsing checks your site needs?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/samee-ullah-dev/" rel="noopener noreferrer"&gt;Request a free technical SEO and Core Web Vitals audit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll review your key templates, separate meaningful issues from optional checks, and provide a prioritised action plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.chrome.com/docs/lighthouse/agentic-browsing/scoring" rel="noopener noreferrer"&gt;Lighthouse Agentic Browsing scoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt" rel="noopener noreferrer"&gt;llms.txt audit, Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide" rel="noopener noreferrer"&gt;AI optimization guide, Google Search Central&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webmachinelearning.github.io/webmcp/" rel="noopener noreferrer"&gt;WebMCP specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.chrome.com/docs/ai/webmcp" rel="noopener noreferrer"&gt;WebMCP documentation, Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://llmstxt.org/" rel="noopener noreferrer"&gt;The &lt;/a&gt;&lt;a href="https://llmstxt.org/" rel="noopener noreferrer"&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/a&gt;&lt;a href="https://llmstxt.org/" rel="noopener noreferrer"&gt; file specification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.dev/articles/cls" rel="noopener noreferrer"&gt;Cumulative Layout Shift, web.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>performance</category>
      <category>a11y</category>
    </item>
    <item>
      <title>How I Automatically Capture the Country of Newsletter Leads in GoHighLevel (GHL)</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Thu, 30 Jul 2026 11:42:32 +0000</pubDate>
      <link>https://dev.to/samee-ullah/how-i-automatically-capture-the-country-of-newsletter-leads-in-gohighlevel-ghl-50ce</link>
      <guid>https://dev.to/samee-ullah/how-i-automatically-capture-the-country-of-newsletter-leads-in-gohighlevel-ghl-50ce</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzombbat6e0sk0sjauo73.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzombbat6e0sk0sjauo73.png" alt="How I Automatically Capture the Country of Newsletter Leads in GoHighLevel" width="800" height="533"&gt;&lt;/a&gt;If you're using &lt;strong&gt;GoHighLevel (GHL)&lt;/strong&gt; to collect newsletter subscribers, your form probably only asks for an email address. Keeping forms short is great for conversions, but it also means you miss useful information like the visitor's country.&lt;/p&gt;

&lt;p&gt;I recently needed a way to identify the country of newsletter subscribers without asking them to fill out another field. After testing a few approaches, I found a simple solution that automatically detects the visitor's country and saves it inside GoHighLevel using a hidden custom field.&lt;/p&gt;

&lt;p&gt;In this article, I'll show you exactly how to set it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Most newsletter forms look something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email Address&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or maybe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;First Name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email Address&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's enough to collect subscribers, but it doesn't tell you where they are from.&lt;/p&gt;

&lt;p&gt;Without the country, you cannot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Send country specific email campaigns.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build location based automations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Segment your audience by country.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand where your subscribers are coming from.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have subscribers from different countries, this data can be very valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;Instead of asking visitors to select their country manually, we can detect it automatically using their public IP address.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a hidden custom field in GoHighLevel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add that field to your newsletter form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detect the visitor's country using JavaScript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the country into the hidden field before the form is submitted.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The subscriber only enters their email address, while GoHighLevel stores the country in the background.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Create a Custom Field in GoHighLevel
&lt;/h2&gt;

&lt;p&gt;Go to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Settings → Custom Fields&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a new custom field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Field Name&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;Country Tracker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Field Type&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;Single Line Text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the custom field.&lt;/p&gt;

&lt;p&gt;This field will hold the detected country for every newsletter subscriber.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Add the Custom Field to Your Newsletter Form
&lt;/h2&gt;

&lt;p&gt;Open your GoHighLevel newsletter form.&lt;/p&gt;

&lt;p&gt;Add the newly created &lt;strong&gt;Country Tracker&lt;/strong&gt; field.&lt;/p&gt;

&lt;p&gt;Since visitors should never see it, set the field to &lt;strong&gt;Hidden&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your subscribers will never interact with this field, but the value will still be submitted with the form.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Find the Hidden Input ID
&lt;/h2&gt;

&lt;p&gt;Now we need the HTML ID of that hidden field.&lt;/p&gt;

&lt;p&gt;Open the page containing your form.&lt;/p&gt;

&lt;p&gt;Right click and choose &lt;strong&gt;Inspect&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Inside the Elements tab, search for one of these:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;country_tracker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Country Tracker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eventually you'll find something similar to this:&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;input&lt;/span&gt;
    &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"tkSh7iX8ZeTa1BDUJtjK"&lt;/span&gt;
    &lt;span class="na"&gt;data-q=&lt;/span&gt;&lt;span class="s"&gt;"country_tracker"&lt;/span&gt;
    &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the value from the &lt;strong&gt;id&lt;/strong&gt; attribute.&lt;/p&gt;

&lt;p&gt;In this example, the ID is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tkSh7iX8ZeTa1BDUJtjK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will replace the ID inside the JavaScript with your own if it is different.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Add the JavaScript
&lt;/h2&gt;

&lt;p&gt;Place this script on the page where your GoHighLevel form is embedded.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&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://ipwho.is/&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="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;countryField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tkSh7iX8ZeTa1BDUJtjK&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;countryField&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;countryField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

      &lt;span class="nx"&gt;countryField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispatchEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;input&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="na"&gt;bubbles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
      &lt;span class="nx"&gt;countryField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispatchEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;change&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="na"&gt;bubbles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;

      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Country saved:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the page loads, the visitor's country is detected automatically.&lt;/p&gt;

&lt;p&gt;When the form is submitted, the hidden field is submitted with it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;A visitor from Australia subscribes to your newsletter.&lt;/p&gt;

&lt;p&gt;They only enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;john@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Behind the scenes, the script automatically stores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Country Tracker: Australia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside GoHighLevel, the contact now contains both the email address and the detected country.&lt;/p&gt;

&lt;p&gt;No additional fields were shown to the visitor.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Is Useful
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Personalize Email Campaigns
&lt;/h2&gt;

&lt;p&gt;Create different email sequences based on where subscribers live.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;United States&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Canada&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Australia&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;United Kingdom&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each audience can receive content that is more relevant to them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Better Workflows
&lt;/h2&gt;

&lt;p&gt;The Country Tracker field can be used inside GoHighLevel automations.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Apply country specific tags.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send localized newsletters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route contacts to different teams.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trigger different workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Better Audience Analytics
&lt;/h2&gt;

&lt;p&gt;You can quickly identify which countries generate the most subscribers.&lt;/p&gt;

&lt;p&gt;This makes it easier to measure campaign performance and discover new opportunities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep Your Forms Simple
&lt;/h2&gt;

&lt;p&gt;Newsletter forms should stay short.&lt;/p&gt;

&lt;p&gt;Instead of asking visitors to choose their country manually, everything happens automatically in the background.&lt;/p&gt;

&lt;p&gt;That means fewer fields and a better user experience.&lt;/p&gt;




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

&lt;p&gt;If you've been looking for &lt;strong&gt;how to get the country of the lead in GHL&lt;/strong&gt; or &lt;strong&gt;how to get lead country via form&lt;/strong&gt;, this approach is simple to implement and works well for newsletter forms that only collect an email address.&lt;/p&gt;

&lt;p&gt;By creating a hidden &lt;strong&gt;Country Tracker&lt;/strong&gt; custom field, adding it to your GoHighLevel form, finding the input ID, and using a small JavaScript snippet, you can automatically save every subscriber's country.&lt;/p&gt;

&lt;p&gt;Once the country is stored, you can build smarter automations, create personalized email campaigns, and better understand your audience without asking visitors for any extra information.&lt;/p&gt;

&lt;p&gt;If you have another approach for capturing lead location in GoHighLevel, I'd love to hear about it in the comments.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>gohighlevel</category>
      <category>automation</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Make Your GoHighLevel Pages Feel Premium with Smooth Scrolling</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Sat, 04 Oct 2025 10:21:04 +0000</pubDate>
      <link>https://dev.to/samee-ullah/make-your-gohighlevel-pages-feel-premium-with-smooth-scrolling-3k66</link>
      <guid>https://dev.to/samee-ullah/make-your-gohighlevel-pages-feel-premium-with-smooth-scrolling-3k66</guid>
      <description>&lt;h2&gt;
  
  
  🚀 How to Add Smooth Scrolling in GoHighLevel Using GSAP
&lt;/h2&gt;

&lt;p&gt;Many people ask: &lt;em&gt;“Can we add smooth scrolling inside GoHighLevel (GHL) pages?”&lt;/em&gt; Yes, we can! With the help of &lt;strong&gt;GSAP&lt;/strong&gt; and a small piece of code, your page can scroll smoothly like Apple’s websites 😍.&lt;/p&gt;

&lt;p&gt;Here’s a &lt;strong&gt;step-by-step guide&lt;/strong&gt;:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🛠 Step 1: Add a Code Element in GHL&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;👉 In GoHighLevel, if you try to load GSAP inside &lt;strong&gt;Settings → Tracking Code → Header&lt;/strong&gt;, sometimes the scripts do not work correctly.&lt;/p&gt;

&lt;p&gt;So instead, do this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Drag a &lt;strong&gt;Code Element&lt;/strong&gt; onto your GHL page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open it and paste the full code inside.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This way, the scripts run properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🛠 Step 2: Paste GSAP + Smooth Scrolling Code&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Inside the &lt;strong&gt;Code Element&lt;/strong&gt;, paste the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollSmoother.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
document.addEventListener("DOMContentLoaded", function() {
  if (!document.querySelector(".smooth-wrapper")) {
    let body = document.querySelector("body");
    let wrapper = document.createElement("div");
    wrapper.classList.add("smooth-wrapper");

    let content = document.createElement("div");
    content.classList.add("smooth-content");

    while (body.firstChild) {
      content.appendChild(body.firstChild);
    }

    wrapper.appendChild(content);
    body.appendChild(wrapper);

    gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
    ScrollSmoother.create({
      wrapper: ".smooth-wrapper",
      content: ".smooth-content",
      smooth: 1.5,
      effects: true
    });
  }
});
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;🛠 Step 3: Publish and Test&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Save your page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open it live.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scroll up and down.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Boom 🎉 — smooth scrolling is working!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🤔 Why This Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;GHL doesn’t allow script files in the header to always work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By using a &lt;strong&gt;Code Element&lt;/strong&gt;, we make sure GSAP loads correctly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then we wrap your page content in a new container so GSAP’s ScrollSmoother can control it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;⚡ Bonus Tips&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Change smooth: 1.5 to 2 or 3 if you want even slower and softer scrolling.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can also add GSAP animations to make each section fade in, slide, or zoom while scrolling.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ That’s it! Now your GHL pages will feel modern and smooth.&lt;br&gt;
A small tweak, but a big upgrade for client experience 🚀.&lt;/p&gt;

&lt;p&gt;👉 If you’re using GHL and want your funnels to look premium, perform better, and impress your clients, let’s connect. &lt;a href="https://www.linkedin.com/in/samee-ullah-dev/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/samee-ullah-dev/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>gohighlevel</category>
    </item>
    <item>
      <title>𝗠𝗼𝘀𝘁 𝗯𝘂𝘀𝗶𝗻𝗲𝘀𝘀𝗲𝘀 𝗸𝗻𝗼𝘄 𝘁𝗵𝗲𝘆 𝗻𝗲𝗲𝗱 𝗮 𝘄𝗲𝗯𝘀𝗶𝘁𝗲</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Sat, 27 Sep 2025 21:18:10 +0000</pubDate>
      <link>https://dev.to/samee-ullah/-1nf</link>
      <guid>https://dev.to/samee-ullah/-1nf</guid>
      <description>&lt;p&gt;💡 𝗠𝗼𝘀𝘁 𝗯𝘂𝘀𝗶𝗻𝗲𝘀𝘀𝗲𝘀 𝗸𝗻𝗼𝘄 𝘁𝗵𝗲𝘆 𝗻𝗲𝗲𝗱 𝗮 𝘄𝗲𝗯𝘀𝗶𝘁𝗲.&lt;br&gt;
But very few realize that without a good design, their website is holding them back.&lt;/p&gt;

&lt;p&gt;A messy or outdated UI makes visitors lose trust fast.&lt;br&gt;
And here is the real problem… many small businesses do not have a UI design at all.&lt;/p&gt;

&lt;p&gt;They come to me with just a logo, brand colors, and some content. That is it.&lt;br&gt;
No design. No layout. No consistency.&lt;/p&gt;

&lt;p&gt;So what do I do?&lt;br&gt;
I use Lovable, an AI tool that helps me turn those basics into a professional design in few minutes.&lt;/p&gt;

&lt;p&gt;𝗛𝗼𝘄 𝗟𝗼𝘃𝗮𝗯𝗹𝗲 𝗛𝗲𝗹𝗽𝘀 𝗠𝗲 𝗗𝗲𝘀𝗶𝗴𝗻&lt;br&gt;
All I need to provide is:&lt;br&gt;
✔ The client’s logo&lt;br&gt;
✔ Their brand colors&lt;br&gt;
✔ The type of business&lt;br&gt;
✔ The style they want, like modern or minimal&lt;/p&gt;

&lt;p&gt;And Lovable creates a design that already looks polished and professional.&lt;/p&gt;

&lt;p&gt;𝗪𝗵𝘆 𝗖𝗹𝗶𝗲𝗻𝘁𝘀 𝗟𝗼𝘃𝗲 𝗜𝘁&lt;/p&gt;

&lt;p&gt;✅ Faster results. They see a design in hours, not weeks.&lt;br&gt;
✅ Branding that feels authentic and real.&lt;br&gt;
✅ A modern, user friendly look without a full design team.&lt;br&gt;
✅ A shareable preview link for instant feedback.&lt;/p&gt;

&lt;p&gt;𝗔 𝗦𝗶𝗺𝗽𝗹𝗲 𝗘𝘅𝗮𝗺𝗽𝗹𝗲&lt;/p&gt;

&lt;p&gt;I gather the client’s assets and enter a prompt like:&lt;/p&gt;

&lt;p&gt;Design a modern business website using this logo and a blue and gold color scheme. The brand should feel professional and trustworthy.&lt;/p&gt;

&lt;p&gt;Within a short time, I get a complete design that I can fine tune. Then I share the link with the client, and they can see exactly how their site will look.&lt;/p&gt;

&lt;p&gt;𝗪𝗵𝘆 𝗧𝗵𝗶𝘀 𝗠𝗮𝘁𝘁𝗲𝗿𝘀&lt;/p&gt;

&lt;p&gt;Using Lovable is not just about saving time.&lt;br&gt;
It is about giving small businesses a website that feels intentional, on brand, and trustworthy from day one.&lt;/p&gt;

&lt;p&gt;AI is not replacing creativity.&lt;br&gt;
It is supporting it.&lt;br&gt;
And for me, Lovable has become a smart way to solve one of the biggest problems in UI design.&lt;/p&gt;

&lt;p&gt;Try now: &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%2Fcydr9z8kkath1v3zx544.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%2Fcydr9z8kkath1v3zx544.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>programming</category>
      <category>loveable</category>
    </item>
    <item>
      <title>Bulk GoHighLevel Email Template Deletion Tool</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Fri, 11 Jul 2025 22:08:36 +0000</pubDate>
      <link>https://dev.to/samee-ullah/bulk-gohighlevel-email-template-deletion-tool-2m1g</link>
      <guid>https://dev.to/samee-ullah/bulk-gohighlevel-email-template-deletion-tool-2m1g</guid>
      <description>&lt;h2&gt;
  
  
  Bulk GoHighLevel Email Template Deletion Tool
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Clean up your GHL subaccounts in seconds — no code or backend needed.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I Made This
&lt;/h3&gt;

&lt;p&gt;GoHighLevel (GHL) is a great platform for email marketing and automation. But there's one big problem — &lt;strong&gt;you can’t delete email templates in bulk&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you have 50, 100, or 300+ templates, you have to remove them &lt;strong&gt;one by one&lt;/strong&gt;. That takes a lot of time.&lt;/p&gt;

&lt;p&gt;So I built a simple tool that helps you &lt;strong&gt;fetch, select, and delete multiple email templates&lt;/strong&gt; with just a few clicks.&lt;/p&gt;




&lt;h3&gt;
  
  
  What This Tool Does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fetch all email templates from your GHL subaccount&lt;/li&gt;
&lt;li&gt;Show each template’s &lt;strong&gt;name, ID, and last updated time&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Let you select multiple templates&lt;/li&gt;
&lt;li&gt;Delete them in bulk using GoHighLevel’s &lt;strong&gt;official API&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Works &lt;strong&gt;entirely in your browser&lt;/strong&gt; — no server or database needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What You Need
&lt;/h3&gt;

&lt;p&gt;Before using the tool, you will need:&lt;/p&gt;

&lt;h4&gt;
  
  
  🔐 1. Location ID
&lt;/h4&gt;

&lt;p&gt;This is your &lt;strong&gt;Subaccount ID&lt;/strong&gt; in GoHighLevel. You can find it in your URL when inside a subaccount.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔑 2. Private Integration Key
&lt;/h4&gt;

&lt;p&gt;Go to:&lt;br&gt;
&lt;code&gt;Settings → API → Create Private Key&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Make sure to give the key these permissions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View Templates&lt;/li&gt;
&lt;li&gt;Add/Edit/Update/Delete Templates&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  How To Use It
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Download or open the tool in your browser (you’ll get the link from the GitHub repo below).&lt;/li&gt;
&lt;li&gt;Enter your &lt;strong&gt;Location ID&lt;/strong&gt; and &lt;strong&gt;Private Integration Key&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;“Fetch”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The tool will show all templates&lt;/li&gt;
&lt;li&gt;Uncheck the ones you want to keep&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;“Delete from GHL”&lt;/strong&gt; to start deletion&lt;/li&gt;
&lt;li&gt;Keep at least a &lt;strong&gt;2-second delay&lt;/strong&gt; between each delete for safe API calls&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  ⚠️ Important Notes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The tool runs in your browser. Your token is used &lt;strong&gt;locally&lt;/strong&gt;, so make sure you’re using it on a trusted computer.&lt;/li&gt;
&lt;li&gt;Once deleted, templates are &lt;strong&gt;permanently removed&lt;/strong&gt; from your GHL account.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  GitHub Link
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/samee-ch/GHL-Email-Template-Manager" rel="noopener noreferrer"&gt;View Source Code on GitHub&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💬 Final Thoughts
&lt;/h3&gt;

&lt;p&gt;This tool is made for GHL users who want to save time and clean up their email templates quickly. No need for coding, servers, or manual deleting.&lt;/p&gt;

&lt;p&gt;If you find this helpful, please give it a ⭐️ on GitHub or share it with other agency owners!&lt;/p&gt;

&lt;p&gt;Tool Link: &lt;a href="https://samee-ch.github.io/GHL-Email-Template-Manager/" rel="noopener noreferrer"&gt;GHL Bulk Emails Deletion Tool&lt;/a&gt;&lt;br&gt;
 Let's connect on &lt;a href="https://www.linkedin.com/in/sameech/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gohighlevel</category>
      <category>api</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Fridge-photo based recipe generator by using Google AI Studio</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Fri, 11 Jul 2025 21:08:15 +0000</pubDate>
      <link>https://dev.to/samee-ullah/fridge-photo-based-recipe-generator-by-using-google-ai-studi-28k5</link>
      <guid>https://dev.to/samee-ullah/fridge-photo-based-recipe-generator-by-using-google-ai-studi-28k5</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a simple app that gives recipe ideas using a photo of your fridge. The user uploads a fridge photo, and the app finds the ingredients and shows easy recipes.&lt;br&gt;
I used Google AI Studio with the Vision model. My prompt tells Gemini to detect ingredients and suggest simple recipes from what it sees.&lt;/p&gt;

&lt;p&gt;This is the prompt that I used:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You are a helpful cooking assistant.&lt;/p&gt;

&lt;p&gt;The user will upload a photo of the inside of their fridge. First, &amp;gt;analyze the image and identify only the visible food ingredients (e.g. &amp;gt;eggs, milk, vegetables, sauces, fruits, leftovers, etc.). Ignore non-&amp;gt;food items like containers, packaging, bottles, or background objects.&lt;/p&gt;

&lt;p&gt;Then, based on the identified ingredients, suggest 1 or 2 simple &amp;gt;recipes that can be made using only those ingredients.&lt;/p&gt;

&lt;p&gt;Each recipe should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recipe name&lt;/li&gt;
&lt;li&gt;List of required ingredients (from the image)&lt;/li&gt;
&lt;li&gt;Easy step-by-step instructions (maximum 4 steps)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you cannot find enough ingredients, reply politely:&lt;br&gt;&lt;br&gt;
"I couldn't find enough ingredients to suggest a recipe. Please try a clearer photo."&lt;/p&gt;

&lt;p&gt;Keep your response short, friendly, and beginner-friendly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://aistudio.google.com/app/prompts?state=%7B%22ids%22:%5B%221fx7GMei9uPJNZjkQ--O9BmvmEh7pYE3u%22%5D,%22action%22:%22open%22,%22userId%22:%22110801889537935319306%22,%22resourceKeys%22:%7B%7D%7D&amp;amp;usp=sharing" rel="noopener noreferrer"&gt;Link to my app (Google AI Studio App)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://samee-ch.github.io/ai-fridge-image-generate-recipe/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;I really enjoyed building this app. It was easy to use Google AI Studio and create something useful with just a prompt.&lt;/p&gt;

&lt;p&gt;I learned how to write a good prompt for image input and how AI can turn images into smart responses. I plan to add more features to this app later!&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%2Fv60iyjpme5cy5o3npkb8.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%2Fv60iyjpme5cy5o3npkb8.png" alt="App screenshot" width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>𝗖𝗼𝗱𝗶𝗻𝗴 𝗜𝘀 𝗖𝗵𝗮𝗻𝗴𝗶𝗻𝗴 𝗙𝗮𝘀𝘁!</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Wed, 23 Apr 2025 15:18:47 +0000</pubDate>
      <link>https://dev.to/samee-ullah/-1kbo</link>
      <guid>https://dev.to/samee-ullah/-1kbo</guid>
      <description>&lt;p&gt;🚀 𝗖𝗼𝗱𝗶𝗻𝗴 𝗜𝘀 𝗖𝗵𝗮𝗻𝗴𝗶𝗻𝗴 𝗙𝗮𝘀𝘁!&lt;br&gt;
"The future belongs to Developers who Master Prompt Engineering."&lt;/p&gt;

&lt;p&gt;⚠️𝗪𝗵𝘆 𝗣𝗿𝗼𝗺𝗽𝘁 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗶𝘀 𝗡𝗼𝘁 𝗢𝗽𝘁𝗶𝗼𝗻𝗮𝗹 𝗔𝗻𝘆𝗺𝗼𝗿𝗲?&lt;br&gt;
Companies are hiring coders who can:&lt;br&gt;
💡Communicate with AI smartly&lt;br&gt;
⚡Generate optimized code instantly&lt;br&gt;
🧩Solve problems faster than ever&lt;/p&gt;

&lt;p&gt;🤖𝗪𝗵𝗮𝘁 𝗘𝘅𝗮𝗰𝘁𝗹𝘆 𝗶𝘀 𝗣𝗿𝗼𝗺𝗽𝘁 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴?&lt;br&gt;
"The skill of asking AI the right question — the right way."&lt;br&gt;
AI is your Intern — but only if you guide it like a Manager.&lt;/p&gt;

&lt;p&gt;✍️𝗛𝗼𝘄 𝗧𝗼 𝗖𝗿𝗲𝗮𝘁𝗲 𝗮 𝗞𝗶𝗹𝗹𝗲𝗿 𝗣𝗿𝗼𝗺𝗽𝘁?&lt;/p&gt;

&lt;p&gt;1️⃣ Define Role —&lt;br&gt;
"Act as Senior Software Engineer"&lt;br&gt;
2️⃣ Add Context —&lt;br&gt;
"Building an eCommerce REST API with Node.js"&lt;br&gt;
3️⃣ Explain Problem Clearly —&lt;br&gt;
"Need folder structure + auth system + best practices"&lt;br&gt;
4️⃣ Specify Output Format —&lt;br&gt;
"Provide code snippets + summary"&lt;/p&gt;

&lt;p&gt;🚀𝗪𝗵𝘆 𝗧𝗵𝗶𝘀 𝗦𝗸𝗶𝗹𝗹 𝗪𝗶𝗹𝗹 𝗠𝗮𝗸𝗲 𝗬𝗼𝘂 𝗙𝘂𝘁𝘂𝗿𝗲-𝗣𝗿𝗼𝗼𝗳?&lt;br&gt;
⚙️Fast Debugging&lt;br&gt;
📦Ready to Use Code Templates&lt;br&gt;
🏗️Clean Architecture Guidance&lt;br&gt;
🚀Learning New Tech in Minutes&lt;br&gt;
📈Scaling Solutions like a Pro&lt;/p&gt;

&lt;p&gt;🧰𝗠𝘆 𝗙𝗮𝘃𝗼𝗿𝗶𝘁𝗲 𝗣𝗿𝗼𝗺𝗽𝘁 𝗧𝗲𝗺𝗽𝗹𝗮𝘁𝗲 𝗳𝗼𝗿 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀:&lt;br&gt;
"Act as Senior Backend Developer.&lt;br&gt;
Tech Stack: Node.js, Express, MongoDB.&lt;br&gt;
Task: Generate scalable API structure for a marketplace.&lt;br&gt;
Output: Folder structure + auth logic + best practices."&lt;/p&gt;

&lt;p&gt;🧠𝗙𝗶𝗻𝗮𝗹 𝗡𝗼𝘁𝗲 𝗳𝗼𝗿 𝗖𝗼𝗱𝗲𝗿𝘀:&lt;br&gt;
"AI is not here to replace you.&lt;br&gt;
But Developers who know Prompt Engineering...&lt;br&gt;
Will replace those who don't."&lt;/p&gt;

</description>
      <category>ai</category>
      <category>website</category>
      <category>startup</category>
    </item>
    <item>
      <title>🚀 Future of Developers is changing faster than your VS Code auto-save!</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Fri, 11 Apr 2025 16:16:21 +0000</pubDate>
      <link>https://dev.to/samee-ullah/future-of-developers-is-changing-faster-than-your-vs-code-auto-save-1ih</link>
      <guid>https://dev.to/samee-ullah/future-of-developers-is-changing-faster-than-your-vs-code-auto-save-1ih</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%2Fscqtb8c8re6cdzchpetw.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%2Fscqtb8c8re6cdzchpetw.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;AI is not coming to take your job...&lt;br&gt;
It's coming to take your tasks.&lt;br&gt;
Only those developers will survive &amp;amp; lead — who know how to think beyond code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is what I call:&lt;/strong&gt;&lt;br&gt;
Future-Proof Developer Roadmap — AI Era Edition&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Step 1: Mindset Upgrade
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stop being just a coder.&lt;/li&gt;
&lt;li&gt;Start being a problem solver.&lt;/li&gt;
&lt;li&gt;Think systems. Think solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👉 Step 2: Master Prompt Engineering
&lt;/h2&gt;

&lt;p&gt;AI Tools are your juniors now —&lt;br&gt;
You just need to ask them the right questions.&lt;br&gt;
Learn the art of giving instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Step 3: AI Assisted Coding
&lt;/h2&gt;

&lt;p&gt;Use AI like a boss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatGPT&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Cursor IDE&lt;/li&gt;
&lt;li&gt;OpenAI API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI writes code —&lt;br&gt;
You design the logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Step 4: System Design Mastery
&lt;/h2&gt;

&lt;p&gt;Real developers don't just build apps —&lt;br&gt;
They build systems that scale.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low Level Design&lt;/li&gt;
&lt;li&gt;High Level Architecture&lt;/li&gt;
&lt;li&gt;API Best Practices&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👉 Step 5: Modern Tech Stack
&lt;/h2&gt;

&lt;p&gt;Stay updated or stay outdated.&lt;br&gt;
Frontend: React / Next.js / Angular&lt;br&gt;
Backend: Node.js / Django&lt;br&gt;
Databases: PostgreSQL / MongoDB&lt;br&gt;
DevOps: Docker / AWS&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Step 6: Build Real Projects
&lt;/h2&gt;

&lt;p&gt;Your skills mean nothing without proof.&lt;br&gt;
Build — Launch — Repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Step 7: Soft Skills Matter
&lt;/h2&gt;

&lt;p&gt;Communication is your superpower.&lt;br&gt;
Explain complex things in simple words.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Step 8: Show The World
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Active GitHub&lt;/li&gt;
&lt;li&gt;Strong LinkedIn&lt;/li&gt;
&lt;li&gt;Write Blogs&lt;/li&gt;
&lt;li&gt;Share Ideas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI will not replace developers —&lt;br&gt;
But developers who use AI smartly...&lt;br&gt;
Will replace those who don't.&lt;br&gt;
Let the future be your playground.&lt;br&gt;
Let AI be your tool.&lt;br&gt;
Let your brain be the driver.&lt;br&gt;
Want to see the full roadmap?&lt;br&gt;
Check this visual I created 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vscode</category>
      <category>coding</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Responsive Image Overlay</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Fri, 15 Mar 2024 17:45:22 +0000</pubDate>
      <link>https://dev.to/samee-ullah/css-responsive-image-overlay-3797</link>
      <guid>https://dev.to/samee-ullah/css-responsive-image-overlay-3797</guid>
      <description>&lt;p&gt;This is a CSS Responsive Image overlay loader with blurred main content, simply paste the code in a javascript file and call it anywhere, like API call, on page load, and remove when any task is done.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/sameech/embed/zYXKJGe?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>webdev</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>#NoTesting?? Here’s what it means to me.</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Fri, 18 Sep 2020 11:39:33 +0000</pubDate>
      <link>https://dev.to/samee-ullah/notesting-here-s-what-it-means-to-me-2hie</link>
      <guid>https://dev.to/samee-ullah/notesting-here-s-what-it-means-to-me-2hie</guid>
      <description>&lt;h1&gt;
  
  
  NoTesting, as I understand it, is an attempt to kick people’s brains into thinking about a better way of doing things. Its not supposed to be a command to not do any testing without any idea.
&lt;/h1&gt;

&lt;p&gt;To me, it means “do better testing”. This kind of testing that possibly some people wouldn’t know testing.&lt;/p&gt;

&lt;p&gt;The #NoTesting hashtag is having a bit of a resurgence , so I thought I would jump on the bandwagon and write down my opinions on the whole thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The term is very confusing to say the least.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many people take it to mean “don’t do any testing”, which is logical that they interpret it that way since the hashtag is completely saying “No Testing”. If people “interpret” the #NoTesting hashtag in this way without putting any thinking into it, then those people are damned to failure.&lt;/p&gt;

&lt;p&gt;So after watching the tweets, and start thinking myself that people were promoting not doing any testing whatsoever, I decided to search to get to the bottom of the meaning of the hashtag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let me explain:&lt;/strong&gt;&lt;br&gt;
The majority of people working in software perceive testing as: “ensuring that the software meets expectations set by requirements”.&lt;/p&gt;

&lt;p&gt;This statement is based on my experience that I have asked the question “what is software testing?” hundreds of times in work shops, meetups, work places and offices, etc to people from all over the world who work across so many different disciplines in the software industry. This is far the most “common” answer to the question I posture to them. Sometimes the words vary; “it’s asserting the requirements”, or “it’s checking the software works as expected” But it is always the same meaning behind the words, that is we have an “expectation” from some “artefacts” and we assert those “expectations” against the software once it’s been develop.&lt;/p&gt;

&lt;p&gt;As an estimate from all these “conversations” I’ve had, I did say that over 90% of the people I’ve asked that question to, define testing in this way.&lt;/p&gt;

&lt;p&gt;So, if you think about that being what people think software testing is, then the #NoTesting hashtag might be useful for us here. You can see, testing is much more than “argue” assumption. There are many more testing activities that involve searching unknowns and risks to uncover information (i.e. all the stuff that aren’t in the “artefacts” and we don’t have expectations for). Think about all the variables, assumptions, ambiguities, unexpected things, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t just do the scripted:&lt;/strong&gt;&lt;br&gt;
Don’t just do the scripted, assertion side of testing, (Perhaps the “hashtag” could actually be created to #NotTesting for this to make people aware they are missing a lot of the other testing exercise that they should be doing).&lt;/p&gt;

&lt;p&gt;But with the real meaning of #NoTesting as it’s supposed to be used (to trigger thinking on how we can do things better) then the “hashtag” is supposed to generate thinking about how we can change things. E.g. “Only testing the condition – #NoTesting” will hopefully “trigger” people to think about how they can better their testing or how they might not be testing completely.&lt;/p&gt;

&lt;p&gt;But the “hashtag” can even be cooperative for people who do understand the “investigative” side of testing already too!&lt;br&gt;
Lets go deeper for a second, and imagine I was “standing” over your shoulder at work time and I literally said to you: “Don’t test the software product!! #NoTesting!!“. What would you do? You know there are issues that need to be opened and investigated, but how might you test for these issues that you are aware need to be “investigated” if you’re not allowed to focus clearly on the product?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take a second to think about this before reading on Think genuinely about how you would respond to my challenge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(Please don’t respond in an argumentative way The point is to get you to think about how else, or what else you can test/investigate to uncover information about risks, quality and value).&lt;/p&gt;

&lt;p&gt;If one of you set that “challenge” to me through that “statement” of “Don’t test the software product” and asked me the same “experience” to get me to think about that how I might test for the liability without checking the software product, my “aptitude” would be to find a way to “investigate” those risks sooner, before the software product is developed. possibly through pairing as the code is being written? Or even before that “pairing” while the code is being developed? Or before that still – when the idea for the software solution is being thought about and discussed, and while the artifacts are being created, and the UX and UI wire frames are being drawn?&lt;/p&gt;

&lt;p&gt;I can search and raise the risks at any of these points in time to benefit and challenge the ideas, artefacts, “UX/UI” design wire frames, code design and “written code”, so that the risks are at the “forefront” of everyone is thinking within those activities. This might actually allow us to prevent many issues from being coded into the software product, if we catch the bugs in out thinking and “understandings/misunderstandings” before and during the develop of the software product.&lt;br&gt;
I can use my testing skills all throughout the “SDLC” to enable others to be aware of the issues and to help them allay those compromise before I alike have a software code in front of me to test.&lt;/p&gt;

&lt;p&gt;Now, I am still testing at least in my experience I am, based on the whole design of testing, including “investigative testing”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read this blog: &lt;a href="https://softisans.com/notesting-heres-what-it-means-to-me/" rel="noopener noreferrer"&gt;https://softisans.com/notesting-heres-what-it-means-to-me/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://softisans.com/blogs" rel="noopener noreferrer"&gt;For more blogs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>codequality</category>
    </item>
    <item>
      <title>TOP 10 PHP FRAMEWORKS FOR WEB DEVELOPMENT</title>
      <dc:creator>Samee Ullah</dc:creator>
      <pubDate>Thu, 20 Aug 2020 19:39:14 +0000</pubDate>
      <link>https://dev.to/samee-ullah/top-10-php-frameworks-for-web-development-4jg2</link>
      <guid>https://dev.to/samee-ullah/top-10-php-frameworks-for-web-development-4jg2</guid>
      <description>&lt;p&gt;Top 10 PHP frameworks&lt;br&gt;
Here is a list of the best PHP frameworks based on popularity, ease and the ability to facilitate web development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Laravel
&lt;/h2&gt;

&lt;p&gt;Laravel is the most popular PHP framework with an expressive, robust, elegant syntax. It can ease to handle complicated web applications safely and at a much faster speed than any other frameworks.&lt;/p&gt;

&lt;p&gt;The framework also has a robust templating engine that simplifies the development process by easing common tasks such as caching, session, routing and authentication etc.&lt;/p&gt;

&lt;p&gt;Laravel comes up with plenty of functionalities that make the rapid application development a reality. Its Artisan command-line interface provides many supporting commands when developing the application. Moreover, It comprises a vast ecosystem with a fast, reliable hosting and distribution platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symfony
&lt;/h2&gt;

&lt;p&gt;The Symfony Framework was launched in the year 2005, and due to being oldest, Symfony has become a reliable framework for web applications. It is also known as a comprehensive PHP MVC framework, meeting to all PHP standards.&lt;/p&gt;

&lt;p&gt;The framework is a comprehensive one and is the only one that fully complies with the standards of PHP &amp;amp; the web.&lt;/p&gt;

&lt;p&gt;Symfony components are used by well-known CMS like Drupal, OroCram, and PHP Bulletin Board. When it comes to large-scale enterprise applications, Symfony is the right choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  CodeIgniter
&lt;/h2&gt;

&lt;p&gt;It is a simple yet powerful framework for PHP web application development. This can be installed without any hassle and it needs some basic user configurations. Besides this, it works well on most shared hosting platforms. It provides a simple toolkit and several pre-built modules for building full-featured PHP web applications. Another strength of this structure is its speed and lightness. It runs faster with database functions as compared to other PHP frameworks.&lt;/p&gt;

&lt;p&gt;It is a great idea, to begin with, CodeIgniter as it is a well documented framework that is best for usage. It uses the MVC (Model View Controller) approach that separates the business logic and presentation layer within the code.&lt;/p&gt;

&lt;p&gt;CodeIgniter is also getting more attention than Laravel because of framework functionality and coding style is slightly better and easy to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zend Framework
&lt;/h2&gt;

&lt;p&gt;An object oriented, MVC based framework, with features such as interfaces and inheritance that make it expandable, is Zend Framework in our list. It allows loading only those components and functions which are needed as individual libraries.&lt;/p&gt;

&lt;p&gt;It is built on agile functionality to deliver high quality applications. The Zend Framework is highly customizable and follows all the PHP practices and standards. Due to the object-oriented-ness, you can reuse a lot of code you’ve written. Moreover, it is quite easy to integrate the platform with external libraries so that its functionality can be enhanced even further.&lt;/p&gt;

&lt;h2&gt;
  
  
  CakePHP
&lt;/h2&gt;

&lt;p&gt;CakePHP is also the most popular frameworks, and it has still maintained its popularity because it has evolved and persists over time. It is an independent, open-source, rapid application development framework. It offers new functionalities with each new version to keep the strong user base. CakePHP got an active developer community that brings excellent value to the project. Using CakePHP means that the core of your application has been well tested and continuously improved. The current version of CakePHP has features like improved modularity and increased ability.&lt;/p&gt;

&lt;p&gt;It is the right choice for business application projects as it provides high end security with features such as SQL injection prevention, cross-site request forgery protection and cross-site scripting protection along many others.&lt;/p&gt;

&lt;h2&gt;
  
  
  FuelPHP
&lt;/h2&gt;

&lt;p&gt;FuelPHP is a flexible PHP framework that also supports the MVC as well as the HMVC architecture. It allows the applications to display more than one page at a time. This framework is being updated over time and is therefore expected to see further improvements in 2020. The framework has significant features such as HMVC that consume less time and memory. The HMVC implementations facilitate to create web applications with varied functionalities and complexities.&lt;/p&gt;

&lt;p&gt;The FuelPHP framework primarily focuses on security concerns. It uses URI filtering along with output encoding to deal with safety measures. FuelPHP is an ideal fit for creating web-based solutions of different sizes and complexities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yii 2
&lt;/h2&gt;

&lt;p&gt;Yii stands for Yes, it is! It is a component based framework for high-performance, simple and fast-developing modern PHP web applications. Yii is a standard PHP framework for web application development. So, it can be used to develop all types of web applications using PHP.&lt;/p&gt;

&lt;p&gt;Because of its component based architecture and caching support, Yii2 is best for developing extensive applications such as forums, CMS, portals, e-commerce applications etc.&lt;/p&gt;

&lt;p&gt;Yii is one of the oldest PHP frameworks, and the recently latest version is released as Yii 2 to boost popularity. Yii 2 is genuinely object-oriented and is based on the DRY (Don’t Repeat Yourself) coding approach/concept.&lt;/p&gt;

&lt;p&gt;The framework comes with many robust features such as the loading technique, which makes it faster than other PHP frameworks. Also it is the best fit for large-scale web application development as it can be integrated with AJAX and jQuery features easily. Additionally, it has a secure class code generator called Gii that facilitates object oriented programming and rapid prototyping for applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phalcon
&lt;/h2&gt;

&lt;p&gt;Phalcon is a high-performance PHP framework, its source code is written in C, so basically it is a C extension of PHP. It is one of those fastest frameworks people have enjoyed using.&lt;/p&gt;

&lt;p&gt;The outstanding features and architecture make this framework fast. Also It is easy to install and is suitable for building high-configuration web applications that conform to enterprise standards. It makes use of only limited resources.&lt;/p&gt;

&lt;p&gt;Phalcon is very light on resources, follow the MVC architecture and it is unique in that there are almost no files in the framework after you install it. You can only add modules and libraries whenever you want them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slim
&lt;/h2&gt;

&lt;p&gt;To create simple yet powerful web applications, Slim may be the ideal option for you. It is a micro-framework that helps you build robust but straightforward web applications and APIs. It is best for developing small applications that do not need the full-stack framework features. Minimal Slim nature is full of rich features such as URL routing, session and cookie encryption and support for ‘Flash’ messages in HTTP requests.&lt;/p&gt;

&lt;p&gt;What makes it most user-friendly is its active user base, regular maintenance, and upgrades. Slim is the perfect fit for small web applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  PHPixie
&lt;/h2&gt;

&lt;p&gt;The PHPixie is one of the most well-known full-stack PHP frameworks while preserving its high performance. It was developed for simple read-only websites that focus on performance. It implements an HMVC design pattern which is similar to that of FuelPHP and is built using independent elements/modules which can also be used without frameworks.&lt;/p&gt;

&lt;p&gt;PHPixie segments provide full unit test coverage. It has some distinctive features such as Object-Relational Mapping, input validation, and authentication capabilities. The PHPixie community is very helpful; you can expect to get an answer to your question within a few minutes.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>database</category>
    </item>
  </channel>
</rss>
