Skip to content

Gatsby Integration

These instructions assume you’ve already created a JamComments account as well as a “site” within that account. If you haven’t, learn more about that process on the Getting Started page.

Installation & Configuration

Install the plugin by running npm install @jam-comments/gatsby or yarn add @jam-comments/gatsby. After doing so, configure it by adding the following to your gatsby-config.js.

In your deployed site, it's strongly recommended to store the values in environment variables.
module.exports = {
// ... other configuration stuff
plugins: [
// ...other plugins
{
resolve: "@jam-comments/gatsby",
options: {
apiKey: process.env.JAM_COMMENTS_API_KEY,
domain: process.env.JAM_COMMENTS_DOMAIN,
tz: "America/Chicago",
},
},
],
};

Environment Configuration

In non-production mode, this plugin will render a list of dummy comments on your pages, making it easier to adjust styles before deploying to production. Additionally, any new comments will be silently submitted.

In order to remove these dummy comments and allow submissions to go through, either the NODE_ENV or JAM_COMMENTS_ENVIRONMENT environment variables must be set to production.

Usage

Embedding Comments

To include a form and comments on your blog posts, you’ll need to place the following component in your page component, along with the required pageContext prop. This object holds any comment data that’s already been submitted, which will then be rendered on the page when it’s built.

import React from "react";
import JamComments from "@jam-comments/gatsby/ui";
const MyPost = (props) => {
return (
<article>
<h1>{props.title}</h1>
<div>{props.content}</div>
<JamComments pageContext={props.pageContext} />
</article>
);
};
export default MyPost;

Overriding Copy in UI

The JamComments UI comes with its own set of basic copy for its components (submission confirmation, submit button text, etc.). Many of this copy can be overridden.

PropertyWhere It AppearsDefault
confirmationMessageIn the success banner after submitting a comment.”Comment successfully submitted!”
submitButtonIn the comment submission button.”Submit”
namePlaceholderIn the “name” input.(empty)
emailPlaceholderIn the “email” input.(empty)
commentPlaceholderIn the comment textarea.”Write something in plain text or Markdown…”
writeTabIn the tab for composing a comment.”Write”
previewTabIn the tab for previewing a comment.”Preview”
authButtonIn the link for signing in or registering.”Log In or Register”
logOutButtonIn the link for logging out.”Log Out”

You can pass these values in the copy prop:

{
resolve: '@jam-comments/gatsby',
options: {
apiKey: process.env.JAM_COMMENTS_API_KEY,
domain: process.env.JAM_COMMENTS_DOMAIN,
copy: {
commentPlaceholder: "Write something",
submitButton: "Send it!",
namePlaceholder: "Ur Mom",
emailPlaceholder: "[email protected]",
}
}
},

Setting a Date Format

The default date format for comments is 'm/d/Y. If you’re from another country, that might be weird. So, you can customize it by using the dateFormat option. Note that the format must follow PHP’s DateTime standards.

{
resolve: '@jam-comments/gatsby',
options: {
apiKey: process.env.JAM_COMMENTS_API_KEY,
domain: process.env.JAM_COMMENTS_DOMAIN,
dateFormat: "l, F j, Y", // Thursday, October 31, 2024
}
},

Contributions

The source for this plugin is open to contributions. If you have a bug fix or idea for improvement, leave a pull request or issue in the GitHub repository.