# Dark Mode Competitor and Feature Matrix Date: 2026-08-22 Scope: Phase 2 research only Target: Dark Mode by GracePress Source changes: none ## Name clarification No current WordPress.org plugin listing named "Vampire Dark Mode" was found. The likely intended reference is Dracula Dark Mode. Dracula is retained here only as a historical feature and support-case reference because its WordPress.org listing is closed. ProWritingAid also calls its own application theme "Vampire Mode," but that is not a WordPress plugin. ## Comparison set ### WP Dark Mode by WPPOOL - Current version observed: 5.3.9. - Active installations observed: 20,000+. - Current strengths: mature frontend/admin product, OS preference, persistence, blocks, Elementor, presets, media tuning, device visibility, custom triggers, caching awareness, and broad compatibility work. - Useful lessons: placement flexibility, accessibility repair history, caching awareness, and compatibility testing. - Poor fit for GracePress: analytics, social sharing, AI preset generation, extensive commercial upsell surfaces, telemetry SDK complexity, and broad feature sprawl. - Source: https://wordpress.org/plugins/wp-dark-mode/ ### Darkify - Current version observed: 2.0.1. - Active installations observed: 600+. - Current strengths: modern sectioned admin, live site preview, settings search, section/all reset, backup/restore, independent frontend/admin/editor controls, mobile controls, selected menu placement, Gutenberg block, and zero frontend output when disabled. - Useful lessons: information architecture, preview workflow, independent surfaces, bounded reset, and no-output disabled state. - Caution: very large breadth, React build complexity, many commercial features, and a much larger maintenance surface than GracePress currently needs. - Source: https://wordpress.org/plugins/darkify/ ### Dark Mode Toggle by ScriptsTown - Current version observed: 1.7.5. - Active installations observed: 2,000+. - Tested through WordPress 7.1. - Current strengths: lightweight activation, persistent user choice, basic switch sizing/position, simple exclusions, and a small administration surface. - Useful lesson: the free plugin's value proposition is simplicity. - Public review cautions: limited customization, image inversion complaints, and mobile visibility complaints. - Source: https://wordpress.org/plugins/dark-mode-toggle/ ### Dark Mode for WP Dashboard by Naiche - Current version observed: 1.3.4. - Active installations observed: 3,000+. - Current strengths: per-user Light/Dark/Auto preference, instant toolbar toggle, block editor and Site Editor support, CSS custom-property design tokens, developer filters, and no settings-page bloat. - Useful lessons: admin preference belongs to each user, editor behavior should be separable, and a stable public body class gives integrations a clean hook. - Current support caution: third-party screens and editor canvases still need ongoing compatibility work. - Source: https://wordpress.org/plugins/dark-mode-for-wp-dashboard/ ### Dracula Dark Mode, historical reference - Current status: closed on WordPress.org. - Useful historical features: frontend/admin mode, menu and floating controls, custom CSS, and extensive styling options. - High-value caution cases: dark elements active after admin mode was disabled, preference resetting between pages, visual regression after updates, image degradation, editor/media incompatibility, scrollbar changes, excessive toggle z-index, and collisions with browser dark-mode extensions. - The admin-disable complaint closely matches a defect already confirmed in Dark Mode by GracePress. - Source: https://wordpress.org/support/plugin/dracula-dark-mode/ ## Feature decision matrix | Feature | Evidence | Decision | Complexity | GracePress direction | |---|---|---:|---:|---| | Reliable visitor preference | All maintained competitors | ADOPT | Low | Define and document deterministic precedence across URL override, manual choice, OS preference, schedule, and default. | | Per-user admin preference | Dashboard plugin | ADOPT | Moderate | Store Light/Dark/Auto in user meta rather than forcing one site-wide admin state. | | Enforced frontend/admin enable switches | Darkify and competitor bug reports | ADOPT | Low | Disabled must mean no corresponding CSS, JS, toolbar control, or output. | | Independent block/classic editor controls | Darkify and Dashboard plugin | ADAPT | Moderate | Separate editor-canvas behavior from general wp-admin after the base admin setting is repaired. | | Configurable schedule range | Darkify and WP Dark Mode | ADOPT | Moderate | Replace fixed 6 PM to 6 AM with start/end controls and explicit site-timezone behavior. | | Cache-safe schedule evaluation | WP Dark Mode caching feature | ADAPT | Moderate | Do not control caching plugins. Emit stable configuration and calculate current mode safely at runtime. | | Live preview | Darkify | ADOPT | Moderate | Preview representative text, links, forms, media, toggle, and transition in desktop/mobile frames. | | Settings section navigation | Darkify | ADOPT | Low | Use native server-rendered tabs or sidebar sections; React is unnecessary for the current scale. | | Settings search | Darkify | REJECT FOR NOW | Moderate | Eighteen settings do not justify command-palette complexity. Revisit only if the surface grows materially. | | Section reset and reset-all | Darkify | ADOPT | Low | Make scope explicit, add confirmation, and preserve unrelated settings. | | Unsaved-change indication | Modern settings behavior | ADOPT | Low | Show dirty state, save success, and validation errors clearly. | | Import/export settings | Darkify | INVESTIGATE LATER | Moderate | Useful for agencies, but not required for the first public candidate. | | Clean uninstall option | Darkify | ADOPT | Low | Add an explicit retention/removal policy and an opt-in cleanup choice. | | Device visibility controls | WP Dark Mode and Darkify | ADOPT | Low | Desktop/mobile visibility is sufficient; avoid unreliable user-agent dependence. | | Floating offsets and safe z-index | Competitors and Dracula support | ADOPT | Low | Add horizontal/vertical offsets and use a documented, non-aggressive stacking level. | | Dozens of switch styles | Commercial competitors | REJECT | High maintenance | Keep three or four accessible, distinctive, fully tested controls. | | Switch color customization | WP Dark Mode and Darkify | ADAPT | Moderate | Offer a small palette and accessible custom accent, not unrestricted style sprawl. | | Selected-menu placement | Darkify and Dracula | ADAPT | Moderate | Replace automatic injection into every menu with an explicit block/menu-item placement model. | | Shortcode placement | Existing GracePress feature | KEEP | Low | Preserve shortcode compatibility and improve accessible output. | | Gutenberg toggle block | WP Dark Mode and Darkify | INVESTIGATE | Moderate | Valuable public-ecosystem integration, but schedule after the core engine and admin redesign stabilize. | | Elementor widget | WP Dark Mode and Darkify | REJECT FOR FIRST RELEASE | High | Shortcode and block cover the immediate need without vendor-specific maintenance. | | Custom CSS selector trigger | WP Dark Mode | INVESTIGATE | Moderate | Potentially useful for existing buttons; requires a safe, understandable binding model. | | Page/post picker exclusions | Darkify and DarkMySite | ADAPT | Moderate | Replace comma-separated IDs with searchable WordPress content selection plus a validated advanced fallback. | | Element exclusions | All broad competitors | KEEP AND REPAIR | Moderate | Validate bounded selectors, report invalid entries, and provide common presets. | | Allow-only mode | DarkMySite/Darkify | INVESTIGATE | Moderate | Useful for difficult sites but can complicate the mental model. | | Color presets | WP Dark Mode and Darkify | INVESTIGATE | High | Our inversion engine does not naturally map to theme palettes; this implies an engine-level design decision. | | Manual background/text/link colors | Darkify | INVESTIGATE | High | Do not bolt palette controls onto an inversion engine without a coherent rendering model. | | Image brightness/contrast/grayscale | Darkify, DarkMySite, WP Dark Mode | ADAPT | Low | Replace the ambiguous media-opacity slider with clearer image/media controls and safe defaults. | | Image/video replacement | Commercial competitors | REJECT | High | Media-library mapping and responsive source handling are disproportionate for this plugin. | | Scrollbar styling | Darkify | REJECT BY DEFAULT | Low | It creates browser inconsistency and was a Dracula support complaint; allow custom CSS instead. | | Reduced-motion support | Accessibility requirement | ADOPT | Low | Disable pulse and veil motion under prefers-reduced-motion unless the user explicitly opts back in. | | Descriptive ARIA and pressed state | WP Dark Mode repair history | ADOPT | Low | Use native buttons with accessible names, aria-pressed, focus styles, and keyboard operation. | | Custom keyboard shortcut recorder | Darkify | REJECT | Moderate | Prefer no global shortcut by default; if retained, make it optional and ignore typing/editor contexts. | | Stable public CSS class and filters | Dashboard plugin | ADOPT | Low | Publish a stable root class and a small documented filter/action contract. | | Full Site Editor support | Dashboard plugin | ADAPT | Moderate | Add to compatibility testing and repair scope rather than claiming universal support immediately. | | Third-party plugin compatibility packs | Dashboard plugin | INVESTIGATE LATER | Ongoing | Begin with WordPress core surfaces; add integrations only from reproducible issues. | | Analytics and usage counters | WP Dark Mode | REJECT | Privacy/maintenance | No tracking or usage analytics belongs in the first public GracePress plugin. | | AI color generation | WP Dark Mode | REJECT | High/external | Unnecessary external-service, privacy, cost, and review complexity. | | Social sharing | WP Dark Mode | REJECT | Unrelated | Outside the dark-mode product boundary. | | Remote fonts/images/CDN assets | Historical competitor cleanups | REJECT | Privacy | Keep every runtime/admin visual asset local and license-compatible. | | Premium comparison/upsell panels | Commercial competitors | REJECT | Product policy | The public GracePress interface should remain focused and non-spammy. | ## Recommended 1.1.0 product scope The first redesigned candidate should remain bounded to these changes: 1. Repair and actually enforce frontend and admin enable settings. 2. Move admin preference to per-user Light, Dark, or Auto behavior. 3. Establish and document mode precedence. 4. Replace fixed schedule behavior with configurable start/end times evaluated safely at runtime. 5. Reorganize the admin page into Overview, Behavior, Toggle, Rendering, Advanced, and Help sections. 6. Build a representative live preview with desktop/mobile width controls. 7. Add visible dirty, saving, saved, and validation states. 8. Add section reset and reset-all with explicit scope. 9. Add desktop/mobile toggle visibility and safe floating offsets. 10. Keep a small set of accessible toggle styles and add accent-color control. 11. Replace automatic all-menu injection with a deliberate placement explanation; preserve shortcode support. 12. Repair page/element exclusions and provide clearer validation. 13. Replace media opacity language with image/media brightness, contrast, and grayscale controls where technically coherent. 14. Add reduced-motion behavior. 15. Repair button semantics, labels, state, keyboard behavior, and shortcut conflicts. 16. Emit no frontend assets when frontend mode is disabled and no admin engine when admin mode is disabled. 17. Remove private logging/routing remnants and publish only a small stable integration contract. 18. Add explicit data-retention and clean-uninstall policy. ## Deferred candidates - Gutenberg block. - Import/export. - Custom existing-element triggers. - Allow-only rendering. - Color-preset or native recoloring engine. - Third-party compatibility packs. - Multisite network policy UI. ## Explicitly rejected direction - Analytics or telemetry. - AI-generated themes. - Social-sharing features. - Remote runtime assets. - Large premium-style upsell surfaces. - Dozens of decorative switches. - Image/video replacement. - Vendor-specific page-builder widgets in the first release. - React solely for the settings page. - Claims of universal theme/plugin compatibility without a maintained test matrix. ## Phase 2 conclusion The strongest product opportunity is not matching commercial feature count. It is a smaller, trustworthy dark-mode plugin with deterministic behavior, a much better native admin experience, accessible controls, cache-safe scheduling, no telemetry, and disciplined compatibility claims. The next phase should convert the recommended 1.1.0 scope into an admin information-architecture specification and visual direction before source edits begin.