npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

nuxt-optimization-plugin-monorepo

v0.5.9

Published

Perform performance optimization of nuxt projects

Readme

Nuxt Delay Hydration

npm version npm downloads License Nuxt

Improve your Nuxt.js Google Lighthouse score by delaying hydration ⚡️

Features

  • 🚀 Performance Boost - Significantly improve your Lighthouse performance score
  • 🎯 Smart Hydration - Multiple hydration strategies (init, mount, manual)
  • 📱 Device Aware - Different timeout settings for mobile and desktop
  • 🎮 Event Driven - Trigger hydration on user interactions
  • 🔄 Event Replay - Replay user interactions after hydration
  • 🐛 Debug Mode - Built-in debugging for development
  • 🔧 Highly Configurable - Fine-tune every aspect of the delay behavior

Quick Setup

  1. Add nuxt-optimization-plugin dependency to your project
# Using npm
npm install nuxt-optimization-plugin

# Using yarn
yarn add nuxt-optimization-plugin

# Using pnpm
pnpm add nuxt-optimization-plugin
  1. Add nuxt-optimization-plugin to the modules section of nuxt.config.ts
export default defineNuxtConfig({
    modules: ["nuxt-optimization-plugin"],
    delayHydration: {
        // Enable delay hydration
        mode: "init",
    },
});

That's it! You can now use Nuxt Delay Hydration in your Nuxt app ✨

Configuration

Hydration Modes

  • init - Delay hydration until after the app initialization
  • mount - Delay hydration until after the app mount
  • manual - Completely manual hydration control
  • false - Disable the module (default)

Configuration Options

export default defineNuxtConfig({
    delayHydration: {
        // Hydration mode
        mode: "init", // 'init' | 'mount' | 'manual' | false

        // Events that trigger hydration
        hydrateOnEvents: [
            "mousemove",
            "scroll",
            "keydown",
            "click",
            "touchstart",
            "wheel",
        ],

        // Idle callback timeout (ms)
        idleCallbackTimeout: 7000,

        // Post-idle timeout by device type
        postIdleTimeout: {
            mobile: 6000,
            desktop: 5000,
        },

        // Replay user interactions after hydration
        replayClick: false,

        // Max age for replaying events (ms)
        replayClickMaxEventAge: 1000,

        // Enable debug logging
        debug: false,

        // Never hydrate (for testing)
        forever: false,
    },
});

Usage Examples

Basic Setup

// nuxt.config.ts
export default defineNuxtConfig({
    modules: ["nuxt-optimization-plugin"],
    delayHydration: {
        mode: "init",
        debug: true, // Enable for development
    },
});

Advanced Configuration

// nuxt.config.ts
export default defineNuxtConfig({
    modules: ["nuxt-optimization-plugin"],
    delayHydration: {
        mode: "mount",
        hydrateOnEvents: ["click", "touchstart"], // Only on user interaction
        postIdleTimeout: {
            mobile: 8000, // Longer delay on mobile
            desktop: 4000,
        },
        replayClick: true, // Replay user clicks
        debug: process.env.NODE_ENV === "development",
    },
});

Manual Hydration

// nuxt.config.ts
export default defineNuxtConfig({
    modules: ["nuxt-optimization-plugin"],
    delayHydration: {
        mode: "manual",
    },
});
<!-- In your component -->
<template>
    <div>
        <button @click="triggerHydration">Load Interactive Content</button>
    </div>
</template>

<script setup>
const triggerHydration = () => {
    // Manually trigger hydration
    if (process.client && window.$delayHydration) {
        window.$delayHydration.hydrate();
    }
};
</script>

How It Works

This module delays the hydration process of your Nuxt.js application, which can significantly improve your initial page load performance and Lighthouse scores. Here's what happens:

  1. Initial Load: The page loads with static HTML/CSS, providing immediate visual feedback
  2. Delayed Hydration: JavaScript hydration is delayed based on your chosen strategy
  3. Smart Triggering: Hydration occurs when users interact with the page or after specified timeouts
  4. Event Replay: User interactions can be replayed after hydration completes

Performance Benefits

  • Faster First Contentful Paint (FCP)
  • 🎯 Improved Largest Contentful Paint (LCP)
  • 📊 Better Lighthouse Performance Score
  • 🚀 Reduced Time to Interactive (TTI)
  • 📱 Enhanced Mobile Performance

Development

# Install dependencies
pnpm install

# Generate type stubs
pnpm run stub

# Develop with the playground
pnpm run dev

# Build the module
pnpm run build

# Run ESLint
pnpm run lint

# Run tests
pnpm run test

Contributing

Contributions are welcome! Please read the contributing guidelines first.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License

Credits

Made with ❤️ by Harlan Wilton