Pokémon Showdown Client is the open-source front-end that powers play.pokemonshowdown.com, one of the world’s most popular Pokémon battle simulators. Written in TypeScript, it handles everything you see in the browser — real-time battles with animated sprites, a full team builder, global chat rooms, a competitive ladder, and a replay viewer — all while staying responsive on mobile and maintaining backwards compatibility with older browsers. The legacy client uses jQuery for DOM manipulation; the new client (available in beta) is built with Preact.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/smogon/pokemon-showdown-client/llms.txt
Use this file to discover all available pages before exploring further.
What the Client Powers
The client repository is one piece of a larger ecosystem. It is responsible solely for the browser-side experience — connecting to a game server over SockJS, rendering UI panels, and managing local preferences and teams.Live Client
The production deployment at play.pokemonshowdown.com, used by millions of players every month.
Beta Client
The new Preact-based rewrite, available in beta. Contribute using
testclient-new.html.Server Repository
The game server that handles matchmaking, battle logic, and login. A separate repository.
Dex Repository
The Pokédex data layer, shared between the client and server ecosystems.
You probably want the server repository if you are setting up a Pokémon Showdown server. This client repository is for front-end development only.
Client–Server Relationship
The client connects to a running PS server instance using SockJS, a WebSocket-compatible transport that degrades gracefully on older browsers. The server URL is configurable: during local development you can point the test client at any host and port using the?~~host:port query syntax. The server handles authentication, matchmaking, room management, and battle state; the client renders that state and sends user actions back.
Browser Support
Pokémon Showdown targets a wide range of browsers, listed below in order of preference.- Fully Supported
- Degraded Support
| Browser | Notes |
|---|---|
| Chrome | Primary development target |
| Chromium browsers | Edge, Vivaldi, Brave, Opera |
| Firefox | Full support |
| Safari 5+ | Full support |
| IE11+ and Edge | Full support |
| Chrome / Firefox / Safari (mobile) | Full support |
Key Features
Real-Time Battles
Animated sprite battles across all generations, rendered in the browser with no plugins.
Team Builder
Full team builder with search, import/export, and validation against format rules.
Chat & Rooms
Global chat rooms, private messages, and tournament rooms with HTML sanitization.
Competitive Ladder
Rated battles across dozens of formats, with a live leaderboard.
Battle Replays
Watch and share replays hosted on replay.pokemonshowdown.com.
Desktop App
A packaged desktop client for Windows, macOS, and Linux (requires Chrome for drag-and-drop).
Licensing
- AGPLv3 (Client)
- MIT (Battle Engine)
The Pokémon Showdown Client as a whole is distributed under the GNU Affero General Public License v3. This applies to all TypeScript/JavaScript source files except those covered by the MIT licence below.If you want to use portions of the client code in your own open-source project under a more permissive licence, contact
staff@pokemonshowdown.com — the copyright holder can relicense AGPLv3 portions to MIT on request.What This Repository Does Not Include
As long as you do not need your own login server, the repository contains everything required to test client changes. See the Quickstart guide to get running in minutes.Next Steps
Quickstart
Install dependencies, build the client, and open the test client in your browser.
Architecture
Understand the four loading phases, the observable model system, and the panel framework.
