obsidian-plugin-react-performance
Obsidian Plugin React Performance
Use this skill when a plugin already uses React and performance or responsiveness matters more than adding new features.
Typical triggers
- "This view rerenders constantly"
- "Typing in this search box is laggy"
- "Can we lazy-load this heavy panel?"
- "Why is this React plugin UI janky?"
- "Which optimizations matter most here?"
Priorities for Obsidian plugins
1. Bundle and load cost
- reduce initial bundle weight
- lazy-load heavy components when they are not needed immediately
- avoid broad barrel imports in hot UI paths
- defer non-critical third-party code
2. Re-render control
- move expensive computation behind memoized components when justified
- avoid deriving state through effects when render-time derivation is sufficient
- avoid inline component definitions inside parent components
- use transitions or deferred values for non-urgent UI updates
3. Rendering quality
- use explicit conditional rendering instead of risky
&&patterns - hoist static JSX where helpful
- reduce unnecessary browser work in long or dense views
4. Client-side event and storage discipline
- deduplicate global listeners when many components subscribe
- use passive listeners for scroll-like events
- keep storage reads and writes disciplined and versioned
5. Async structure
- parallelize independent work
- defer awaits until they are genuinely needed
- avoid cold-path async work behind cheap synchronous guards
Especially relevant reference files
../obsidian-plugin-react-best-practices/references/rules/bundle-dynamic-imports.md../obsidian-plugin-react-best-practices/references/rules/bundle-barrel-imports.md../obsidian-plugin-react-best-practices/references/rules/bundle-defer-third-party.md../obsidian-plugin-react-best-practices/references/rules/rerender-memo.md../obsidian-plugin-react-best-practices/references/rules/rerender-derived-state-no-effect.md../obsidian-plugin-react-best-practices/references/rules/rerender-no-inline-components.md../obsidian-plugin-react-best-practices/references/rules/rendering-conditional-render.md../obsidian-plugin-react-best-practices/references/rules/client-event-listeners.md../obsidian-plugin-react-best-practices/references/rules/client-passive-event-listeners.md../obsidian-plugin-react-best-practices/references/rules/async-parallel.md../obsidian-plugin-react-best-practices/references/rules/async-defer-await.md../obsidian-plugin-react-best-practices/references/rules/async-cheap-condition-before-await.md
Related skills
obsidian-plugin-react-best-practicesobsidian-plugin-react-componentsobsidian-plugin-shadcn-uiobsidian-plugin-shadcn-stylingobsidian-plugin-css-stylingobsidian-plugin-accessibilityobsidian-plugin-dev
More from zpankz/obsidian-skills
viva-llm
Use VIVA LLM for multi-provider chat, voice calls, terminal integration, assistants, skills, MCP tools, and agent mode inside Obsidian. Trigger when the user mentions VIVA LLM, voice chat, realtime voice, LLM providers in Obsidian, or vault-integrated AI chat.
1obsidian-plugin-accessibility
Use this skill when building or reviewing Obsidian plugin UI for keyboard access, ARIA labels, screen reader support, focus handling, or mobile touch targets. Accessibility is treated as mandatory, not optional.
1tasks
Create and query tasks using the Tasks plugin syntax including due dates, recurrence, priorities, and task queries. Use when the user mentions Tasks plugin, recurring tasks, task queries, or advanced task management in Obsidian.
1dataview
Create Dataview queries using DQL (Dataview Query Language), inline queries, and DataviewJS. Use when the user mentions Dataview, DQL, querying notes, listing notes by metadata, or creating dynamic views of vault content.
1defuddle
Extract clean markdown from web pages using Defuddle CLI, removing clutter to save tokens. Use when the user provides a URL to read or analyze.
1datacore
Create Datacore views using JSX/React syntax and the dc.* API. Use when the user mentions Datacore, dc.useQuery, JSX views, or React-based vault queries. Datacore is the successor to Dataview with better performance and interactive views.
1