json-schema-org / json-schema-org/website

Optimize blog post loading with asynchronous file I/O in getStaticProps.

Open Beginner friendly
#1,907 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Status: Triage
Dominant language
HTML
Stars
169
Forks
484
Avg merge
2d 2h
Merged PRs (30d)
6

Description

Currently, the blog post data is being read synchronously inside getStaticProps like this:
In Community index.page.tsx file:

Image

This synchronous file reading blocks the event loop and slows down the static generation process, especially when there are multiple markdown files.

Proposed Solution:
Use asynchronous file operations and parallelize them with Promise.all to improve performance and scalability.

const files = await fs.promises.readdir(PATH);
const markdownFiles = files.filter((f) => f.endsWith('.md'));
const blogPosts = await Promise.all(
markdownFiles.map(async (fileName) => {
const slug = fileName.replace('.md', '');
const fullFileName = await fs.promises.readFile(${PATH}/${slug}.md, 'utf-8');
const { data: frontmatter, content } = matter(fullFileName);
return { slug, frontmatter, content };
})
);

This approach ensures faster build times and non-blocking I/O operations.

Please assign this issue to me, I’d like to refactor this logic to use asynchronous file reading for better performance and maintainability. @Utkarsh-123github @vtushar06

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in the Community index.page.tsx file and inspect how blog post markdown files are currently read inside getStaticProps. Replace the synchronous directory and file reads with the proposed asynchronous flow, then verify that all posts and frontmatter still load correctly during static generation.

Written by the indexing model from the issue text.

Assessment

Tech stack
next.js, node.js, typescript
Domain
build-system, performance, web-dev
Issue type
Refactor
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.