sima-page-structure

Structure React listing pages with Suspense, loading states, and modular content components.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/RosenGray/sima --skill sima-page-structure
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: sima-page-structure
Source: https://github.com/RosenGray/sima/tree/main/.cursor/skills/sima-page-structure
Command: npx skills add https://github.com/RosenGray/sima --skill sima-page-structure

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill provides a clear blueprint for structuring listing pages using React Suspense, dedicated loading states, and modular content components to improve performance and UX.

Core Features & Use Cases

  • Structured Main Page: Defines server components for extracting search params, filtering, sorting, and pagination with a Suspense wrapper.
  • Content Component Pattern: Separates data fetching and rendering into a dedicated {Entity}Content component, driven by a generic filters, currentPage, and sort props.
  • Loading Skeletons: Guides to implement a loading component that mirrors the real content layout for smooth feedback.
  • Pagination & Styling: Establishes a fixed bottom pagination wrapper and reusable page styling for consistency across entities.

Quick Start

Start by aligning your project structure to the described layout under app/(public)/{category}/{entity}/ and implementing the components and styles as outlined.

Frequently Asked Questions about sima-page-structure

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure a React listing page with Suspense and server components?

Structure a React listing page by using server components to extract search params, handle filtering and sorting, and wrap content in a Suspense boundary for loading states. Separate data fetching into a dedicated content component driven by generic filter and pagination props.

How do I handle loading states and pagination in React server components?

Handle loading states and pagination by implementing a loading component that mirrors the actual content layout as a skeleton. Apply a fixed bottom pagination wrapper and use Suspense keys to ensure consistent behavior when search params change.

What is the best way to extract search params and fetch data in a Next.js listing page?

Extract search params directly within the main page server component, then pass generic filter, sort, and currentPage props to a dedicated content component. This content component uses repository patterns to fetch and render data consistently.

Can I use this React Suspense page structure for different listing categories like vehicles or services?

Yes, this structure applies to various listing pages like /vehicles/cars or /professional-service. It enforces reusable page styling, modular content components, and consistent pagination conventions across different entities.

Why does my React Suspense boundary not update when search filters change?

Suspense boundaries may not update when filters change if they lack proper Suspense keys. Assigning a unique key based on current search params ensures the boundary resets loading states and fetches fresh data correctly.

How do I separate data fetching from rendering in React server components?

Separate data fetching by creating a dedicated content component that receives generic props like filters, currentPage, and sort. The main page component handles param extraction and Suspense wrapping, while the content component manages repository data fetching.