<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>OurJS — Nayan Kumar’s Engineering Journal</title>
<link>https://ourjs.in/blog/</link>
<description>Practical notes on frontend engineering, accessibility, SEO and dependable software delivery by Nayan Kumar.</description>
<language>en</language>
<atom:link href="https://ourjs.in/feed.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>Mon, 26 Oct 2026 00:00:00 GMT</lastBuildDate>
<item>
<title>A Frontend Release Checklist That Checks the Actual User Journey</title>
<link>https://ourjs.in/blog/frontend-release-checklist/</link>
<guid isPermaLink="true">https://ourjs.in/blog/frontend-release-checklist/</guid>
<description>Review content, navigation, responsiveness, metadata and the deployed artifact without confusing a green build with a finished release.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>A Technical SEO Page Audit You Can Repeat Before Every Release</title>
<link>https://ourjs.in/blog/technical-seo-page-audit/</link>
<guid isPermaLink="true">https://ourjs.in/blog/technical-seo-page-audit/</guid>
<description>Inspect the response, visible content, metadata, links and indexing signals with a small, repeatable page-level audit.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Accessible Dialog Focus: Open, Close and Return Predictably</title>
<link>https://ourjs.in/blog/accessible-dialog-focus/</link>
<guid isPermaLink="true">https://ourjs.in/blog/accessible-dialog-focus/</guid>
<description>Plan focus behavior for modal dialogs using native HTML capabilities and a clear dismissal path.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Accessible Form Labels: Clear Names for Every Field</title>
<link>https://ourjs.in/blog/accessible-form-labels/</link>
<guid isPermaLink="true">https://ourjs.in/blog/accessible-form-labels/</guid>
<description>Connect visible labels to inputs, preserve useful hints, and avoid forms that depend on placeholders.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Accessible SVG Icons: Decorative Shapes and Meaningful Controls</title>
<link>https://ourjs.in/blog/accessible-svg-icons/</link>
<guid isPermaLink="true">https://ourjs.in/blog/accessible-svg-icons/</guid>
<description>Give icon-only actions a clear name and prevent decorative SVGs from adding repetitive screen reader output.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Add a Skip Link That Actually Reaches the Main Content</title>
<link>https://ourjs.in/blog/skip-link-implementation/</link>
<guid isPermaLink="true">https://ourjs.in/blog/skip-link-implementation/</guid>
<description>Let keyboard users bypass repeated navigation with a visible, reliable link to the page’s main content.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Add Parallax Depth Without Taking Over the Reader’s Scroll</title>
<link>https://ourjs.in/blog/parallax-without-scroll-hijacking/</link>
<guid isPermaLink="true">https://ourjs.in/blog/parallax-without-scroll-hijacking/</guid>
<description>Keep ordinary scrolling intact while giving decorative layers a restrained sense of depth.</description>
<category>Animation</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Angular Signals: Keep Source State and Derived Values Separate</title>
<link>https://ourjs.in/blog/angular-signals-basics/</link>
<guid isPermaLink="true">https://ourjs.in/blog/angular-signals-basics/</guid>
<description>Use writable signals and computed values to express small, understandable reactive relationships.</description>
<category>Angular</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Article Structured Data Should Describe What Readers Can Verify</title>
<link>https://ourjs.in/blog/article-structured-data/</link>
<guid isPermaLink="true">https://ourjs.in/blog/article-structured-data/</guid>
<description>Connect article titles, authors, publication dates and images to visible editorial facts instead of filling fields with guesses.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build a Simple FAQ Accordion with Details and Summary</title>
<link>https://ourjs.in/blog/details-summary-accordion/</link>
<guid isPermaLink="true">https://ourjs.in/blog/details-summary-accordion/</guid>
<description>Use native disclosure elements for compact supporting content without hiding the page’s main answer.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build Accessible React Components from Native HTML</title>
<link>https://ourjs.in/blog/react-accessible-components/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-accessible-components/</guid>
<description>Preserve labels, keyboard behavior and predictable IDs as interfaces become reusable components.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build an Accessible Heading Structure Before Styling Your Page</title>
<link>https://ourjs.in/blog/accessible-heading-structure/</link>
<guid isPermaLink="true">https://ourjs.in/blog/accessible-heading-structure/</guid>
<description>Plan headings as a readable outline, then style their appearance independently from their document level.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build and Read Query Strings with URLSearchParams</title>
<link>https://ourjs.in/blog/url-search-params/</link>
<guid isPermaLink="true">https://ourjs.in/blog/url-search-params/</guid>
<description>Handle repeated parameters, encoding and filter state with an explicit query-string contract.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build Breadcrumbs That Help Visitors Before Adding JSON-LD</title>
<link>https://ourjs.in/blog/breadcrumb-structured-data/</link>
<guid isPermaLink="true">https://ourjs.in/blog/breadcrumb-structured-data/</guid>
<description>Keep visible hierarchy, linked destinations and BreadcrumbList data in agreement across a growing site.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build Controlled React Forms Without Fighting the Browser</title>
<link>https://ourjs.in/blog/react-controlled-forms/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-controlled-forms/</guid>
<description>Keep field state, validation timing and native form behavior aligned for predictable data entry.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build Reusable Components Around Behavior, Not Just Markup</title>
<link>https://ourjs.in/blog/reusable-component-contracts/</link>
<guid isPermaLink="true">https://ourjs.in/blog/reusable-component-contracts/</guid>
<description>Define ownership, events, accessibility and variation before turning repeated UI into an abstraction.</description>
<category>Frontend Engineering</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build Social Sharing Cards That Match the Page Being Shared</title>
<link>https://ourjs.in/blog/open-graph-social-cards/</link>
<guid isPermaLink="true">https://ourjs.in/blog/open-graph-social-cards/</guid>
<description>Keep Open Graph titles, image assets and canonical sharing URLs accurate across portfolio pages and articles.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Build Useful Tool Landing Pages Without Turning Them into Keyword Padding</title>
<link>https://ourjs.in/blog/seo-friendly-tool-pages/</link>
<guid isPermaLink="true">https://ourjs.in/blog/seo-friendly-tool-pages/</guid>
<description>Explain input, output, privacy, limitations and next steps so a tool page earns its own distinct place in a collection.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Button or Link? Choose HTML from the Interaction’s Purpose</title>
<link>https://ourjs.in/blog/button-vs-link-html/</link>
<guid isPermaLink="true">https://ourjs.in/blog/button-vs-link-html/</guid>
<description>Use links for destinations and buttons for actions so browser and keyboard behavior remain predictable.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Cancel Stale Fetch Requests with AbortController</title>
<link>https://ourjs.in/blog/fetch-abort-controller/</link>
<guid isPermaLink="true">https://ourjs.in/blog/fetch-abort-controller/</guid>
<description>Keep search results and navigation reliable by cancelling obsolete requests and ignoring outdated responses.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Canonical URL Mistakes That Hide Behind a Working Page</title>
<link>https://ourjs.in/blog/canonical-url-mistakes/</link>
<guid isPermaLink="true">https://ourjs.in/blog/canonical-url-mistakes/</guid>
<description>Find mismatched hosts, copied canonical tags and pagination mistakes before they become conflicting search signals.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Check Color Contrast in the Actual Interface, Not Just the Palette</title>
<link>https://ourjs.in/blog/color-contrast-checking/</link>
<guid isPermaLink="true">https://ourjs.in/blog/color-contrast-checking/</guid>
<description>Evaluate text and background pairs, account for real component states, and keep color from becoming the only signal.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Choose React List Keys That Preserve the Right Identity</title>
<link>https://ourjs.in/blog/react-list-keys/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-list-keys/</guid>
<description>Use stable record identity so filtering and reordering do not move input state to the wrong row.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Container Queries: Let Reusable Cards Adapt to Their Actual Space</title>
<link>https://ourjs.in/blog/container-query-components/</link>
<guid isPermaLink="true">https://ourjs.in/blog/container-query-components/</guid>
<description>Build components that respond to a sidebar or content column instead of assuming the viewport tells the whole story.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Create Internal Links Around the Reader’s Next Useful Question</title>
<link>https://ourjs.in/blog/internal-linking-topic-clusters/</link>
<guid isPermaLink="true">https://ourjs.in/blog/internal-linking-topic-clusters/</guid>
<description>Connect guides and tools with descriptive links that form useful paths rather than artificial keyword clusters.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Create Print Styles for Articles and Portfolio Pages</title>
<link>https://ourjs.in/blog/print-stylesheets/</link>
<guid isPermaLink="true">https://ourjs.in/blog/print-stylesheets/</guid>
<description>Make the browser’s print view useful by removing decorative motion and preserving the information someone wants to keep.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>CSS Logical Properties: Write Layout Rules Around Reading Direction</title>
<link>https://ourjs.in/blog/css-logical-properties/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-logical-properties/</guid>
<description>Use inline and block dimensions to make component spacing easier to adapt across writing directions.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Debounce vs Throttle for Real Interface Events</title>
<link>https://ourjs.in/blog/debounce-vs-throttle/</link>
<guid isPermaLink="true">https://ourjs.in/blog/debounce-vs-throttle/</guid>
<description>Choose the right event scheduling strategy for search, scroll feedback and responsive controls.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Debug Horizontal CSS Overflow Without Hiding the Evidence</title>
<link>https://ourjs.in/blog/css-overflow-debugging/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-overflow-debugging/</guid>
<description>Find the element that makes a page wider than its viewport and fix the actual sizing problem.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Deploy a Next.js Static Export Without Assuming a Node Server Exists</title>
<link>https://ourjs.in/blog/nextjs-static-export-hosting/</link>
<guid isPermaLink="true">https://ourjs.in/blog/nextjs-static-export-hosting/</guid>
<description>Plan routes, browser features and hosting behavior around the files produced by a static build.</description>
<category>Next.js</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Derive React Display Data Instead of Synchronizing Copies</title>
<link>https://ourjs.in/blog/react-derived-state/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-derived-state/</guid>
<description>Keep one source of truth for filters, totals and labels, reserving effects for external synchronization.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design a Frontend CI/CD Pipeline Around Evidence and One Artifact</title>
<link>https://ourjs.in/blog/cicd-build-test-deploy/</link>
<guid isPermaLink="true">https://ourjs.in/blog/cicd-build-test-deploy/</guid>
<description>Separate installation, validation, build, publication and post-deployment checks so release failures have a clear location.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design a Mobile Navigation Menu That Stays Easy to Use</title>
<link>https://ourjs.in/blog/mobile-navigation-design/</link>
<guid isPermaLink="true">https://ourjs.in/blog/mobile-navigation-design/</guid>
<description>Build a straightforward navigation disclosure with reliable focus, state and responsive behavior.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design Angular Component Inputs as Clear Public Contracts</title>
<link>https://ourjs.in/blog/angular-components-inputs/</link>
<guid isPermaLink="true">https://ourjs.in/blog/angular-components-inputs/</guid>
<description>Keep required values, defaults and parent-owned state explicit when building reusable Angular components.</description>
<category>Angular</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design API Loading, Empty and Error States Separately</title>
<link>https://ourjs.in/blog/frontend-api-error-states/</link>
<guid isPermaLink="true">https://ourjs.in/blog/frontend-api-error-states/</guid>
<description>Give each request outcome a truthful interface and make retries preserve the visitor’s work.</description>
<category>Frontend Engineering</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design CloudFront Cache Policies Around Response Variants</title>
<link>https://ourjs.in/blog/cloudfront-cache-policies/</link>
<guid isPermaLink="true">https://ourjs.in/blog/cloudfront-cache-policies/</guid>
<description>Choose cache-key inputs and time-to-live settings by asking which request differences actually change the response.</description>
<category>AWS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design Reduced-Motion Modes That Still Feel Complete</title>
<link>https://ourjs.in/blog/reduced-motion-design/</link>
<guid isPermaLink="true">https://ourjs.in/blog/reduced-motion-design/</guid>
<description>Keep content, hierarchy and feedback intact when people prefer less movement or switch animation off.</description>
<category>Animation</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design Subtle CSS Background Patterns Without Competing with Content</title>
<link>https://ourjs.in/blog/css-background-patterns/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-background-patterns/</guid>
<description>Use gradients for grids and stripes, control their visual weight, and keep decorative texture out of the reading path.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Design TypeScript Props Around Valid Component Usage</title>
<link>https://ourjs.in/blog/typescript-component-props/</link>
<guid isPermaLink="true">https://ourjs.in/blog/typescript-component-props/</guid>
<description>Write component contracts that explain required data, events and supported variations without boolean overload.</description>
<category>TypeScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Encode Unicode Text as Base64 Without Corrupting Characters</title>
<link>https://ourjs.in/blog/unicode-base64-text/</link>
<guid isPermaLink="true">https://ourjs.in/blog/unicode-base64-text/</guid>
<description>Separate text, UTF-8 bytes and Base64 representation when handling emoji and multilingual content.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Export Canvas Images with the Right Format and Dimensions</title>
<link>https://ourjs.in/blog/canvas-image-export/</link>
<guid isPermaLink="true">https://ourjs.in/blog/canvas-image-export/</guid>
<description>Handle image decoding, transparency, output MIME types and browser limits in a reliable canvas export.</description>
<category>Browser APIs</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Find the LCP Bottleneck Before Compressing the Hero Again</title>
<link>https://ourjs.in/blog/measure-lcp-bottlenecks/</link>
<guid isPermaLink="true">https://ourjs.in/blog/measure-lcp-bottlenecks/</guid>
<description>Separate response delay, resource discovery, download time and rendering work when investigating Largest Contentful Paint.</description>
<category>Performance</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Flexbox Wrapping for Toolbars, Tags and Button Groups</title>
<link>https://ourjs.in/blog/flexbox-wrapping-layouts/</link>
<guid isPermaLink="true">https://ourjs.in/blog/flexbox-wrapping-layouts/</guid>
<description>Use flexible wrapping to keep everyday interface groups usable when labels grow or space gets tight.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Fluid Typography with Clamp: Scale Headings Without Losing Control</title>
<link>https://ourjs.in/blog/fluid-type-clamp/</link>
<guid isPermaLink="true">https://ourjs.in/blog/fluid-type-clamp/</guid>
<description>Combine minimum, preferred and maximum font sizes while keeping long headings and text resizing usable.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Focus-Visible Styling That Fits Your Design and Remains Obvious</title>
<link>https://ourjs.in/blog/focus-visible-styling/</link>
<guid isPermaLink="true">https://ourjs.in/blog/focus-visible-styling/</guid>
<description>Give keyboard focus a consistent visual language across links, buttons, cards and form controls.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Format Dates Without Accidentally Changing the Day</title>
<link>https://ourjs.in/blog/date-timezone-formatting/</link>
<guid isPermaLink="true">https://ourjs.in/blog/date-timezone-formatting/</guid>
<description>Distinguish calendar dates from instants and make locale and time-zone decisions explicit.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Generate Browser Random Values Without Modulo Bias</title>
<link>https://ourjs.in/blog/crypto-random-values/</link>
<guid isPermaLink="true">https://ourjs.in/blog/crypto-random-values/</guid>
<description>Use Web Crypto carefully when mapping random bytes to password characters and other finite choices.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Generate Next.js Route Metadata from the Same Record as the Page</title>
<link>https://ourjs.in/blog/nextjs-route-metadata/</link>
<guid isPermaLink="true">https://ourjs.in/blog/nextjs-route-metadata/</guid>
<description>Prevent title, canonical and social-card mismatches when one route template renders many public pages.</description>
<category>Next.js</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Improve Interaction Responsiveness by Finding the Work Around a Click</title>
<link>https://ourjs.in/blog/reduce-inp-long-tasks/</link>
<guid isPermaLink="true">https://ourjs.in/blog/reduce-inp-long-tasks/</guid>
<description>Investigate input delay, event-handler work and rendering cost instead of assuming every slow interaction is a React rerender.</description>
<category>Performance</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Invalidate CDN Content Deliberately Instead of Purging Every Release</title>
<link>https://ourjs.in/blog/cdn-cache-invalidation/</link>
<guid isPermaLink="true">https://ourjs.in/blog/cdn-cache-invalidation/</guid>
<description>Choose versioned URLs, targeted invalidations and verification steps based on the content that actually changed.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>JSON Parsing Is Only the First Step of Validation</title>
<link>https://ourjs.in/blog/json-parse-validation/</link>
<guid isPermaLink="true">https://ourjs.in/blog/json-parse-validation/</guid>
<description>Separate valid JSON syntax from a safe, useful application data shape at import and API boundaries.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Keep Anchor Headings Visible Beneath a Sticky Header</title>
<link>https://ourjs.in/blog/sticky-header-anchor-offset/</link>
<guid isPermaLink="true">https://ourjs.in/blog/sticky-header-anchor-offset/</guid>
<description>Use scroll offsets and reliable target ids so table-of-contents links land where readers expect.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Keep Large Identifiers Safe in JavaScript</title>
<link>https://ourjs.in/blog/javascript-safe-integers/</link>
<guid isPermaLink="true">https://ourjs.in/blog/javascript-safe-integers/</guid>
<description>Recognize numeric precision limits and preserve identifiers through JSON, forms and table exports.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Keep Multiple Frontend Instances on a Coherent Release</title>
<link>https://ourjs.in/blog/consistent-multi-instance-releases/</link>
<guid isPermaLink="true">https://ourjs.in/blog/consistent-multi-instance-releases/</guid>
<description>Use immutable artifacts, release identifiers and compatibility windows to prevent intermittent mixed-version behavior.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Keep Useful Content Crawlable in a JavaScript-Enhanced Website</title>
<link>https://ourjs.in/blog/crawlable-javascript-content/</link>
<guid isPermaLink="true">https://ourjs.in/blog/crawlable-javascript-content/</guid>
<description>Separate the information a visitor needs from the JavaScript that powers filters, animations and interactive tools.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Keyboard-Friendly Navigation for a Personal Portfolio</title>
<link>https://ourjs.in/blog/keyboard-friendly-navigation/</link>
<guid isPermaLink="true">https://ourjs.in/blog/keyboard-friendly-navigation/</guid>
<description>Make the journey through menus, cards and contact controls work with Tab, Enter and a visible focus indicator.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Know Which Environment Variables Become Part of Your Frontend Build</title>
<link>https://ourjs.in/blog/deployment-environment-variables/</link>
<guid isPermaLink="true">https://ourjs.in/blog/deployment-environment-variables/</guid>
<description>Separate public configuration, server secrets and build-time values before promoting a browser bundle between environments.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Lazy-Load Below-the-Fold Images Without Delaying the Main Content</title>
<link>https://ourjs.in/blog/lazy-loading-below-fold/</link>
<guid isPermaLink="true">https://ourjs.in/blog/lazy-loading-below-fold/</guid>
<description>Choose loading priority based on where an image appears and preserve layout space while deferred images arrive.</description>
<category>Performance</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Maintain an XML Sitemap as a Map of Real Canonical Pages</title>
<link>https://ourjs.in/blog/xml-sitemap-maintenance/</link>
<guid isPermaLink="true">https://ourjs.in/blog/xml-sitemap-maintenance/</guid>
<description>Keep sitemap entries synchronized with published routes, accurate modification dates and your chosen public URLs.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Make a Large Article Archive Easy to Browse and Crawl</title>
<link>https://ourjs.in/blog/pagination-crawlable-archives/</link>
<guid isPermaLink="true">https://ourjs.in/blog/pagination-crawlable-archives/</guid>
<description>Combine stable archive URLs, useful page titles and ordinary navigation with optional search and load-more controls.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Manage File Preview URLs Without Memory Leaks</title>
<link>https://ourjs.in/blog/file-object-url-lifecycle/</link>
<guid isPermaLink="true">https://ourjs.in/blog/file-object-url-lifecycle/</guid>
<description>Create, replace and revoke object URLs at the right point in image preview and download workflows.</description>
<category>Browser APIs</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Model UI States with TypeScript Discriminated Unions</title>
<link>https://ourjs.in/blog/typescript-union-narrowing/</link>
<guid isPermaLink="true">https://ourjs.in/blog/typescript-union-narrowing/</guid>
<description>Replace conflicting booleans with explicit loading, success and error states that narrow safely.</description>
<category>TypeScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Optional Chaining and Nullish Defaults Without Hidden Bugs</title>
<link>https://ourjs.in/blog/optional-chaining-nullish/</link>
<guid isPermaLink="true">https://ourjs.in/blog/optional-chaining-nullish/</guid>
<description>Keep zero, false and empty text meaningful while safely reading genuinely optional values.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Organize Angular Reactive Forms Around the Data Model</title>
<link>https://ourjs.in/blog/angular-reactive-forms/</link>
<guid isPermaLink="true">https://ourjs.in/blog/angular-reactive-forms/</guid>
<description>Make controls, validation rules and submission state explicit in editable Angular workflows.</description>
<category>Angular</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Place Next.js Client Boundaries Around Interaction, Not Entire Pages</title>
<link>https://ourjs.in/blog/nextjs-server-client-boundaries/</link>
<guid isPermaLink="true">https://ourjs.in/blog/nextjs-server-client-boundaries/</guid>
<description>Keep content and metadata on the server side while giving stateful controls the browser capabilities they need.</description>
<category>Next.js</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Prepare a Static Website Rollback Before the Release Needs One</title>
<link>https://ourjs.in/blog/rollback-static-deployment/</link>
<guid isPermaLink="true">https://ourjs.in/blog/rollback-static-deployment/</guid>
<description>Retain complete artifacts and restore coherent document and asset versions instead of copying a few old files over a broken release.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Prevent Layout Shifts by Reserving the Space Your Content Will Need</title>
<link>https://ourjs.in/blog/prevent-layout-shifts/</link>
<guid isPermaLink="true">https://ourjs.in/blog/prevent-layout-shifts/</guid>
<description>Stabilize images, async messages, fonts and embeds so content does not move unexpectedly while someone reads or clicks.</description>
<category>Performance</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Profile React Rendering Before Adding Memoization</title>
<link>https://ourjs.in/blog/react-render-performance/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-render-performance/</guid>
<description>Investigate slow interactions by measuring render work, state placement and browser cost separately.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Progressive Enhancement: Keep Content Useful Before JavaScript Runs</title>
<link>https://ourjs.in/blog/progressive-enhancement-content/</link>
<guid isPermaLink="true">https://ourjs.in/blog/progressive-enhancement-content/</guid>
<description>Build readable pages first, then layer on filtering, animation and richer interactions without making the content depend on them.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Promise Error Handling That Keeps Failures Visible</title>
<link>https://ourjs.in/blog/promise-error-handling/</link>
<guid isPermaLink="true">https://ourjs.in/blog/promise-error-handling/</guid>
<description>Design promise chains with clear ownership of errors, honest UI feedback and reliable cleanup.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Publish a Static Website with Separate GitHub Actions Build and Deploy Jobs</title>
<link>https://ourjs.in/blog/github-actions-static-site/</link>
<guid isPermaLink="true">https://ourjs.in/blog/github-actions-static-site/</guid>
<description>Use an uploaded build artifact, explicit Pages permissions and a deployment dependency that preserves what was tested.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>React State vs Ref: Choose by What the Screen Must Show</title>
<link>https://ourjs.in/blog/react-state-vs-ref/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-state-vs-ref/</guid>
<description>Keep rendered information in state and operation handles in refs without hiding updates from the UI.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Reserve Image Space to Keep Page Layouts Stable</title>
<link>https://ourjs.in/blog/reserve-image-aspect-ratio/</link>
<guid isPermaLink="true">https://ourjs.in/blog/reserve-image-aspect-ratio/</guid>
<description>Give images a predictable footprint before they load so headings, buttons and paragraphs stay in place.</description>
<category>Images</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Responsive CSS Grid Cards Without a Breakpoint for Every Screen</title>
<link>https://ourjs.in/blog/css-grid-responsive-cards/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-grid-responsive-cards/</guid>
<description>Build a flexible project grid that adapts to its container and survives long titles, narrow screens and missing images.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Responsive Images: Choose Between Srcset, Sizes and Picture</title>
<link>https://ourjs.in/blog/responsive-picture-srcset/</link>
<guid isPermaLink="true">https://ourjs.in/blog/responsive-picture-srcset/</guid>
<description>Serve suitable image candidates and use art direction only when the composition needs to change.</description>
<category>Images</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Robots.txt and Noindex Solve Different Problems</title>
<link>https://ourjs.in/blog/robots-txt-vs-noindex/</link>
<guid isPermaLink="true">https://ourjs.in/blog/robots-txt-vs-noindex/</guid>
<description>Choose between crawling controls and indexing directives without accidentally preventing a crawler from reading your instruction.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Scroll Reveals with Intersection Observer and a Readable Baseline</title>
<link>https://ourjs.in/blog/intersection-observer-reveals/</link>
<guid isPermaLink="true">https://ourjs.in/blog/intersection-observer-reveals/</guid>
<description>Trigger section entrances near the viewport while keeping the document usable before scripts run.</description>
<category>Animation</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Semantic HTML Landmarks: Give Every Page a Clear Structure</title>
<link>https://ourjs.in/blog/semantic-html-landmarks/</link>
<guid isPermaLink="true">https://ourjs.in/blog/semantic-html-landmarks/</guid>
<description>Use native page regions to make a portfolio easier to navigate with assistive technology and easier to maintain.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Sequential or Parallel Async Work: Choose by Dependency</title>
<link>https://ourjs.in/blog/async-await-sequential-parallel/</link>
<guid isPermaLink="true">https://ourjs.in/blog/async-await-sequential-parallel/</guid>
<description>Use await, Promise.all and bounded concurrency according to data dependencies and failure requirements.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Set React Context Boundaries Around Real Shared State</title>
<link>https://ourjs.in/blog/react-context-boundaries/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-context-boundaries/</guid>
<description>Use context for shared dependencies without turning every local input into an application-wide update.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>The JavaScript Event Loop: Predicting What Runs Next</title>
<link>https://ourjs.in/blog/javascript-event-loop/</link>
<guid isPermaLink="true">https://ourjs.in/blog/javascript-event-loop/</guid>
<description>Trace synchronous code, promise callbacks and timers so browser interactions stay understandable and responsive.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Theme a Website with Semantic CSS Custom Properties</title>
<link>https://ourjs.in/blog/css-custom-properties-theming/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-custom-properties-theming/</guid>
<description>Create a small token system that lets branded pages and light product pages share components without a tangle of overrides.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Transform or Layout Animation? Choose the Property That Matches the Effect</title>
<link>https://ourjs.in/blog/css-transform-vs-layout-animation/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-transform-vs-layout-animation/</guid>
<description>Animate movement intentionally, understand what it changes, and verify performance instead of assuming every transition is cheap.</description>
<category>Animation</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Update JavaScript Arrays Without Mutating Shared State</title>
<link>https://ourjs.in/blog/immutable-array-updates/</link>
<guid isPermaLink="true">https://ourjs.in/blog/immutable-array-updates/</guid>
<description>Use deliberate copies for additions, removals, sorting and nested edits in frontend state.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Updated CSS Missing in Production? Trace the Bytes Before Clearing Caches</title>
<link>https://ourjs.in/blog/debug-stale-css-deployment/</link>
<guid isPermaLink="true">https://ourjs.in/blog/debug-stale-css-deployment/</guid>
<description>Follow the stylesheet request through the browser, CDN and deployed artifact to identify which layer is serving old content.</description>
<category>DevOps</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use Content-Hashed Assets Without Caching HTML into a Stale Release</title>
<link>https://ourjs.in/blog/content-hashed-asset-caching/</link>
<guid isPermaLink="true">https://ourjs.in/blog/content-hashed-asset-caching/</guid>
<description>Give immutable assets and frequently changing document pointers different cache policies.</description>
<category>Performance</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use Keyword Counts as an Editing Signal, Not a Content Strategy</title>
<link>https://ourjs.in/blog/content-quality-over-keyword-density/</link>
<guid isPermaLink="true">https://ourjs.in/blog/content-quality-over-keyword-density/</guid>
<description>Build useful technical articles around clear questions, accurate examples and maintained advice instead of repetition targets.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use Object-Fit to Crop Images Without Stretching Them</title>
<link>https://ourjs.in/blog/css-object-fit-cropping/</link>
<guid isPermaLink="true">https://ourjs.in/blog/css-object-fit-cropping/</guid>
<description>Choose between cover and contain, preserve the important subject, and recognize when a new source crop is necessary.</description>
<category>Images</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use Prefers-Color-Scheme Without Losing Explicit Theme Choices</title>
<link>https://ourjs.in/blog/prefers-color-scheme/</link>
<guid isPermaLink="true">https://ourjs.in/blog/prefers-color-scheme/</guid>
<description>Build a theme preference order that respects the system and keeps forms, text and embedded surfaces consistent.</description>
<category>CSS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use Regular Expressions for Focused Input Validation</title>
<link>https://ourjs.in/blog/regex-input-validation/</link>
<guid isPermaLink="true">https://ourjs.in/blog/regex-input-validation/</guid>
<description>Write small, testable patterns without treating a matching string as proof of a valid business operation.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use S3 as a Static Asset Origin with Explicit Access and Cache Decisions</title>
<link>https://ourjs.in/blog/aws-s3-static-assets/</link>
<guid isPermaLink="true">https://ourjs.in/blog/aws-s3-static-assets/</guid>
<description>Plan object paths, HTTPS delivery, access boundaries and metadata before treating an S3 bucket as a finished website host.</description>
<category>AWS</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Use unknown at Boundaries Instead of Spreading any</title>
<link>https://ourjs.in/blog/typescript-unknown-vs-any/</link>
<guid isPermaLink="true">https://ourjs.in/blog/typescript-unknown-vs-any/</guid>
<description>Validate external values and narrow errors so uncertainty stays at the edge of your application.</description>
<category>TypeScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Verify Brotli and Gzip Delivery Instead of Assuming Files Are Compressed</title>
<link>https://ourjs.in/blog/compression-brotli-gzip/</link>
<guid isPermaLink="true">https://ourjs.in/blog/compression-brotli-gzip/</guid>
<description>Inspect negotiated encodings, response headers and transfer sizes when enabling text compression on a static site.</description>
<category>Performance</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>When to Use Map and Set in Frontend JavaScript</title>
<link>https://ourjs.in/blog/javascript-map-set-use-cases/</link>
<guid isPermaLink="true">https://ourjs.in/blog/javascript-map-set-use-cases/</guid>
<description>Choose collections for lookups and uniqueness without confusing object identity with value equality.</description>
<category>JavaScript</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Write Form Validation Errors That Help People Recover</title>
<link>https://ourjs.in/blog/form-validation-error-messages/</link>
<guid isPermaLink="true">https://ourjs.in/blog/form-validation-error-messages/</guid>
<description>Turn invalid form states into specific, accessible instructions instead of generic red outlines.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Write Image Alt Text Around Purpose, Not Keywords</title>
<link>https://ourjs.in/blog/image-alt-text/</link>
<guid isPermaLink="true">https://ourjs.in/blog/image-alt-text/</guid>
<description>Describe the information an image contributes and avoid repeating nearby text or decorating every picture with a caption.</description>
<category>Accessibility</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Write Meta Descriptions Around the Reader’s Next Decision</title>
<link>https://ourjs.in/blog/meta-description-writing/</link>
<guid isPermaLink="true">https://ourjs.in/blog/meta-description-writing/</guid>
<description>Turn a page summary into useful preview copy while keeping expectations about search snippets realistic.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Write React Effects with Symmetrical Cleanup</title>
<link>https://ourjs.in/blog/react-effect-cleanup/</link>
<guid isPermaLink="true">https://ourjs.in/blog/react-effect-cleanup/</guid>
<description>Manage event listeners, timers, observers and requests as owned resources rather than one-time setup rituals.</description>
<category>React</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Write Unique Page Titles That Explain the Page Before the Brand</title>
<link>https://ourjs.in/blog/unique-page-titles/</link>
<guid isPermaLink="true">https://ourjs.in/blog/unique-page-titles/</guid>
<description>Build useful title patterns for tools, articles and portfolio pages without repeating the same phrase everywhere.</description>
<category>SEO</category>
<pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>How to Compress Images Without Losing Visible Quality</title>
<link>https://ourjs.in/blog/compress-images-without-losing-quality/</link>
<guid isPermaLink="true">https://ourjs.in/blog/compress-images-without-losing-quality/</guid>
<description>Learn practical techniques for smaller images, faster pages and better Core Web Vitals.</description>
<category>Image Optimization</category>
<pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Next.js SEO Checklist for Fast, Discoverable Websites</title>
<link>https://ourjs.in/blog/nextjs-seo-checklist/</link>
<guid isPermaLink="true">https://ourjs.in/blog/nextjs-seo-checklist/</guid>
<description>A practical checklist for metadata, semantic HTML, sitemaps and crawlable pages.</description>
<category>Next.js</category>
<pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>WebP vs JPEG vs PNG: Which Image Format Should You Use?</title>
<link>https://ourjs.in/blog/webp-vs-jpeg-vs-png/</link>
<guid isPermaLink="true">https://ourjs.in/blog/webp-vs-jpeg-vs-png/</guid>
<description>Understand the tradeoffs between file size, transparency, compatibility and quality.</description>
<category>Web Performance</category>
<pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate>
</item>
<item>
<title>Core Web Vitals: A Practical Guide for Small Business Websites</title>
<link>https://ourjs.in/blog/core-web-vitals-guide/</link>
<guid isPermaLink="true">https://ourjs.in/blog/core-web-vitals-guide/</guid>
<description>Improve LCP, INP and CLS with targeted frontend changes.</description>
<category>SEO</category>
<pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
