Guangcong Luo e6599c4af8 Preact: Replace teambuilder Wizard with Form
This replaces the old Preact Teambuilder Wizard with a new Preact
Teambuilder Form (which looks/works much more like the oldclient
teambuilder).

I admit defeat here. I made the Wizard with buttons rather than text
boxes because I thought it was the only way to fit everything into a
tiny vertical space.

But I got so many complaints about how the buttons were worse that I
gave text boxes another try, and I managed to fit them in with only
around two more pixels of height per set than the Wizard. And the
text boxes are so much nicer in every other way that it completely
eliminates any reason to use the Wizard.

I've retained all of the standard Preact client niceties:
- scales down to mobile
- fits 6 pokemon vertically on a 1440x900-equivalent screen
  - i.e. a 13" MacBook Air at default resolution
- a move multiselect mode (accessible by clicking the "Moves" label)
  - supports >4 moves
  - you might think this isn't useful for normal teambuilding, but it
    does let you add moves before removing them, if you want to be
    indecisive and come back later
- sample sets and box sets importer, right after selecting species

And added some new ones:
- type-color tints! these look surprisingly way nicer than you'd expect
- new type icons
- new gender icons
- a modern dropdown for Tera types
- animation when going from list view to editing mode
  - scroll position matching when leaving editing mode
- pressing Esc will now reliably leave editing mode
- in general, keyboard behavior should be more predictable
2026-06-29 10:40:30 +00:00
2025-04-03 18:56:51 -07:00
2026-06-29 10:40:14 +00:00
2025-02-25 20:05:32 -08:00
2025-05-19 13:40:12 -07:00
2025-09-15 03:50:42 +00:00
2026-06-09 17:57:29 +00:00
2025-04-18 05:47:58 +00:00
2025-04-18 05:47:58 +00:00
2026-06-29 10:40:14 +00:00
2019-02-27 05:16:17 -05:00
2017-03-08 12:29:33 -06:00
2026-06-13 22:44:15 +00:00
2013-04-27 01:51:38 -07:00
2026-06-09 17:57:29 +00:00

Pokémon Showdown Client

Navigation: Website | Server repository | Client repository | Dex repository

Introduction

This is a repository for most of the client code for Pokémon Showdown.

This is what runs play.pokemonshowdown.com.

WARNING: You probably want the Pokémon Showdown server, if you're setting up a server.

Browser support

Pokémon Showdown currently supports, in order of preference:

  • Chrome
  • Chromium browsers (Edge, Vivaldi, Brave, Opera...)
  • Firefox
  • Safari 5+
  • IE11+ and Edge
  • Chrome/Firefox/Safari for various mobile devices
  • any remotely modern browser

Pokémon Showdown is usable, but expect degraded performance and certain features not to work in extremely legacy browsers like:

  • Safari 4
  • IE9-10

Pokémon Showdown is mostly developed on Chrome, and Chrome or the desktop client is required for certain features like dragging-and-dropping teams from PS to your computer. However, bugs reported on any supported browser will usually be fixed pretty quickly.

New client

Development is proceeding on the client rewrite! The live version is available at https://play.pokemonshowdown.com/beta

You can contribute to it yourself using the same process as before, just use testclient-new.html rather than testclient-old.html.

Testing (the old client)

Client testing requires a build step! Install the latest Node.js (we require v20 or later) and Git, and run node build (on Windows) or ./build (on other OSes) to build.

You can make and test client changes simply by building after each change, and opening play.pokemonshowdown.com/testclient-old.html. This will allow you to test changes to the client without setting up your own login server.

Test keys

For security reasons, browsers don't let other websites control PS, so they can't screw with your account, but it does make it harder to log in on the test client.

The default hack makes you copy/paste the data instead, but if you're refreshing a lot, just add a config/testclient-key.js file, with the contents:

const POKEMON_SHOWDOWN_TESTCLIENT_KEY = 'sid';

Replace sid with the contents of your actual PS sid cookie. You can quickly grab it from:

https://play.pokemonshowdown.com/testclient-key.php

Make sure to put it in config/ and not play.pokemonshowdown.com/config/.

(This is the only supported method of logging in on the beta testclient.)

Other servers

You can connect to an arbitrary server by navigating to testclient-old.html?~~host:port. For example, to connect to a server running locally on port 8000, you can navigate to testclient-old.html?~~localhost:8000.

NOTE: Certain browsers will convert '?' to '%3F' when reading files off of the local filesystem. As a workaround, try using a different browser or serving the files locally first (ie. run npx http-server from the directory this README is in, then navigate in your browser to http://localhost:8080/testclient-old.html?~~localhost:8000).

Limitations

Even with a test key, the following things will fail in testclient:

  • Registering
  • Logging into other accounts (you can still switch to other unregistered accounts and back, though)

Everything else can be tested.

Warning

This repository is not "batteries included". It does NOT include instructions to run a full Pokémon Showdown login server, and we will not provide them. Please do not ask for help on this; you will be turned away.

If you make a mistake hosting a login server, your users' passwords can get stolen, so we do not want anyone to host a login server unless they can figure out how to do it without help.

It also doesn't include several resource files (namely, the /audio/ and /sprites/ directories) for size reasons.

On the other hand, as long as you don't want to run your own login server, this repository contains everything you need to test changes to the client; just see the "Testing" section above.

License

Pokémon Showdown's client is distributed under the terms of the AGPLv3.

The reason is mostly because I don't want low-effort proprietary forks that add bad code that steals everyone's passwords, or something like that.

If you're doing anything else other than forking, especially if you want to some client code files in your own open-source project that you want to release under a more permissive license (like, if you want to make your own multiplayer open-source game client for a different game), please ask at staff@pokemonshowdown.com. I hold all the copyright to the AGPLv3 parts and can relicense them to MIT for you.

WARNING: This is NOT the same license as Pokémon Showdown's server.

Description
The client for Pokémon Showdown
Readme AGPL-3.0 3.9 GiB
Languages
TypeScript 42.1%
PHP 29.1%
JavaScript 21.5%
CSS 5.2%
HTML 1.9%
Other 0.2%