DashForDevsDocs
DocsNewsAPI v1
dashfordevs.comSign in

© 2026 DashForDevs

DocsNewsdashfordevs.comLegalStatus
DocsRecipesBuild a Blog
Introduction
Getting Started
Authentication
Products
Categories
Cart
Checkout
Blog
Reviews
Webhooks
Customers
Orders
Inventory
Shipping
Discounts
Affiliates
Email
Media & Files
Analytics & Tracking
Locations
Tax
Global Data
SEO
Error Handling
Geography
Finance
Automations
Page Types
Surveys
Billing & Subscriptions
Storefront Payments
SDK Reference
REST API
Storefront Architecture
Notifications
Security
Team & Permissions
Migrations & Import
Calendar & Appointments
Contact Forms
AI Bots
Dashboard API
Deployment
Changelog
Troubleshooting
Recipes
Build a Product PageBuild a Cart DrawerBuild a Checkout FlowAdd SearchBuild a BlogAffiliate Landing PageCustomer Account PageWholesale Storefront
CLI & Deployment
Image Pipeline
White-label Platforms
Records Engine
Platform Modules
Platform Security
Site Keys & Client Sites
Use Cases
Operations

Build a Blog

Render blog posts with rich content and SEO.

Updated March 29, 2026

On this page
  • Build a Blog
  • Related

Build a Blog

typescript
// app/blog/page.tsx
import dash from "@/lib/dash"

export default async function BlogPage() {
  const [{ posts }, { categories }] = await Promise.all([
    dash.blog.list({ limit: 12 }),
    dash.blog.listCategories(),
  ])

  return (
    <div>
      <h1>Blog</h1>
      <div className="flex gap-2 mb-6">
        {categories.map(cat => (
          <a key={cat.id} href={`/blog?category=${cat.slug}`}>{cat.name}</a>
        ))}
      </div>
      <div className="grid md:grid-cols-3 gap-6">
        {posts.map(post => (
          <a key={post.id} href={`/blog/${post.slug}`}>
            <img src={post.featured_image} alt={post.title} />
            <h2>{post.title}</h2>
            <p>{post.excerpt}</p>
          </a>
        ))}
      </div>
    </div>
  )
}

Related

  • List Posts
  • Get Post by Slug
  • Blog SEO
PreviousAdd SearchNextAffiliate Landing Page

On this page

  • Build a Blog
  • Related