Skip to content

Conversation

@JMeng1
Copy link
Collaborator

@JMeng1 JMeng1 commented Dec 4, 2025

Summary by CodeRabbit

  • Documentation
    • Added three new blog posts: hidden costs of Google Analytics, paid search analytics guide, and a pricing comparison showcasing a transparent alternative.
    • Updated blog metadata to include the new posts for site navigation and discovery.
  • Chores
    • Bumped Next.js and related docs tooling versions (including lint preset) and the client Next.js version for build/lint updates.

✏️ Tip: You can customize this high-level summary in your review settings.

@JMeng1 JMeng1 requested a review from Copilot December 4, 2025 19:50
@vercel
Copy link

vercel bot commented Dec 4, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
rybbit Ready Ready Preview Comment Dec 6, 2025 10:30am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 4, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds three new blog posts and their metadata entries, and bumps Next.js versions in client/package.json and docs/package.json.

Changes

Cohort / File(s) Change Summary
Blog metadata
docs/content/blog/_meta.js
Added three new keys to the default export: "paid-search-analytics", "is-google-analytics-free", and "rybbit-pricing" with corresponding titles.
New blog posts
docs/content/blog/is-google-analytics-free.mdx, docs/content/blog/paid-search-analytics.mdx, docs/content/blog/rybbit-pricing.mdx
Added three MDX posts: GA4 hidden costs and Rybbit alternative, paid search analytics guide with implementation steps, and Rybbit vs Heap pricing comparison (content, images, internal links, CTAs).
Dependency bumps
client/package.json, docs/package.json
Upgraded Next.js: in client/package.json 15.3.2 → 15.3.6; in docs/package.json Next.js and eslint-config-next 16.0.0 → 16.0.7.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10–15 minutes

  • Pay attention to: matching metadata keys vs MDX filenames/titles, internal links/images in new posts, and verifying the docs Next.js bump against docs build configuration.

Possibly related PRs

Suggested reviewers

  • goldflag

Poem

🐰
Three new posts beneath the log,
Pricing, search, and GA’s fog.
Rybbit hops, the docs now sing,
Links in place, let trackers spring.
A tiny clap — the warren rings!

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Adding more articles' is vague and generic, using non-descriptive language that doesn't convey meaningful information about the changeset's primary focus or scope. Provide a more specific title that identifies the key articles being added (e.g., 'Add blog posts on paid search analytics and GA4 alternatives' or 'Add three new blog articles about analytics and pricing').
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/all_new_articles

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dff6d6d and 4b06be3.

⛔ Files ignored due to path filters (1)
  • docs/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • docs/package.json (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/package.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds three new comprehensive blog articles about analytics and pricing, updates existing articles to use more generic privacy-focused language, and includes package-lock.json updates. The changes systematically replace specific regulatory references (GDPR, CCPA) with broader privacy-focused terminology across the documentation.

Key changes:

  • Added three substantial new blog articles: "Rybbit vs Heap Pricing," "Paid Search Analytics," and "Is Google Analytics Free?"
  • Updated privacy terminology across multiple existing articles to use generic privacy-focused language instead of specific regulatory references
  • Added new root-level package-lock.json file and updated docs/package-lock.json with peer dependency markers

Reviewed changes

Copilot reviewed 8 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
package-lock.json New root-level package-lock.json file created with basic configuration
docs/package-lock.json Added "peer": true markers to multiple package entries including React, Next.js, and other dependencies
docs/content/blog/rybbit-pricing.mdx New comprehensive article comparing Rybbit and Heap pricing (465 lines)
docs/content/blog/paid-search-analytics.mdx New detailed guide on paid search analytics optimization (514 lines)
docs/content/blog/is-google-analytics-free.mdx New article analyzing hidden costs of Google Analytics (313 lines)
docs/content/blog/what-is-web-analytics.mdx Updated to replace GDPR/CCPA references with generic privacy terminology
docs/content/blog/onyx-ai-knowledge-platform.mdx Changed "GDPR compliance" reference to "privacy features"
docs/content/blog/geographic-segmentation.mdx Updated regulatory compliance language to be more generic
docs/content/blog/ecommerce-analytics.mdx Changed "GDPR and Privacy Compliant" to "Privacy-Focused by Design"
docs/content/blog/_meta.js Added metadata entries for the three new blog articles
Files not reviewed (1)
  • docs/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

"resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz",
"integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==",
"license": "MIT",
"peer": true,
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "peer": true field is being added to numerous package entries. This flag marks packages as peer dependencies in the lockfile. However, some of these packages (like react, react-dom, next, tailwindcss) are typically direct dependencies or devDependencies in a docs/Next.js project, not peer dependencies. Adding "peer": true to direct dependencies could indicate a configuration issue. Verify that these packages should actually be marked as peer dependencies, or if this change was unintentional.

Copilot uses AI. Check for mistakes.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot open a new pull request to apply changes based on this feedback

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
docs/content/blog/rybbit-pricing.mdx (1)

98-161: Be mindful of pricing drift vs. canonical source

The detailed per-tier pricing bullets are useful, but they will diverge from the live pricing page over time. Since you already link to the main pricing page, consider either tightening the hard-coded numbers (e.g., keep only starting prices) or adding a short note that canonical, up-to-date pricing lives on /pricing to reduce future maintenance overhead.

Also applies to: 164-188, 193-241, 255-262

docs/content/blog/is-google-analytics-free.mdx (1)

197-217: Optional: small copy polish based on style checks

If you’re iterating on the copy again, a few micro-tweaks could read a bit tighter:

  • Consider hyphenating compound adjectives like “open-source transparency” when used before a noun.
  • The phrase “in the long run” can be shortened (e.g., “over time”) if you’d like a more concise tone.

Not required for correctness—purely style-level.

Also applies to: 296-303

docs/content/blog/paid-search-analytics.mdx (1)

11-17: Update “Bing Ads” naming to current brand

In the intro and platform-data section you mention “Bing Ads”. Microsoft’s product is now branded as “Microsoft Advertising” / “Microsoft Ads”; consider updating the naming to avoid sounding dated and to match how advertisers will see it in the UI today.

Also applies to: 38-41

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 82cdf4e and 6aa32ff.

⛔ Files ignored due to path filters (2)
  • docs/package-lock.json is excluded by !**/package-lock.json
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (8)
  • docs/content/blog/_meta.js (1 hunks)
  • docs/content/blog/ecommerce-analytics.mdx (1 hunks)
  • docs/content/blog/geographic-segmentation.mdx (2 hunks)
  • docs/content/blog/is-google-analytics-free.mdx (1 hunks)
  • docs/content/blog/onyx-ai-knowledge-platform.mdx (1 hunks)
  • docs/content/blog/paid-search-analytics.mdx (1 hunks)
  • docs/content/blog/rybbit-pricing.mdx (1 hunks)
  • docs/content/blog/what-is-web-analytics.mdx (4 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
docs/content/{docs,blog}/**/*.{md,mdx}

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Configure content files in content/docs/ and content/blog/ to be processed by Fumadocs MDX

Files:

  • docs/content/blog/rybbit-pricing.mdx
  • docs/content/blog/geographic-segmentation.mdx
  • docs/content/blog/is-google-analytics-free.mdx
  • docs/content/blog/onyx-ai-knowledge-platform.mdx
  • docs/content/blog/paid-search-analytics.mdx
  • docs/content/blog/ecommerce-analytics.mdx
  • docs/content/blog/what-is-web-analytics.mdx
docs/content/blog/**/*.{md,mdx}

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Use extended frontmatter in blog posts including date, author, image, and tags fields

Files:

  • docs/content/blog/rybbit-pricing.mdx
  • docs/content/blog/geographic-segmentation.mdx
  • docs/content/blog/is-google-analytics-free.mdx
  • docs/content/blog/onyx-ai-knowledge-platform.mdx
  • docs/content/blog/paid-search-analytics.mdx
  • docs/content/blog/ecommerce-analytics.mdx
  • docs/content/blog/what-is-web-analytics.mdx
🧠 Learnings (1)
📚 Learning: 2025-11-25T02:34:59.895Z
Learnt from: CR
Repo: rybbit-io/rybbit PR: 0
File: docs/src/app/(home)/tools/CLAUDE.md:0-0
Timestamp: 2025-11-25T02:34:59.895Z
Learning: Applies to docs/src/app/(home)/tools/**/tools/**/page.tsx : Include Rybbit integration in FAQs when relevant

Applied to files:

  • docs/content/blog/rybbit-pricing.mdx
🪛 LanguageTool
docs/content/blog/rybbit-pricing.mdx

[style] ~52-~52: Consider a different adjective to strengthen your wording.
Context: ...eded, and your data stays yours. For a deeper understanding of how web analytics work...

(DEEP_PROFOUND)


[style] ~64-~64: To elevate your writing, try using an alternative expression here.
Context: ... JSON properties** - Track exactly what matters for your business with unlimited custom...

(MATTERS_RELEVANT)


[grammar] ~86-~86: Use a hyphen to join words.
Context: ...l insights without surveillance. Open source transparency - Our code is publ...

(QB_NEW_EN_HYPHEN)


[style] ~92-~92: Consider changing the order of words to improve your wording.
Context: ...ipt is lightweight (18KB) and optimized to not slow down your site. Every millisecond ...

(TO_NOT_VB)


[style] ~100-~100: Consider an alternative for the overused word “exactly”.
Context: ...s straightforward and published. Here's exactly what each plan includes: <img src="/bl...

(EXACTLY_PRECISELY)


[style] ~140-~140: Consider using a different verb for a more formal wording.
Context: ...zation - Error tracking - Catch and fix issues before they hurt conversions - *...

(FIX_RESOLVE)


[uncategorized] ~297-~297: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... that hurt your conversion rates. 4. Open Source Transparency You can review Rybbit's...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~345-~345: Consider an alternative for the overused word “exactly”.
Context: ... why does it matter? A pageview is exactly what it sounds like—someone loads a pag...

(EXACTLY_PRECISELY)


[style] ~351-~351: Try using a synonym here to elevate your writing.
Context: ...e) solution. For most sites, pageviews make up the majority of events. But if you're t...

(CONSTITUTE_COMPRISE)


[style] ~459-~459: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...tics that don't require cookie banners. You get open-source transparency and option...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

docs/content/blog/is-google-analytics-free.mdx

[uncategorized] ~81-~81: Do not mix variants of the same word (‘analyse’ and ‘analyze’) within a single text.
Context: ...ort - Inability to run multi-year trend analyses Rybbit offers 2 years of data retentio...

(EN_WORD_COHERENCY)


[uncategorized] ~209-~209: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...pricing) for details on all plans. ### Open Source Transparency Unlike Google Analytics' ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~302-~302: ‘in the long run’ might be wordy. Consider a shorter alternative.
Context: ...st you. Don't let "free" cost you more in the long run. [Try Rybbit free](https://app.rybbit....

(EN_WORDINESS_PREMIUM_IN_THE_LONG_RUN)

docs/content/blog/paid-search-analytics.mdx

[style] ~11-~11: “Bing Ads” has been renamed to “Microsoft Ads”.
Context: ...ou're spending thousands on Google Ads, Bing Ads, and other search platforms. Traffic is...

(MICROSOFT_PRODUCTS_STYLE)


[style] ~40-~40: “Bing Ads” has been renamed to “Microsoft Ads”.
Context: ...g Only on Platform Data Google Ads and Bing Ads provide their own analytics, but they o...

(MICROSOFT_PRODUCTS_STYLE)


[style] ~54-~54: Consider using a different verb to strengthen your wording.
Context: ...undervaluing paid search campaigns that create awareness and overvaluing channels that...

(CREATE_AWARENESS)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Agent
  • GitHub Check: Build Client Images (ubuntu-24.04-arm, linux/arm64)
  • GitHub Check: Build Client Images (ubuntu-latest, linux/amd64)
🔇 Additional comments (5)
docs/content/blog/ecommerce-analytics.mdx (1)

193-199: Updated privacy phrasing is consistent and clear

The new “Privacy-Focused by Design” bullet fits the broader privacy-focused messaging and reads well; no changes needed.

docs/content/blog/geographic-segmentation.mdx (1)

15-21: Geography/privacy copy updates look good

The shift to “privacy-focused messaging” and the expanded note about varying privacy regulations across regions reads accurately and broadens the framing beyond just GDPR, which is helpful contextually.

Also applies to: 36-38

docs/content/blog/onyx-ai-knowledge-platform.mdx (1)

49-53: Support example tweak is coherent and on-message

Refocusing the example on privacy features and self-hosting keeps the flow natural and better matches Rybbit’s positioning; no issues here.

docs/content/blog/_meta.js (1)

2-7: New blog meta entries wired correctly

The three new slugs and titles match the added blog files and follow the existing export structure; nothing else to change here.

docs/content/blog/what-is-web-analytics.mdx (1)

27-41: Privacy-focused rewording is consistent; consider a quick compliance review

The updated bullets and paragraphs around privacy, data control, and “privacy-focused by design” messaging are internally consistent and better aligned with the rest of the docs. Because the text makes fairly strong statements (e.g., “No consent banners needed”, “helps with compliance”), it’s worth having your legal/compliance owner confirm this remains accurate for target jurisdictions.

Also applies to: 119-126, 213-231, 297-306

Comment on lines +1 to +7
---
title: Is Google Analytics Free? The Hidden Costs You're Not Seeing
date: 2025-12-04
description: Google Analytics is free, but it's costing you more than you think. Discover the hidden costs of GA4 and why Rybbit offers a better, truly affordable alternative.
tags: ["google analytics", "pricing", "analytics", "comparison", "privacy"]
author: Rybbit Team
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Frontmatter is missing the image field

For blog posts, the extended frontmatter should include date, author, image, and tags. Please add an image property here so this post is consistent with the rest of the blog and any tooling that expects it.

🤖 Prompt for AI Agents
docs/content/blog/is-google-analytics-free.mdx lines 1-7: Frontmatter is missing
the required image field; add an image property to the YAML frontmatter (e.g. a
relative path or CDN URL like /images/blog/is-google-analytics-free.png) so the
post includes image alongside date, author and tags and matches blog tooling
expectations; ensure the path is valid in the repo and the filename follows
existing blog image naming conventions.

Comment on lines +1 to +7
---
title: Paid Search Analytics - How to Optimize Ad Spend and Maximize ROI
date: 2025-12-04
description: Learn how to track and optimize your paid search campaigns with comprehensive analytics. Discover key metrics, attribution strategies, and best practices to improve your advertising ROI.
tags: ["analytics", "paid search", "marketing", "advertising", "ROI"]
author: Rybbit Team
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Include image in this new blog’s frontmatter

As with the other new posts, this article should use the extended frontmatter format: date, author, image, and tags. Please add an image field so it’s consistent with the blog conventions and any tooling that relies on it.

🤖 Prompt for AI Agents
In docs/content/blog/paid-search-analytics.mdx around lines 1 to 7, the
frontmatter is missing the required image field; add an image key to the YAML
frontmatter (e.g. image: "/images/blog/paid-search-analytics/hero.jpg" or
another appropriate relative path) so the frontmatter includes date, author,
image, and tags and matches the other posts' extended frontmatter format used by
the site tooling.

Comment on lines +1 to +7
---
title: Rybbit vs Heap Pricing - A Clear, Affordable Alternative to Heap Analytics
date: 2025-12-04
description: Tired of Heap's confusing custom pricing and high costs? Discover Rybbit's transparent, event-based pricing that gives you more features for less money.
tags: ["pricing", "analytics", "heap", "comparison"]
author: Rybbit Team
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Add image to blog frontmatter for extended metadata

Per the blog guidelines, posts should use extended frontmatter including date, author, image, and tags. This new article has all but image; please add an image field (even a generic hero image) so it’s consistent with other blog content and any consumers expecting it.

🤖 Prompt for AI Agents
In docs/content/blog/rybbit-pricing.mdx around lines 1 to 7, the frontmatter is
missing the required image field; add an image entry to the YAML frontmatter
(for example image: "/images/blog/rybbit-vs-heap-hero.jpg" or a generic hero
image path) so the frontmatter includes date, author, image, and tags; ensure
the image line follows YAML syntax and points to an existing asset or a
placeholder used by other posts.

Copy link
Contributor

Copilot AI commented Dec 4, 2025

@JMeng1 I've opened a new pull request, #751, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
docs/content/blog/rybbit-pricing.mdx (2)

84-88: Hyphenate compound adjective "open-source."

Line 86 should use "open-source" (with hyphen) when modifying the noun "transparency." Update for consistency with standard compound adjective styling.

-**Open source transparency** - Our code is public. No black boxes, no hidden tracking, no surprises. You can verify exactly what we do with your data.
+**Open-source transparency** - Our code is public. No black boxes, no hidden tracking, no surprises. You can verify exactly what we do with your data.

457-465: Avoid repetitive sentence structure at end of conclusion.

Lines 461–465 begin three successive sentences with "You get" / "You get" / "Thousands of websites." While the repetition creates emphasis, varying the structure slightly would improve readability. For example, restructure the third sentence or combine ideas to reduce the pattern.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6aa32ff and df2860c.

📒 Files selected for processing (1)
  • docs/content/blog/rybbit-pricing.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
docs/content/{docs,blog}/**/*.{md,mdx}

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Configure content files in content/docs/ and content/blog/ to be processed by Fumadocs MDX

Files:

  • docs/content/blog/rybbit-pricing.mdx
docs/content/blog/**/*.{md,mdx}

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Use extended frontmatter in blog posts including date, author, image, and tags fields

Files:

  • docs/content/blog/rybbit-pricing.mdx
🧠 Learnings (1)
📚 Learning: 2025-11-25T02:34:42.365Z
Learnt from: CR
Repo: rybbit-io/rybbit PR: 0
File: docs/CLAUDE.md:0-0
Timestamp: 2025-11-25T02:34:42.365Z
Learning: Applies to docs/content/blog/**/*.{md,mdx} : Use extended frontmatter in blog posts including date, author, image, and tags fields

Applied to files:

  • docs/content/blog/rybbit-pricing.mdx
🪛 LanguageTool
docs/content/blog/rybbit-pricing.mdx

[style] ~52-~52: Consider a different adjective to strengthen your wording.
Context: ...eded, and your data stays yours. For a deeper understanding of how web analytics work...

(DEEP_PROFOUND)


[style] ~64-~64: To elevate your writing, try using an alternative expression here.
Context: ... JSON properties** - Track exactly what matters for your business with unlimited custom...

(MATTERS_RELEVANT)


[grammar] ~86-~86: Use a hyphen to join words.
Context: ...l insights without surveillance. Open source transparency - Our code is publ...

(QB_NEW_EN_HYPHEN)


[style] ~92-~92: Consider changing the order of words to improve your wording.
Context: ...ipt is lightweight (18KB) and optimized to not slow down your site. Every millisecond ...

(TO_NOT_VB)


[style] ~100-~100: Consider an alternative for the overused word “exactly”.
Context: ...s straightforward and published. Here's exactly what each plan includes: <img src="/bl...

(EXACTLY_PRECISELY)


[style] ~140-~140: Consider using a different verb for a more formal wording.
Context: ...zation - Error tracking - Catch and fix issues before they hurt conversions - *...

(FIX_RESOLVE)


[uncategorized] ~297-~297: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... that hurt your conversion rates. 4. Open Source Transparency You can review Rybbit's...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~345-~345: Consider an alternative for the overused word “exactly”.
Context: ... why does it matter? A pageview is exactly what it sounds like—someone loads a pag...

(EXACTLY_PRECISELY)


[style] ~351-~351: Try using a synonym here to elevate your writing.
Context: ...e) solution. For most sites, pageviews make up the majority of events. But if you're t...

(CONSTITUTE_COMPRISE)


[style] ~461-~461: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...tics that don't require cookie banners. You get open-source transparency and option...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build Client Images (ubuntu-24.04-arm, linux/arm64)
  • GitHub Check: Build Client Images (ubuntu-latest, linux/amd64)
🔇 Additional comments (2)
docs/content/blog/rybbit-pricing.mdx (2)

1-465: Well-structured pricing guide with compelling comparisons and clear value proposition.

The article is well-organized with clear sections, honest feature/cost comparisons, practical migration guidance, and a strong call-to-action. Formatting, links, and embedded dashboard screenshots support readability. Once the frontmatter image field is added and the minor hyphenation/style refinements are addressed, this post is ready.


1-7: The frontmatter for this blog post is complete and compliant. While the coding guidelines mention including an image field, the Fumadocs schema configuration explicitly marks image as optional (along with author and tags). The only required field is date, which is present. The post includes all standard metadata: title, date, description, tags, and author.

Likely an incorrect or invalid review comment.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
docs/content/blog/is-google-analytics-free.mdx (1)

1-7: Add the required image field to frontmatter.

Per the coding guidelines, blog posts must include extended frontmatter with date, author, image, and tags fields. This post has all required fields except image. Add an image property (e.g., /images/blog/is-google-analytics-free.png or similar) to match blog content standards and any tooling expecting it.

Apply this diff to add the missing field:

 ---
 title: Is Google Analytics Free? The Hidden Costs You're Not Seeing
 date: 2025-12-04
 description: Google Analytics is free, but it's costing you more than you think. Discover the hidden costs of GA4 and why Rybbit offers a better, truly affordable alternative.
 tags: ["google analytics", "pricing", "analytics", "comparison", "privacy"]
 author: Rybbit Team
+image: /images/blog/is-google-analytics-free.png
 ---

Ensure the image path follows existing blog image naming conventions and points to a valid asset in the repository.

docs/content/blog/rybbit-pricing.mdx (1)

1-7: Add the required image field to frontmatter.

Per the coding guidelines, blog posts must include extended frontmatter with date, author, image, and tags fields. This post has all required fields except image. Add an image property (e.g., /images/blog/rybbit-vs-heap.png or similar) to match blog content standards and any tooling expecting it.

Apply this diff to add the missing field:

 ---
 title: Rybbit vs Heap Pricing - A Clear, Affordable Alternative to Heap Analytics
 date: 2025-12-04
 description: Tired of Heap's confusing custom pricing and high costs? Discover Rybbit's transparent, event-based pricing that gives you more features for less money.
 tags: ["pricing", "analytics", "heap", "comparison"]
 author: Rybbit Team
+image: /images/blog/rybbit-vs-heap.png
 ---

Ensure the image path follows existing blog image naming conventions and points to a valid asset in the repository.

🧹 Nitpick comments (2)
docs/content/blog/is-google-analytics-free.mdx (1)

209-209: Use hyphen for compound adjective "Open-source transparency."

When "Open source" is used as a compound adjective modifying a noun, it should be hyphenated.

Apply this diff:

-### Open Source Transparency
+### Open-source Transparency
docs/content/blog/rybbit-pricing.mdx (1)

86-86: Use hyphen for compound adjective "Open-source."

When "Open source" is used as a compound adjective modifying a noun, it should be hyphenated for grammatical correctness.

Apply this diff:

-**Open source transparency** - Our code is public. No black boxes, no hidden tracking, no surprises. You can verify exactly what we do with your data.
+**Open-source transparency** - Our code is public. No black boxes, no hidden tracking, no surprises. You can verify exactly what we do with your data.

Also at line 297:

-**4. Open Source Transparency**
+**4. Open-source Transparency**

Also applies to: 297-297

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df2860c and 06299c0.

📒 Files selected for processing (2)
  • docs/content/blog/is-google-analytics-free.mdx (1 hunks)
  • docs/content/blog/rybbit-pricing.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
docs/content/{docs,blog}/**/*.{md,mdx}

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Configure content files in content/docs/ and content/blog/ to be processed by Fumadocs MDX

Files:

  • docs/content/blog/rybbit-pricing.mdx
  • docs/content/blog/is-google-analytics-free.mdx
docs/content/blog/**/*.{md,mdx}

📄 CodeRabbit inference engine (docs/CLAUDE.md)

Use extended frontmatter in blog posts including date, author, image, and tags fields

Files:

  • docs/content/blog/rybbit-pricing.mdx
  • docs/content/blog/is-google-analytics-free.mdx
🧠 Learnings (2)
📚 Learning: 2025-11-25T02:34:59.895Z
Learnt from: CR
Repo: rybbit-io/rybbit PR: 0
File: docs/src/app/(home)/tools/CLAUDE.md:0-0
Timestamp: 2025-11-25T02:34:59.895Z
Learning: Applies to docs/src/app/(home)/tools/**/tools/**/page.tsx : Include Rybbit integration in FAQs when relevant

Applied to files:

  • docs/content/blog/rybbit-pricing.mdx
📚 Learning: 2025-11-25T02:34:42.365Z
Learnt from: CR
Repo: rybbit-io/rybbit PR: 0
File: docs/CLAUDE.md:0-0
Timestamp: 2025-11-25T02:34:42.365Z
Learning: Applies to docs/content/blog/**/*.{md,mdx} : Use extended frontmatter in blog posts including date, author, image, and tags fields

Applied to files:

  • docs/content/blog/rybbit-pricing.mdx
  • docs/content/blog/is-google-analytics-free.mdx
🪛 LanguageTool
docs/content/blog/rybbit-pricing.mdx

[style] ~52-~52: Consider a different adjective to strengthen your wording.
Context: ...eded, and your data stays yours. For a deeper understanding of how web analytics work...

(DEEP_PROFOUND)


[style] ~64-~64: To elevate your writing, try using an alternative expression here.
Context: ... JSON properties** - Track exactly what matters for your business with unlimited custom...

(MATTERS_RELEVANT)


[grammar] ~86-~86: Use a hyphen to join words.
Context: ...l insights without surveillance. Open source transparency - Our code is publ...

(QB_NEW_EN_HYPHEN)


[style] ~92-~92: Consider changing the order of words to improve your wording.
Context: ...ipt is lightweight (18KB) and optimized to not slow down your site. Every millisecond ...

(TO_NOT_VB)


[style] ~100-~100: Consider an alternative for the overused word “exactly”.
Context: ...s straightforward and published. Here's exactly what each plan includes: <img src="/bl...

(EXACTLY_PRECISELY)


[style] ~140-~140: Consider using a different verb for a more formal wording.
Context: ...zation - Error tracking - Catch and fix issues before they hurt conversions - *...

(FIX_RESOLVE)


[uncategorized] ~297-~297: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... that hurt your conversion rates. 4. Open Source Transparency You can review Rybbit's...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~345-~345: Consider an alternative for the overused word “exactly”.
Context: ... why does it matter? A pageview is exactly what it sounds like—someone loads a pag...

(EXACTLY_PRECISELY)


[style] ~351-~351: Try using a synonym here to elevate your writing.
Context: ...e) solution. For most sites, pageviews make up the majority of events. But if you're t...

(CONSTITUTE_COMPRISE)


[style] ~461-~461: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...tics that don't require cookie banners. You get open-source transparency and option...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

docs/content/blog/is-google-analytics-free.mdx

[uncategorized] ~81-~81: Do not mix variants of the same word (‘analyse’ and ‘analyze’) within a single text.
Context: ...ort - Inability to run multi-year trend analyses Rybbit offers 2 years of data retentio...

(EN_WORD_COHERENCY)


[uncategorized] ~209-~209: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...pricing) for details on all plans. ### Open Source Transparency Unlike Google Analytics' ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~302-~302: ‘in the long run’ might be wordy. Consider a shorter alternative.
Context: ...st you. Don't let "free" cost you more in the long run. [Try Rybbit free](https://app.rybbit....

(EN_WORDINESS_PREMIUM_IN_THE_LONG_RUN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build Client Images (ubuntu-latest, linux/amd64)
  • GitHub Check: Build Client Images (ubuntu-24.04-arm, linux/arm64)

Revert unintentional package-lock.json changes from PR #750
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- **Dedicated isolated instance** - Your own infrastructure for maximum performance
- **On-premise installation** - Deploy on your own servers for complete control
- **Custom features** - We'll build what you need
- **Whitelabeling** - Remove Rybbit branding
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: "whitelabeling" should be "white-labeling" or "white labeling" (with a hyphen or space). The single-word form "whitelabeling" is not standard.

Suggested change
- **Whitelabeling** - Remove Rybbit branding
- **White-labeling** - Remove Rybbit branding

Copilot uses AI. Check for mistakes.
@JMeng1
Copy link
Collaborator Author

JMeng1 commented Dec 5, 2025

@copilot

Please solve this problem in Vercel:

"Vulnerable version of Next.js detected, please update immediately. Learn more: https://vercel.link/CVE-2025-66478"

Copy link
Contributor

Copilot AI commented Dec 5, 2025

@JMeng1 I've opened a new pull request, #755, to work on those changes. Once the pull request is ready, I'll request review from you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants