Skip to main content

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.

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.

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.
BrowserNotes
ChromePrimary development target
Chromium browsersEdge, Vivaldi, Brave, Opera
FirefoxFull support
Safari 5+Full support
IE11+ and EdgeFull support
Chrome / Firefox / Safari (mobile)Full support
Dragging and dropping teams from PS to your desktop requires Chrome or the desktop app.

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

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.
This licence is not the same as the Pokémon Showdown server licence. Make sure you are reading the correct repository’s licence for your use case.

What This Repository Does Not Include

This repository is not “batteries included.” It intentionally omits several things to keep the download small and to avoid enabling insecure deployments:
  • /audio/ and /sprites/ directories — excluded for size. The test client falls back to fetching these assets from play.pokemonshowdown.com automatically.
  • Login server instructions — instructions to run a full PS login server are not provided and will not be provided on request. Misconfigured login servers can expose user passwords.
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.

Build docs developers (and LLMs) love