✨2023#50: Hydration Overlay: Visualize Render Differences to Debug Hydration Errors
Tags: webdev, javascript, programming, opensource
Published: 2023-12-20 17:16:34

Hi developers 👋
[JSTools Weekly newsletter](https://jstools.substack.com/), [issue 2023#50](https://jstools.substack.com/p/202350-hydration-overlay-visualize-render-diff) (New JS Tools) just released.
📅 December 10-16, 2023


---

![hydration-overlay](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6873f223-dea7-49d1-a53d-9854feff72de_1920x1080.jpeg)


[source](https://github.com/BuilderIO/hydration-overlay)

#### **[hydration-overlay: ](https://www.builder.io/blog/announcing-react-hydration-overlay)**[Overlay for hydration errors with explicit diff between renders.](https://www.builder.io/blog/announcing-react-hydration-overlay)

This package helps you identify hydration errors by showing you the differences between the HTML rendered on the server and the client. It works by injecting a script into your app's entry point that reads the HTML from the server, stores it, and then listens for hydration errors. When an error occurs, it stores the resulting HTML and compares it to the stored HTML. If the two are different, the plugin will show you an overlay with the diff.

#### **[GeminiProChat: ](https://www.geminiprochat.com/)**[Minimal web UI for GeminiPro.](https://www.geminiprochat.com/)



![GeminiProChat](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b7845e-65e1-499c-8ee5-75429c8654c4_1312x847.png "image")


[source](https://github.com/babaohuang/GeminiProChat)

#### **[invariant: ](https://github.com/epicweb-dev/invariant)**[Type safe utilities for throwing errors in a declarative way](https://github.com/epicweb-dev/invariant)

Invariant is a cool tool that lets you throw errors in a type-safe way. It's like having a built-in safety net for your code. You can even throw responses instead of errors, which is great for handling exceptional situations in a more structured way.

```
import { invariant } from '@epic-web/invariant'

const creature = { name: 'Unicorn', type: 'Magic' }

invariant(creature.type === 'Fire', 'Creature must be of type Fire')

// Throws: InvariantError: Creature must be of type Fire
```

#### **[reason: ](https://www.tryreason.dev/)**[A minimalistic Typescript framework for building great LLM apps](https://www.tryreason.dev/)

RΞASON is a lightweight TypeScript framework that simplifies building awesome LLM apps. Its secret sauce: leveraging your TypeScript type information to guide the LLM, ensuring it delivers the right responses without guesswork.

```
import { reason } from 'tryreason'

interface Joke {
  rating: number;
  joke: string;
  explanation: string;
}
const joke = await reason<Joke>('tell me a really spicy joke')

// joke object is:

{
  "joke": "I'd tell you a chemistry joke but I know I wouldn't get a reaction.",
  "rating": 18,
  "explanation": "This joke is a play on words. The term 'reaction' refers to both a chemical process and a response from someone. The humor comes from the double meaning, implying that the joke might not be funny enough to elicit a response."
}
```

#### **[sqlauthz: ](https://github.com/cfeenstra67/sqlauthz)**[Declarative permissions management for PostgreSQL](https://github.com/cfeenstra67/sqlauthz)

sqlauthz helps you manage your permission in PostgreSQL in a declarative way. It uses the Polar language to define schema and table permissions, including column and row-level security. It is still experimental, but it can be a valuable tool for managing permissions in PostgreSQL.

#### **[holy-loader: ](https://github.com/tomcru/holy-loader)**[A lightweight, customizable top-loader / top loading progress bar](https://github.com/tomcru/holy-loader)

Holy Loader is a neat and flexible top-loading progress bar that works great with React apps, especially Next.js with app router. It's simple to incorporate, extensively customizable with reasonable defaults, and employs a custom scheme for sleek, attractive progress indicators. It also allows you to dynamically adjust the color, height, speed, easing, and more.

```
import HolyLoader from "holy-loader";

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <HolyLoader
        color="#ff4500"
        height="1rem"
        trickleSpeed={250}
        easing="linear"
      />
      {children}
    </html>
  );
}
```

#### **[breadboard: ](https://github.com/breadboard-ai/breadboard)**[A library for prototyping generative AI applications.](https://github.com/breadboard-ai/breadboard)

Breadboard simplifies AI prototyping by making it just like wiring components on a breadboard -- easy, flexible, modular, and composable.

#### **[multithreading: ](https://github.com/W4G1/multithreading)**[Multithreading functions in JavaScript](https://github.com/W4G1/multithreading)

Multithreading is a lightweight JavaScript runtime that enables you to run your JS functions on separate threads, making your code more efficient and responsive. It's super compact (only 4.5kb!), supports Node.js, Deno, and the browser, and can seamlessly integrate with frameworks like React, Vue, or Svelte. Thanks to Worker Threads or Web Workers and ES6 generators, multithreading becomes a breeze with this handy tool.


![Multithreading](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cee39e1-7136-4dcd-adba-de16e56c5d7e_1440x405.png "Multithreading Banner")


[source](https://github.com/W4G1/multithreading)

#### **[vue-inheritance: ](https://github.com/en96321/vue-inheritance)**[A utility tools for Vue.js developers](https://github.com/en96321/vue-inheritance)

vue-inheritance is a nifty tool for Vue.js developers, making it a breeze to manage and share component properties and methods. It taps into Vue's extension and mixin features to streamline the process of defining and utilizing components, enhancing modularity and reducing code redundancy.

#### **[npm-check-extras: ](https://github.com/akgondber/npm-check-extras)**[CLI app to check for outdated and unused dependencies, and run update/delete action over selected ones](https://github.com/akgondber/npm-check-extras)


![npm-check-extras](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff659bf7e-0ac1-4b34-95f0-99b82c77658c_1729x867.png "Check devDependencies")


[source](https://github.com/akgondber/npm-check-extras)

#### **[astro-font: ](https://github.com/rishi-raj-jain/astro-font)**[Astro font optimization](https://github.com/rishi-raj-jain/astro-font)

`astro-font` will automatically optimize your Custom Fonts, Local Fonts, Fonts over any CDN and Google fonts for performance.

### More tools to explore:

-   **[sagittarius](https://github.com/gregsadetsky/sagittarius): **A GPT-4/Gemini Voice/Video Exploration Tool

-   **[merlin-node](https://github.com/foyer-work/merlin-node): **Merlin SDK Provides A Unified API To Interact With 20+ LLM Models.

-   **[glish](https://github.com/paralogical/glish): **map all words to single-syllable version

-   **[vectorizer](https://github.com/neplextech/vectorizer): **A simple Node.js library to convert raster images into svg

-   **[bun-plugin-solid](https://github.com/DaniGuardiola/bun-plugin-solid): **A plugin to compile Solid.js with Bun.

-   **[nitro-shikiji](https://github.com/antfu/nitro-shikiji): **A simple Shikiji endpoint set up with Nitro

-   **[vscode-shadcn-svelte](https://github.com/selemondev/vscode-shadcn-svelte): **Shadcn Svelte VSCode extension to help you install and use components directly without leaving your IDE

-   **[outfit-anyone](https://github.com/HumanAIGC/outfit-anyone): **About Project Page for Outfit Anyone

-   **[event_platform](https://github.com/adrianhajdin/event_platform): **Build an event organization web app like Eventbrite or Meetup

-   **[next14-twitch-clone](https://github.com/AntonioErdeljac/next14-twitch-clone): **Fullstack Trello Clone: Next.js 14, Livestreaming, React, Prisma, Stripe, Tailwind, MySQL

-   **[tento](https://github.com/drizzle-team/tento): **Shopify data framework for NodeJS, TypeScript and JavaScript

-   **[cmd-cleaner](https://github.com/atbe/cmd-cleaner): **a handly CLI tool that you can use to leverage LLM's to organize your files and folders

-   **[share-button](https://github.com/daviddarnes/share-button): **A Web Component to share web pages using the native OS sharing options

-   **[StripeCord](https://github.com/Rodaviva29/StripeCord): **A Discord Bot for Seamless Subscription Management with Stripe!

---
If you like this issue, please consider subscribing to [JSTools Weekly Newsletter](https://jstools.substack.com/).

Thank you