Skip to content

Repository files navigation

Battleframe

Battleframe is an unofficial desktop shell for Pokemon Showdown that turns the browser client into a cleaner Windows app with native packaging, persistent shell settings, and a more focused battle workspace.

It keeps compatibility with the official web client and server flow while adding desktop chrome, layout controls, local preferences, and a Tauri bridge for a more app-like experience.

Battleframe is an unofficial project and is not affiliated with Smogon or Pokemon Showdown.

Screenshots

Before Battleframe
Original Pokemon Showdown browser layout Battleframe desktop shell

Battleframe live battle view

Why Battleframe

  • Native desktop packaging with installer output through Tauri
  • A persistent desktop shell around the official Pokemon Showdown client
  • Faster access to battles, rooms, replays, and team building from one window
  • Local shell settings for layout, theme accent, audio levels, and dense battle logging
  • A plugin-ready architecture for desktop-only enhancements such as Battle Pulse

What It Includes

  • React + TypeScript shell UI
  • Tauri v2 desktop app layer
  • Vendored pokemon-showdown-client source for controlled release builds
  • Same-origin iframe integration against the upstream client
  • Native window-state persistence
  • Desktop-focused styling and battle layout adjustments
  • Internal plugin registry for shell-side extensions

Repo Layout

  • src/ - shell app, workspace, plugins, stores, and styles
  • src-tauri/ - Rust native layer, Tauri config, and bundle assets
  • vendor/pokemon-showdown-client/ - vendored upstream client source
  • vendor/showdex/ - vendored Showdex source used for the standalone embedded build
  • scripts/ - sync and update helpers for upstream assets
  • public/showdown/ - synced client build output used at runtime

Quick Start

Requirements

  • Node.js
  • Rust
  • Visual Studio 2022 C++ Build Tools on Windows for Tauri desktop builds

Development

npm install
npm run tauri dev

The root install also installs the vendored Showdown client dependencies through the project postinstall hook.

Build For Release

npm run build
npm run tauri build

Release bundles are emitted to src-tauri/target/release/bundle/.

Upstream Workflow

Normal app builds only sync the vendored compiled client into public/showdown/.

Battleframe also builds the vendored Showdex standalone bundle and copies it into public/showdown/integrations/showdex/.

If you intentionally update the vendored upstream source, run:

npm run showdown:update

That rebuilds the vendored client and resyncs the runtime assets.

If you intentionally update the vendored Showdex source, run:

npm run showdex:install
npm run showdex:build
npm run showdown:sync

Notes

  • UPSTREAM.md documents the pinned upstream source and patch points to preserve during updates.
  • vendor/showdex/LICENSE preserves the upstream Showdex AGPL-3.0 license text.
  • src-tauri/icons/ contains the current Battleframe app icon set used for desktop bundles.

About

Unofficial desktop shell for Pokemon Showdown built with Tauri

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages