Javascript Pro
Professional JavaScript development automation for modern web applications and server-side
JavaScript Pro is an AI skill that provides advanced guidance for modern JavaScript development covering language features, performance optimization, and best practices. It covers ES2024+ features, async patterns, module systems, type safety with JSDoc, memory management, and tooling configuration that produce robust, efficient JavaScript applications.
What Is This?
Overview
JavaScript Pro delivers expert-level JavaScript development practices beyond fundamentals. It addresses modern language features including optional chaining, nullish coalescing, and structured clone, async programming patterns with Promises, async iterators, and AbortController, module system best practices for ESM and CommonJS interoperability, type safety using JSDoc annotations and TypeScript-compatible patterns, memory leak prevention and garbage collection awareness, and build tooling configuration with Vite, esbuild, and Rollup for optimal bundle output.
Who Should Use This
This skill serves experienced JavaScript developers seeking to deepen their expertise, frontend engineers optimizing application performance, Node.js developers building server-side JavaScript applications, and library authors creating reusable packages for the JavaScript ecosystem.
Why Use It?
Problems It Solves
JavaScript's flexibility allows patterns that work but perform poorly or create subtle bugs. Async code without proper error handling silently swallows failures. Closures that unintentionally capture references cause memory leaks in long-running applications. Module configuration inconsistencies cause import resolution failures across different environments.
Core Highlights
The skill leverages modern JavaScript features that simplify code and prevent common errors. Async patterns properly handle cancellation, timeouts, and concurrent execution. Memory-conscious coding prevents leaks in event listeners, closures, and caches. Module configuration works consistently across Node.js, browsers, and bundlers.
How to Use It?
Basic Usage
// Modern async patterns with proper error handling and cancellation
async function fetchWithRetry(url, options = {}) {
const { maxRetries = 3, timeout = 5000, signal } = options;
const controller = new AbortController();
if (signal) {
signal.addEventListener('abort', () => controller.abort());
}
for (let attempt = 1; attempt <= maxRetries; attempt++) {
const timeoutId = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch(url, { signal: controller.signal });
clearTimeout(timeoutId);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return await response.json();
} catch (error) {
clearTimeout(timeoutId);
if (error.name === 'AbortError') throw error;
if (attempt === maxRetries) throw error;
await new Promise(r => setTimeout(r, 1000 * attempt));
}
}
}Real-World Examples
// Memory-safe event management and resource cleanup
class ResourceManager {
#cleanups = [];
#abortController = new AbortController();
addEventListener(target, event, handler) {
target.addEventListener(event, handler, {
signal: this.#abortController.signal
});
}
createInterval(callback, ms) {
const id = setInterval(callback, ms);
this.#cleanups.push(() => clearInterval(id));
return id;
}
async streamData(url) {
const response = await fetch(url, {
signal: this.#abortController.signal
});
const reader = response.body.getReader();
this.#cleanups.push(() => reader.cancel());
return reader;
}
dispose() {
this.#abortController.abort();
for (const cleanup of this.#cleanups) {
cleanup();
}
this.#cleanups.length = 0;
}
}
// Usage with automatic cleanup
const manager = new ResourceManager();
manager.addEventListener(window, 'resize', handleResize);
manager.createInterval(pollServer, 30000);
// On component unmount:
manager.dispose(); // Cleans up everythingAdvanced Tips
Use AbortController as a universal cancellation mechanism for fetch requests, event listeners, and custom async operations. Prefer structuredClone() over JSON.parse(JSON.stringify()) for deep cloning objects as it handles more types correctly. Use WeakRef and FinalizationRegistry for caches that allow garbage collection of entries no longer referenced elsewhere.
When to Use It?
Use Cases
Use JavaScript Pro when building performance-sensitive web applications that need optimized code, when developing Node.js services that must handle high concurrency reliably, when creating JavaScript libraries that need to work across multiple environments, or when debugging memory leaks and performance issues in JavaScript applications.
Related Topics
TypeScript for static typing, Node.js runtime internals, V8 engine optimization, web platform APIs, and JavaScript testing frameworks like Vitest all complement advanced JavaScript development.
Important Notes
Requirements
A modern JavaScript runtime supporting ES2022+ features. Build tooling configured for the target environments. Understanding of JavaScript's event loop and memory model for effective async and performance work.
Usage Recommendations
Do: use const by default and let only when reassignment is needed. Handle all Promise rejections explicitly to prevent silent failures. Clean up event listeners, timers, and subscriptions when components or objects are destroyed.
Don't: rely on == loose equality, as its type coercion rules create unexpected results. Modify objects passed as function arguments unless the function name clearly indicates mutation. Use var in modern codebases, as block-scoped let and const prevent hoisting bugs.
Limitations
JavaScript's dynamic typing means some categories of bugs cannot be caught without TypeScript or thorough testing. Single-threaded execution limits CPU-bound performance unless Worker threads are used. Browser and Node.js environments support different API sets, requiring careful feature detection for cross-environment code.
More Skills You Might Like
Explore similar skills to enhance your workflow
n8n workflow automation
Designs and outputs n8n workflow JSON with robust triggers, idempotency, error handling
Analyzing Office 365 Audit Logs for Compromise
Parse Office 365 Unified Audit Logs via Microsoft Graph API to detect email forwarding rule creation, inbox delegation,
Claude Code Expert
Claude Code is Anthropic's agentic coding tool that lives in the terminal and helps turn ideas into code faster. It combines autonomous planning, exec
Referral Program
When the user wants to design, launch, or optimize a referral or affiliate program. Use when they mention 'referral program,' 'affiliate program,' 'wo
SAP Abap
Develop ABAP programs on SAP systems with modern syntax and best practices
Award Application
A Claude Code skill for award application workflows and automation