# Content includes freshness signals

- **Pattern:** `ab-001738` (`marketing-content-quality.content-completeness.content-freshness-signals`)
- **Severity:** info
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001738
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001738)

## Why it matters

Visitors use freshness signals as proxies for whether the product is actively maintained and whether the company is still operating. A footer copyright year that reads "© 2022" in 2026 is a four-year-old stale signal that the site has not been touched. For any product that is software — where bugs get fixed, features get added, and security matters — an outdated copyright year creates doubt about whether the company is still around. This is especially problematic for AI-built projects where the site may have been generated and deployed once, then not updated. The fix is one line of code. Blog post dates that are 18+ months old similarly signal abandonment to visitors who value recency of information.

## Severity rationale

Info because an outdated copyright year or stale content signals possible abandonment without causing direct product harm — a trust signal deficit rather than a functional defect.

## Remediation

Make the copyright year dynamic so it updates automatically each year without a code change:

```tsx
// components/Footer.tsx — dynamic copyright year
export function Footer() {
  return (
    <footer>
      <p>© {new Date().getFullYear()} YourCompany. All rights reserved.</p>
    </footer>
  )
}
```

Find the current static copyright year in your footer component (search for the 4-digit year in `components/Footer.tsx` or `app/layout.tsx`) and replace the hardcoded year with `{new Date().getFullYear()}`.

For blog freshness: if the most recent post is more than 12 months old and you have no content planned, consider removing the blog listing from the main navigation rather than leaving a visibly stale blog as a trust signal. A blog that looks abandoned is worse than no blog. If content is planned, even one new post per quarter is enough to maintain freshness signals.

## Detection

- **ID:** `content-freshness-signals`
- **Severity:** `info`
- **What to look for:** Count all relevant instances and enumerate each. Look for signals that the content is current: blog post dates (are the most recent posts within 12 months?), a copyright year in the footer (is it the current year?), product version numbers referenced in copy, or "Last updated" timestamps on docs pages. Check the footer for a static copyright year that would be out of date.
- **Pass criteria:** At least one of the following is true: the footer copyright year matches the current year, recent blog posts are dated within 12 months, or "Last updated" dates on docs pages are within 12 months. At least 1 implementation must be verified.
- **Fail criteria:** The footer shows a static copyright year that is 2 or more years behind the current year, AND no other freshness signals exist (no recent blog posts, no updated timestamps).
- **Skip (N/A) when:** No content elements with dates are present (no footer copyright year, no blog, no dated docs). Signal: none of the above elements found in any component.
- **Detail on fail:** Note specifically what was found. Example: `"Footer copyright shows '© 2022' — 3 years out of date and no other freshness signals present"` or `"Most recent blog post is dated 18 months ago with no other freshness indicators"`
- **Remediation:** An outdated copyright year or stale content signals abandonment. Visitors use these as trust signals.

  For the copyright year: make it dynamic rather than static:

  ```tsx
  // In your footer component:
  <p>© {new Date().getFullYear()} YourCompany</p>
  ```

  For the blog: even one new post per quarter is better than no posts. If content freshness is not a priority, remove the blog entirely rather than leave stale dated content visible.

Taxons: content-integrity

HTML version: https://auditbuffet.com/patterns/ab-001738
