<?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: Jasmine Dueñas</title>
    <description>The latest articles on DEV Community by Jasmine Dueñas (@jas_duenas).</description>
    <link>https://dev.to/jas_duenas</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3911654%2F5aed0c3a-5526-49b4-ad13-04dca6d0e7cc.jpg</url>
      <title>DEV Community: Jasmine Dueñas</title>
      <link>https://dev.to/jas_duenas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jas_duenas"/>
    <language>en</language>
    <item>
      <title>React vs. Angular: Which One Should You Use for Your Next Web Project?</title>
      <dc:creator>Jasmine Dueñas</dc:creator>
      <pubDate>Mon, 08 Jun 2026 05:35:23 +0000</pubDate>
      <link>https://dev.to/jas_duenas/react-vs-angular-which-one-should-you-use-for-your-next-web-project-5506</link>
      <guid>https://dev.to/jas_duenas/react-vs-angular-which-one-should-you-use-for-your-next-web-project-5506</guid>
      <description>&lt;p&gt;If you're choosing between React and Angular right now, the honest answer is: it depends on what you're actually building, not on which one has more GitHub stars.&lt;/p&gt;

&lt;p&gt;I've worked on projects that used both, and I've seen teams pick the wrong tool because they followed hype instead of requirements. This isn't a "React always wins" or "Angular is enterprise-grade therefore serious" post. It's a breakdown of when each one actually makes sense.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Difference You Need to Understand First
&lt;/h2&gt;

&lt;p&gt;React is a library. Angular is a framework.&lt;/p&gt;

&lt;p&gt;That distinction matters more than most comparisons let on.&lt;/p&gt;

&lt;p&gt;React gives you a view layer and lets you assemble everything else: routing, state management, form handling, HTTP calls. You pull in what you need. This flexibility is a feature and a trap, depending on your team.&lt;/p&gt;

&lt;p&gt;Angular gives you the whole kitchen. Routing, forms, HTTP client, dependency injection, a CLI, testing utilities, and a strongly opinionated project structure are all included. You don't have to make decisions about tooling because Angular already made them for you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Starting a React project (Create React App or Vite)&lt;/span&gt;
npx create-react-app my-app
&lt;span class="c"&gt;# or&lt;/span&gt;
npm create vite@latest my-app &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--template&lt;/span&gt; react

&lt;span class="c"&gt;# Starting an Angular project&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli
ng new my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Angular setup asks you upfront: do you want routing? Which stylesheet format? React just... starts. You figure it out as you go.&lt;/p&gt;




&lt;h2&gt;
  
  
  When React Makes More Sense
&lt;/h2&gt;

&lt;p&gt;React is the better pick when:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need flexibility over convention.&lt;/strong&gt; If your app has unusual data flow, a non-standard architecture, or you're integrating with an existing system, React's composability is a real advantage. You're not fighting the framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your team is already JavaScript-heavy.&lt;/strong&gt; React is closer to vanilla JS than Angular. There's no need to learn TypeScript from day one (though you should), no decorators, no module system to learn separately. The ramp-up for a mid-level JS dev is faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're building a content-heavy or marketing-focused product.&lt;/strong&gt; React's ecosystem around SSR and static generation (Next.js specifically) is more mature and has broader community support for SEO-sensitive use cases. If your project needs good page speed scores and crawlable content, Next.js gives you that out of the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You want a smaller initial bundle.&lt;/strong&gt; React itself is around 40KB minified. What you add on top is your call.&lt;/p&gt;

&lt;p&gt;Here's a simple React component to show how straightforward the mental model is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ProductCard&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;price&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;inStock&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="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;₱&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;inStock&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"badge"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Available&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"badge out"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Out of Stock&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;No decorators, no modules, no injected services. Just a function that returns UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  When Angular Makes More Sense
&lt;/h2&gt;

&lt;p&gt;Angular earns its place when:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're building a large, team-maintained application.&lt;/strong&gt; Angular's strong conventions mean less code review debate about structure. Everyone knows where services go, where components go, what the module boundary is. On a 10-person team working on a single codebase for two years, that consistency saves real time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TypeScript is non-negotiable.&lt;/strong&gt; Angular is TypeScript-first. The type safety is baked in everywhere: services, components, HTTP calls, forms. If your team is already comfortable with TypeScript and values catching errors at compile time, Angular's strictness is a feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're building form-heavy enterprise apps.&lt;/strong&gt; Angular's Reactive Forms are genuinely good. Complex validation logic, dynamic form fields, nested form groups: all of it is handled cleanly without reaching for external libraries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Angular Reactive Form example&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;contactForm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&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="p"&gt;[&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="nx"&gt;Validators&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;required&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Validators&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;minLength&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)]],&lt;/span&gt;
  &lt;span class="na"&gt;email&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="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;Validators&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;required&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Validators&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt;
  &lt;span class="na"&gt;message&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="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Validators&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;required&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;Your team prefers opinionated structure.&lt;/strong&gt; Some teams work better when there's a "right way" enforced by the framework. Angular provides that. React's flexibility can lead to inconsistency across a codebase without strong internal conventions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Performance Conversation (It's More Nuanced Than You Think)
&lt;/h2&gt;

&lt;p&gt;Both are fast enough for most web apps. The performance gaps you read about in benchmarks rarely surface in production unless you're doing something extreme.&lt;/p&gt;

&lt;p&gt;What actually affects performance in both frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How you handle state updates and avoid unnecessary re-renders&lt;/li&gt;
&lt;li&gt;Whether you're lazy-loading routes and components&lt;/li&gt;
&lt;li&gt;How you manage large lists (virtualization matters more than your framework choice)&lt;/li&gt;
&lt;li&gt;Your bundle splitting strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;React's virtual DOM and Angular's change detection both work well when used correctly. The bottleneck in most real-world apps is network latency, API response times, and image optimization, not the framework's rendering approach.&lt;/p&gt;

&lt;p&gt;If raw performance for data-heavy dashboards is a priority, it's worth looking at how providers of &lt;a href="https://spice-factory.ph" rel="noopener noreferrer"&gt;custom web development services&lt;/a&gt; select frameworks based on actual project requirements rather than default preferences.&lt;/p&gt;




&lt;h2&gt;
  
  
  What About the Job Market and Ecosystem?
&lt;/h2&gt;

&lt;p&gt;React has more jobs, more packages, more Stack Overflow answers, and more tutorials. That's just true. The ecosystem is larger.&lt;/p&gt;

&lt;p&gt;Angular has more stable, long-term support from Google and a more predictable upgrade path for large codebases. Angular's breaking changes are communicated well and migration guides are detailed.&lt;/p&gt;

&lt;p&gt;If you're an early-career dev trying to maximize employability, React is the safer bet right now. If you're joining or building a team working on complex enterprise software, Angular experience is valuable and often specifically required.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Actual Recommendation
&lt;/h2&gt;

&lt;p&gt;Stop asking "which is better" and start asking "which fits this project."&lt;/p&gt;

&lt;p&gt;For a startup's MVP or a marketing site with dynamic elements: React (probably with Next.js).&lt;/p&gt;

&lt;p&gt;For an internal enterprise app with complex forms, multiple user roles, and a large dev team: Angular.&lt;/p&gt;

&lt;p&gt;For a small personal project or learning exercise: React, because the faster feedback loop is better for learning.&lt;/p&gt;

&lt;p&gt;For a team that has already standardized on one: use what the team knows. Switching frameworks mid-project is almost never worth it.&lt;/p&gt;

&lt;p&gt;One thing I've noticed working on Philippine tech projects specifically: the local talent pool leans React-heavy. If you're hiring locally and building a team from scratch, React gives you a wider candidate pool. That's a practical consideration that framework comparison articles rarely mention.&lt;/p&gt;

&lt;p&gt;If you're unsure what makes sense for your specific project context, teams that specialize in &lt;a href="https://spice-factory.ph/services" rel="noopener noreferrer"&gt;web application development&lt;/a&gt; can usually give you a clearer answer after understanding your actual requirements, not just your tech preferences.&lt;/p&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;Factor&lt;/th&gt;
&lt;th&gt;React&lt;/th&gt;
&lt;th&gt;Angular&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Type&lt;/td&gt;
&lt;td&gt;Library&lt;/td&gt;
&lt;td&gt;Full framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;JS or TS&lt;/td&gt;
&lt;td&gt;TypeScript (required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;Lower&lt;/td&gt;
&lt;td&gt;Steeper&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flexibility&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Lower (opinionated)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bundle size (base)&lt;/td&gt;
&lt;td&gt;~40KB&lt;/td&gt;
&lt;td&gt;~130KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSR support&lt;/td&gt;
&lt;td&gt;Via Next.js&lt;/td&gt;
&lt;td&gt;Angular Universal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Flexible UIs, content sites&lt;/td&gt;
&lt;td&gt;Enterprise apps, large teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job market&lt;/td&gt;
&lt;td&gt;Larger&lt;/td&gt;
&lt;td&gt;Smaller but consistent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I use TypeScript with React?&lt;/strong&gt;&lt;br&gt;
Yes, and you should for any serious project. Create React App and Vite both have TypeScript templates. The ecosystem support is solid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Angular dying?&lt;/strong&gt;&lt;br&gt;
No. Angular releases regular updates, Google actively uses it internally, and it's widely used in enterprise environments. The community is smaller than React's but it's stable and maintained.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which is easier to learn first?&lt;/strong&gt;&lt;br&gt;
React. The concepts are closer to base JavaScript and the tooling is less opinionated, which means less to learn upfront.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I switch from React to Angular later?&lt;/strong&gt;&lt;br&gt;
Technically yes, but it's a significant rewrite. Make the decision early and commit to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which one does Google prefer?&lt;/strong&gt;&lt;br&gt;
Google built Angular. But Google also uses React internally for some products. Neither has a SEO advantage just from the framework choice: what matters is how you implement rendering.&lt;/p&gt;




&lt;p&gt;What's your current stack? Are you on React, Angular, or something else entirely (Vue, Svelte, plain JS)? Drop it in the comments. Curious what the Dev.to crowd is actually shipping with these days.&lt;/p&gt;

</description>
      <category>react</category>
      <category>angular</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to Build a SEO-Ready Website Before You Launch (And Why Most Teams Get This Wrong)</title>
      <dc:creator>Jasmine Dueñas</dc:creator>
      <pubDate>Thu, 04 Jun 2026 07:02:34 +0000</pubDate>
      <link>https://dev.to/jas_duenas/how-to-build-a-seo-ready-website-before-you-launch-and-why-most-teams-get-this-wrong-36oh</link>
      <guid>https://dev.to/jas_duenas/how-to-build-a-seo-ready-website-before-you-launch-and-why-most-teams-get-this-wrong-36oh</guid>
      <description>&lt;p&gt;Launching a website without SEO foundations baked in is like building a shop in an alley with no signage. Great product, zero foot traffic.&lt;/p&gt;

&lt;p&gt;Most teams treat SEO as a post-launch task. "We'll optimize it later." But some of the most expensive SEO problems, like broken crawlability, wrong URL structure, and missing analytics, are decisions that hardened during development. By the time someone notices, fixing them means touching templates, redirects, and sometimes the CMS itself.&lt;/p&gt;

&lt;p&gt;This guide covers what actually needs to happen before go-live. Not theory. This is the checklist we use at our &lt;a href="https://spice-factory.ph" rel="noopener noreferrer"&gt;Cebu-based web development company&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "SEO-ready" really means
&lt;/h2&gt;

&lt;p&gt;It does not mean stuffing keywords into page titles. A site is SEO-ready when it can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discovered&lt;/strong&gt;: search engines can find and index the right pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understood&lt;/strong&gt;: each page has clear structure, a defined topic, and proper metadata&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Used&lt;/strong&gt;: fast on mobile, accessible, with obvious next steps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measured&lt;/strong&gt;: analytics and Search Console are live and tested before launch day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any of those four are missing, you are not ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 1: Plan before a single template gets built
&lt;/h2&gt;

&lt;p&gt;The best time to fix SEO is before URLs are locked and templates are baked into the CMS. Once development hardens, changes cost real time and money.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start from business goals, not a keyword list
&lt;/h3&gt;

&lt;p&gt;Keywords are reference material, not copy-paste phrases. Start here instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What should this site generate? Inquiries, demo requests, bookings?&lt;/li&gt;
&lt;li&gt;Who is the buyer and what questions do they ask before contacting you?&lt;/li&gt;
&lt;li&gt;Which pages answer those questions directly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Map those questions to pages first. A keyword list tells you what people type. Your page map tells you where each answer lives on your site.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plan your URL structure early
&lt;/h3&gt;

&lt;p&gt;URL slugs should be clean, descriptive, and final before development starts. Changing URLs after launch means setting up 301 redirects, updating internal links, and risking ranking drops during the transition. Get them right the first time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Think about conversion paths, not just content
&lt;/h3&gt;

&lt;p&gt;Every key page should have a clear next step. Where does a visitor go after reading your services page? Is there a logical path from a blog post to a contact form? Dead ends hurt both UX and SEO. Plan the internal linking structure alongside the content map.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 2: Build with crawlability and structure in mind
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Get robots.txt right from the start
&lt;/h3&gt;

&lt;p&gt;A clean &lt;code&gt;robots.txt&lt;/code&gt; should allow all important pages and block only what you intend: admin panels, staging environments, and duplicate filter URLs. Run a crawl on staging using Screaming Frog or Ahrefs before launch to catch anything that got accidentally blocked.&lt;/p&gt;

&lt;p&gt;Also check your &lt;code&gt;robots.txt&lt;/code&gt; to make sure important AI crawlers are not blocked. These entries are commonly allowed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt;-agent: GPTBot
&lt;span class="nc"&gt;Allow&lt;/span&gt;: /

&lt;span class="nc"&gt;User&lt;/span&gt;-agent: PerplexityBot
&lt;span class="nc"&gt;Allow&lt;/span&gt;: /

&lt;span class="nc"&gt;User&lt;/span&gt;-agent: Google-Extended
&lt;span class="nc"&gt;Allow&lt;/span&gt;: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your site is client-side rendered (Next.js without SSR, plain React), these bots often see a blank page. Consider server-side rendering or static generation for content-heavy routes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Every template ships with metadata and one H1
&lt;/h3&gt;

&lt;p&gt;Do not hand-tune metadata page by page after launch. Set the pattern at the template level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A unique, descriptive &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;meta description&amp;gt;&lt;/code&gt; on every template&lt;/li&gt;
&lt;li&gt;One &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; per page that matches the page intent&lt;/li&gt;
&lt;li&gt;Logical &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt; structure below it&lt;/li&gt;
&lt;li&gt;Internal links to related services, proof pages, and contact where they help the reader&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consistent patterns across templates scale better than perfecting one page at a time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add structured data where it actually matches your content
&lt;/h3&gt;

&lt;p&gt;Useful schema types for most business and dev-focused sites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Organization&lt;/code&gt;: name, logo, contact details, social profiles&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Service&lt;/code&gt;: what you offer and who it is for&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FAQPage&lt;/code&gt;: common questions with direct answers (AI tools like Perplexity and ChatGPT pull from this heavily)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;BreadcrumbList&lt;/code&gt;: helps search engines understand your site hierarchy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only mark up content that actually exists on the page. Do not add schema just to have it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Put FAQ blocks on key pages
&lt;/h3&gt;

&lt;p&gt;Clear question-and-answer blocks near the bottom of service and landing pages do two things: they answer real buyer questions, and they feed structured data that AI tools cite when users search for services like yours.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 3: Performance and trust signals before go-live
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core Web Vitals on your primary templates
&lt;/h3&gt;

&lt;p&gt;Test LCP, INP, and CLS on mobile for your homepage, service pages, and contact page before launch. The usual culprits on business sites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uncompressed hero images (serve WebP, compress to under 200KB)&lt;/li&gt;
&lt;li&gt;Render-blocking fonts&lt;/li&gt;
&lt;li&gt;Tag managers and chat widgets loaded in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Layout shifts from embeds or ads loading late&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run Lighthouse on staging. Do not wait for real traffic to discover a 4MB hero image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile layout and clear next steps
&lt;/h3&gt;

&lt;p&gt;Most B2B research starts on a phone, even when the deal closes on desktop. Check tap targets, readable body text, form usability, and focus states. Every service page should make the next action obvious.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up Search Console and Analytics before launch
&lt;/h3&gt;

&lt;p&gt;This is one step many teams overlook. Set up Google Search Console, verify ownership, and prepare your sitemap before launch so you can submit it as soon as the production site goes live. This helps search engines discover and crawl your website sooner after launch.&lt;/p&gt;

&lt;p&gt;Test that Analytics events fire correctly on staging too. A site that launches with broken event tracking is flying blind from the start.&lt;/p&gt;




&lt;h2&gt;
  
  
  The pre-launch checklist
&lt;/h2&gt;

&lt;p&gt;Before hitting publish on any new site, run through this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Search Console verified, sitemap submitted&lt;/li&gt;
&lt;li&gt;[ ] Analytics tested on staging, events firing correctly&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;robots.txt&lt;/code&gt; reviewed, nothing important blocked, AI crawlers allowed&lt;/li&gt;
&lt;li&gt;[ ] All templates have unique title tags and meta descriptions&lt;/li&gt;
&lt;li&gt;[ ] One &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; per page, logical heading structure below it&lt;/li&gt;
&lt;li&gt;[ ] Schema markup added for Organization, Service, FAQ where relevant&lt;/li&gt;
&lt;li&gt;[ ] Core Web Vitals passing on mobile (Lighthouse score)&lt;/li&gt;
&lt;li&gt;[ ] Internal links connecting key pages and guiding to next steps&lt;/li&gt;
&lt;li&gt;[ ] URL slugs finalized and clean&lt;/li&gt;
&lt;li&gt;[ ] FAQ blocks on key service pages&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When does SEO get complicated enough to need a specialist?
&lt;/h2&gt;

&lt;p&gt;For most straightforward marketing sites, a developer who understands the above can cover the technical foundations. You may want dedicated SEO support when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your stack is JavaScript-heavy and rendering behavior is unclear&lt;/li&gt;
&lt;li&gt;You have a complex information architecture with hundreds of pages&lt;/li&gt;
&lt;li&gt;You are launching in a competitive niche where content strategy matters from day one&lt;/li&gt;
&lt;li&gt;The timeline is tight and there is no room to fix crawl issues after launch&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  One thing worth knowing
&lt;/h2&gt;

&lt;p&gt;Fixing SEO after launch is absolutely possible. But the teams that get organic visibility fastest are the ones that treated plan, build, and measure as build-week decisions rather than a follow-up task.&lt;/p&gt;

&lt;p&gt;If you want a deeper breakdown of how this works in practice, this &lt;a href="https://spice-factory.ph/news/how-to-build-a-seo-ready-website-before-launch" rel="noopener noreferrer"&gt;pre-launch SEO guide for new websites&lt;/a&gt; covers the full process including the planning phase most developers skip entirely.&lt;/p&gt;

&lt;p&gt;What did your last launch get right on the SEO side? Drop it in the comments.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>6 Things We Learned the Hard Way About Laravel Performance in Real Projects</title>
      <dc:creator>Jasmine Dueñas</dc:creator>
      <pubDate>Tue, 05 May 2026 05:36:24 +0000</pubDate>
      <link>https://dev.to/jas_duenas/6-things-we-learned-the-hard-way-about-laravel-performance-in-real-projects-43b8</link>
      <guid>https://dev.to/jas_duenas/6-things-we-learned-the-hard-way-about-laravel-performance-in-real-projects-43b8</guid>
      <description>&lt;p&gt;In this article, I'll share six Laravel performance lessons we learned from building real client systems, including how Eloquent queries, caching, code structure, deadlines, and communication affected the way we build and maintain applications.&lt;/p&gt;

&lt;p&gt;We didn't notice anything wrong at first.&lt;/p&gt;

&lt;p&gt;The app worked, responses were fine, and everything looked clean during development.&lt;/p&gt;

&lt;p&gt;Then real users started using it every day.&lt;/p&gt;

&lt;p&gt;APIs slowed down, dashboards took longer to load, and small inefficiencies started to add up.&lt;/p&gt;

&lt;p&gt;That's when we realized most of the issues were not infrastructure related. They were coming from how we were building things in Laravel.&lt;/p&gt;

&lt;p&gt;I've been working on Laravel projects with a small team at &lt;a href="https://spice-factory.ph/" rel="noopener noreferrer"&gt;Spice Factory Philippines&lt;/a&gt;, mostly working with companies that rely on these systems for daily operations, and these are some of the things we learned the hard way.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Eloquent is easy to use, but also easy to abuse
&lt;/h2&gt;

&lt;p&gt;Eloquent makes it very easy to move fast, especially early on.&lt;/p&gt;

&lt;p&gt;The problem is, it also makes it easy to ignore what's happening underneath.&lt;/p&gt;

&lt;p&gt;We ran into cases where endpoints were slower than expected because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;relationships being loaded inside loops&lt;/li&gt;
&lt;li&gt;too many queries being executed&lt;/li&gt;
&lt;li&gt;returning more data than needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fixing it wasn't complicated. Just being more intentional with queries already helped.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'roles'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Once we started checking queries more carefully, performance improved right away.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Most slow APIs are not infrastructure problems
&lt;/h2&gt;

&lt;p&gt;At one point, we thought we needed to upgrade servers.&lt;/p&gt;

&lt;p&gt;It turned out the issue was in our own code.&lt;/p&gt;

&lt;p&gt;Some of the common problems we saw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;missing database indexes&lt;/li&gt;
&lt;li&gt;repeated queries for the same data&lt;/li&gt;
&lt;li&gt;unnecessary data being fetched&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After cleaning those up, response times improved without changing infrastructure.&lt;/p&gt;

&lt;p&gt;That was a good reminder that optimization usually starts at the application level.&lt;/p&gt;


&lt;h2&gt;
  
  
  3. Caching felt optional until it wasn't
&lt;/h2&gt;

&lt;p&gt;During development, everything worked fine without caching.&lt;/p&gt;

&lt;p&gt;Once real usage kicked in, especially on dashboards and reports, the difference became obvious.&lt;/p&gt;

&lt;p&gt;We started adding caching in places where data didn't need to be recalculated every time.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Cache&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;remember&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'dashboard_stats'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&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="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getStats&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;Even simple caching made a noticeable impact on performance and reduced database load.&lt;/p&gt;


&lt;h2&gt;
  
  
  4. Structure matters when the project grows
&lt;/h2&gt;

&lt;p&gt;For smaller features, putting logic in controllers worked fine.&lt;/p&gt;

&lt;p&gt;As the system grew, it became harder to manage and reason about.&lt;/p&gt;

&lt;p&gt;We didn't do a full rewrite. It was more gradual.&lt;/p&gt;

&lt;p&gt;Whenever something started to feel messy, we moved logic into services or broke things into smaller pieces.&lt;/p&gt;

&lt;p&gt;That made the codebase easier to maintain, especially when multiple developers were working on it.&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Deadlines change how you think about "clean code"
&lt;/h2&gt;

&lt;p&gt;In personal projects, you can spend time getting everything just right.&lt;/p&gt;

&lt;p&gt;In client work, timelines are part of the equation.&lt;/p&gt;

&lt;p&gt;Sometimes the focus is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;getting something working&lt;/li&gt;
&lt;li&gt;making sure it's stable&lt;/li&gt;
&lt;li&gt;improving it later when there's time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You start thinking in terms of trade-offs instead of trying to make everything perfect from the start.&lt;/p&gt;


&lt;h2&gt;
  
  
  6. Communication saves more time than clever code
&lt;/h2&gt;

&lt;p&gt;One thing that made a bigger difference than expected was communication.&lt;/p&gt;

&lt;p&gt;A lot of issues we dealt with were not technical. They came from unclear requirements or assumptions.&lt;/p&gt;

&lt;p&gt;Taking time to clarify things early helped avoid rework later.&lt;/p&gt;

&lt;p&gt;In many cases, being clear saved more time than trying to come up with a more complex solution.&lt;/p&gt;


&lt;h2&gt;
  
  
  What we learned from all this
&lt;/h2&gt;

&lt;p&gt;Working on real client systems changed how we approach Laravel projects.&lt;/p&gt;

&lt;p&gt;You start paying attention to things that don't always show up in tutorials like performance, structure, and communication.&lt;/p&gt;

&lt;p&gt;We're still figuring things out as we go, but these are the ones that made the biggest difference so far.&lt;/p&gt;

&lt;p&gt;If you're working on similar projects, curious what things stood out for you once you moved from tutorials to real systems.&lt;/p&gt;

&lt;p&gt;If you're curious how we approach building and maintaining systems for real-world use, you can check what we do here:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://spice-factory.ph/service" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fproduction-os-assets%2Fassets%2F44936b4a-dc14-43ec-b7e4-803d26f72725" height="400" class="m-0" width="400"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://spice-factory.ph/service" rel="noopener noreferrer" class="c-link"&gt;
            Web, System &amp;amp; Mobile Development | Spice Factory PH
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Web development, mobile apps, and custom systems from strategy to launch. Agile delivery with modern stacks and engineer-led collaboration.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fproduction-os-assets%2Fassets%2Feb710e7f-2ee8-45d6-8d12-7d599c22f0dd" width="192" height="192"&gt;
          spice-factory.ph
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>laravel</category>
      <category>php</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
