Requirements
Before installing Citizen, ensure your environment meets these requirements.MediaWiki Version
Citizen requires a modern version of MediaWiki to take advantage of the latest features and APIs.Current requirement: MediaWiki 1.43.0 or later
skin.json:
skin.json
Why MediaWiki 1.43.0?
Citizen leverages features introduced in recent MediaWiki versions:- SkinMustache - The modern skin base class
- Codex v1.14.0+ - Design system components used throughout the skin
- ResourceLoader improvements - Better module loading and dependency management
- Modern PHP features - Type declarations, native types, and strict typing
- Vue 3 support - For reactive components like the command palette
Legacy Versions
If you’re running an older version of MediaWiki, you can use a legacy version of Citizen:Installing Legacy Versions
- Manual
- Git
- Composer
Download the specific release:
PHP Requirements
Citizen follows MediaWiki’s PHP requirements:- PHP 7.4.3+ for MediaWiki 1.39.x
- PHP 8.0+ for MediaWiki 1.40.x - 1.42.x
- PHP 8.1+ for MediaWiki 1.43.0+ (current)
PHP Extensions
All extensions required by MediaWiki are sufficient for Citizen:json- For JSON encoding/decodingmbstring- For Unicode string handlingxml- For XML parsing
Citizen uses
declare(strict_types=1) in all PHP files and requires strict type support.Server Requirements
Web Server
Any web server supported by MediaWiki works with Citizen:- Apache 2.4+
- Nginx 1.20+
- LiteSpeed
- IIS 10+
Database
Citizen doesn’t add any database requirements beyond MediaWiki’s:- MySQL 5.7.0+ or MariaDB 10.3+
- PostgreSQL 10+
- SQLite 3.8.0+
Client Requirements (Browser Support)
Citizen is built for modern web browsers and does not support Internet Explorer.Supported Browsers
Desktop Browsers
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Opera 76+
Mobile Browsers
- Chrome for Android
- Safari for iOS 14+
- Firefox for Android
- Samsung Internet
Browser Features Required
Citizen uses modern web features:- CSS Custom Properties (CSS variables)
- ES6 JavaScript (arrow functions, const/let, classes)
- Fetch API (for AJAX requests)
- IntersectionObserver (for scroll-based features)
- ResizeObserver (for responsive elements)
- localStorage (for preferences)
- Service Workers (optional, for PWA features)
Browser Compatibility Configuration
The skin’s ESLint configuration defines compatibility:.eslintrc.json
Dependencies
Citizen’s dependencies are automatically managed by MediaWiki’s ResourceLoader.PHP Dependencies
Defined incomposer.json:
composer.json
JavaScript Dependencies
All JavaScript dependencies are provided by MediaWiki or bundled with Citizen:MediaWiki Core Modules
mediawiki.storage- LocalStorage abstractionmediawiki.util- Utility functionsmediawiki.api- API clientmediawiki.page.ready- Page ready state
Codex Components
From MediaWiki 1.43.0’s bundled Codex (v1.14.0+):Citizen uses the Codex version bundled with your MediaWiki installation. The minimum is v1.14.0 (bundled with MW 1.43), but newer MW versions may provide a newer Codex.
Vue and Pinia
- Vue 3.4.27+ - For reactive components
- Pinia 2.0.16+ - For state management in the command palette
Optional Enhancements
These extensions are not required but enhance Citizen’s features.Recommended Extensions
PageImages (bundled with MediaWiki)
PageImages (bundled with MediaWiki)
Adds thumbnail images to search suggestion results.When installed, search results will show page images alongside titles and descriptions.
LocalSettings.php
TextExtracts (bundled with MediaWiki)
TextExtracts (bundled with MediaWiki)
Provides short text descriptions for search suggestions.
LocalSettings.php
ShortDescription
ShortDescription
Adds short descriptions under page titles and in search results.Install from MediaWiki.org
LocalSettings.php
TemplateStylesExtender
TemplateStylesExtender
Allows CSS variables in TemplateStyles, including Citizen’s design tokens.This lets wiki editors use Citizen’s CSS variables in template styles:Install from MediaWiki.org
LocalSettings.php
Styled Extensions
Citizen includes custom skin styles for 70+ MediaWiki extensions. These are automatically applied when the extensions are installed:VisualEditor
Modern WYSIWYG editing
Echo
Notification system
CodeMirror
Syntax highlighting editor
Semantic MediaWiki
Semantic data management
TabberNeue
Tab interfaces
Cargo
Data storage and querying
Popups
Hover page previews
MultimediaViewer
Enhanced image viewing
DiscussionTools
Modern discussion interface
For a complete list of supported extensions, see the Extension Support page or the README on GitHub.
Development Requirements
If you plan to contribute to Citizen or customize its source code, you’ll need:Node.js and npm
- Node.js 18+
- npm 9+
package.json
PHP Development Tools
For PHP linting and testing:Development Dependencies
- PHP
- JavaScript
composer.json
Docker Development Environment
The recommended development setup uses MediaWiki’s Docker environment:For detailed development setup instructions, see AGENTS.md in the repository.
Performance Considerations
Citizen is designed for good performance, but some features have resource implications:ResourceLoader Modules
Citizen loads several ResourceLoader modules:- skins.citizen.styles - Base styles (~50KB minified)
- skins.citizen.scripts - Core JavaScript (~30KB minified)
- skins.citizen.search or skins.citizen.commandPalette - Search functionality
- skins.citizen.preferences - User preferences panel (loaded on demand)
CDN and Caching
Ensure your MediaWiki installation has proper caching configured:LocalSettings.php
Progressive Web App
PWA features add a service worker (~5KB):LocalSettings.php
Checking Your Environment
To verify your environment meets all requirements:Verify file permissions
www-data, apache) must be able to read all files.Next Steps
Install Citizen
Ready to install? Follow the installation guide
View Demo
See Citizen in action on the Star Citizen Wiki