What's new on KeyAway

Last updated: August 3, 2026

Release notes for major features, improvements, and fixes shipped to KeyAway.

Platform release history

Catalog activity feed →

May 2026

  1. ·PR #108

    perf: decrease ISR writes with 12h public revalidation

    perffix

    Cuts ISR write volume and aligns public revalidation to 12 hours so homepage stats and featured content stop forcing excessive rebuilds.

    Highlights

    • Public ISR revalidate raised to 12 hours across key routes
    • Homepage stats and featured blocks no longer trigger forced revalidation churn
    • Programs list and visitor context APIs aligned with shared revalidate constant

    Performance

    • sitemap, program pages, programs index, and homepage share consistent ISR seconds
    • build-safe integer revalidate values across layout and pages
  2. ·PR #107

    perf: cut fluid active cpu with program stats rollup and static /programs

    perfapienhancerefactor

    Reduces Vercel Fluid Active CPU by storing analytics counts on program documents, serving /programs as a static shell with a cached list API, and tightening admin polling.

    Highlights

    • Program view/download stats roll up onto Sanity program docs
    • /programs static shell with cached GET /api/v1/programs/list
    • Admin key-report notifications cached with lighter GROQ and tab-scoped polling

    Performance

    • Homepage, featured program, and programs listing read stored stats — no multi-MB bundle fetch per render
    • Public ISR fallback revalidate raised to 3600s; webhook tag bust unchanged
    • Analytics track uses cached slug inventory instead of per-hit Sanity lookups

    Admin & security

    • Manual update-expired-keys cron requires admin session or cron auth
    • Removed unused x-update-keys proxy hook
    • SortableTableHead tone=light for dark program key table headers
  3. ·PR #106

    feat: trust transparency, native comments, and partner-ready program UX

    featuiapi

    Makes KeyAway partnership-ready with legal/trust pages, honest key-listing copy, and a first-party comment system replacing Giscus. Adds admin moderation, affiliate PRO CTAs, and clearer program-page focus on keys and activation info.

    Highlights

    • Trust and legal pages with footer trust column and updated site copy
    • Native program comments with moderation, replies, and admin tools
    • Affiliate PRO CTA below keys table with click analytics

    Trust & legal

    • /how-it-works, /about, /affiliate-disclosure, /verification-policy, /dmca, /partners
    • sitemap, llms.txt, security.txt updates

    Community

    • Embedded programComments on programs; public form with emoji, profanity/honeypot/rate limits, spammer block
    • One-level replies; hero jump-to-comments with count
    • Admin /admin/comments table with filters, details modal, delete confirm, mark spammer
    • Staff posts as KeyAway when signed in

    Program page

    • Compact KeySourcePanel with mixed-source disclaimer
    • AffiliateProCta below keys table; giscus removed and CSP updated
    • Sanity collapsible affiliatePro under description
  4. ·PR #105

    perf(admin): paginated events, analytics summary, and 120s cache

    perffeatapi

    Fixes slow admin events and analytics after bundle retention by paginating server-side loads, slimming GROQ, caching merged data (~120s), and adding program version editing in the admin modal.

    Highlights

    • Paginated admin events API with 120s merge cache and refresh bypass
    • Analytics summary dashboard without shipping full event arrays to the browser
    • Program version (latestOfficialVersion) editable in admin program modal

    Admin performance

    • Slim singular/bundle queries and shared mergeTrackingEventsForRange
    • Batched enrichEventsWithVisitorMeta without per-event GROQ subqueries
    • GET /api/v1/admin/events: since/until, pagination, countsByEvent
    • GET /api/v1/admin/analytics/summary with server aggregates + 10 enriched recent rows
    • TimeFilter All time link and optional header refresh button
  5. ·PR #104

    feat: visitor bundling, shorter retention, and homepage popular sort fix

    featperfapi

    Reduces Sanity document growth by bundling inactive visitors and tightening analytics retention, while fixing homepage most popular to use the same post-merge sort as /programs.

    Highlights

    • Daily visitor bundling cron archives inactive visitors into bundles
    • Analytics retention shortened from 7 to 2 days with higher bundle throughput
    • Homepage popular sort matches /programs after mergeProgramStats

    Data & analytics

    • New visitorBundle and bundledVisitor Sanity types with runBundleVisitors cron
    • Unified fetchVisitorByHash across live and archived records
    • Spammer checks include bundled visitor hashes
  6. ·PR #100

    ui: complete redesign, isr performance, and analytics hardening

    uiperffixenhancerefactor

    Redesigns the public site with a cohesive dark theme while cutting Vercel Fluid CPU via ISR/static shells and tightening analytics so bots and social previews no longer pollute admin events.

    Highlights

    • Full public UI redesign: home, programs, program detail, legal pages, header/footer
    • ISR 300s with static program pages and cached programs list
    • Bot and social-preview blocking on page_viewed analytics

    UI

    • Restyled keys table, FAQ, comments, related programs, 404/error
    • ProgramsFilter commits search on Enter; debounced search scrolls only on pagination
    • Fixed views/downloads/popularity sort on programs catalog
    • EnumeratedSectionHeading on privacy/terms; admin pagination light/dark tones

    Performance & analytics

    • Root layout no longer forces dynamic via headers()
    • unstable_cache for programs list; lighter GROQ stats projection
    • Speed Insights/Analytics sampling with route filters
    • Client visitor context API for spammer UI on program pages
  7. ·PR #96

    feat: cache revalidation, slim notification feed, remove interaction buckets

    featperfapirefactor

    Tightens cache invalidation around public pages, replaces expensive notification GROQ with a singleton feed, removes interaction-bucket pipeline, and fixes embedded Studio for Next 16 / React 19.

    Highlights

    • Centralized cache tags and 120s ISR with webhook-driven revalidation
    • Header notifications read capped siteNotificationFeed document
    • Embedded /studio loads without window is not defined SSR errors

    Caching & notifications

    • revalidateAfterProgramContentWrite busts store, listings, homepage, featured, per-slug tags
    • rebuildSiteNotificationFeed after program/cdKey mutations
    • GET /api/v1/notifications/recent uses unstable_cache on feed tag
    • Removed client localStorage shortcut for bell list

    Cleanup & platform

    • Removed interactionEventBucket schema, /interactions/track, admin interactions UI
    • prune-cron-runs cron for old cronRun docs
    • Next 16.2.4, React 19.2.5, deferred StudioEmbedded import for Turbopack

For day-to-day listings and key drops, see Updates.