json-schema-org / json-schema-org/website
Optimize blog post loading with asynchronous file I/O in getStaticProps.
Nobody has claimed this yet.
- 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:
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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