
A third-party Bangumi client built with React Native. Compatible with both iOS and Android while maintaining maximum consistency across platforms.
Bangumi is a Chinese website for tracking anime, music, dramas, games, and more — think MyAnimeList but broader in scope, covering all media types. It is a fully Chinese community with no plans to provide i18n or localization. Over 100 pages have been developed, redesigned for mobile, covering nearly every page on the website.
Originally developed as a React Native exercise — through this project I've learned and continue to learn more about mobile development. For detailed project documentation, visit Yuque (Chinese).
Android APK | AltStore Sideload | iOS Current Methods | Expo
Links lead to web previews (view-only, no interaction)
Below are screenshots from June 2025, showing various UI pages with minimal overlap. If images don't load, visit Yuque (Chinese).
Current Version Details (Chinese)
Full Changelog (Chinese)
A single-page application preview built with @storybook/react-native 6.5, reconstructing a full navigation flow with minimal intrusion into the main project (performance is not optimized — not comparable to production apps built with Next.js, for example).
Key implementation: navigate | window popstate
As Expo for web has matured, a proper web version using the same codebase may be considered in the future.
SPA Preview (web collection management features are in progress; basic info display is supported, optimized for mobile)
Development has been ongoing since React Native 0.37. Back then, there weren't nearly as many polished solutions and third-party libraries as today — no React Hooks, no react-native-reanimated, no Expo libraries, not even concepts like Pressable or color scheme. TypeScript was only added in the last couple of years, so many early designs didn't account for typing. Newer all-in-one solutions like expo-router and One have also emerged, capable of producing high-performance builds for both mobile and web. As a result, the codebase contains many legacy patterns that are difficult to refactor with modern approaches.
Making a React Native app feel smooth takes real effort — but with the right patterns, it can be just as smooth as native. After years of development, the key performance bottlenecks come down to a few things:
this usage and loopsDetails
Development is done on macOS — iOS uses the Expo client for debugging, Android runs on a physical device via USB.
After 4+ years of iteration, both this project and the original Expo setup have diverged significantly. iOS currently runs only on Expo, while Android runs on Metro.
To fully leverage Expo's streamlined debugging on iOS, no third-party libraries unsupported by Expo are used. On Android, maximum performance is prioritized, so it has been ejected from Expo and uses many third-party performance libraries as replacements.
To debug locally, do not install packages at the root. Instead, go to ./packages/[target-env]/, install with yarn, then run yarn env [xxx] to switch to the target environment. Refer to the root package.json for available commands. The typical local dev command is yarn dev.
If things don't run, don't struggle too much — it's recommended to set up all prerequisites using the official workflow before running this project. Windows and macOS environments differ quite a bit; refer to the Expo documentation.
Details
Do not use a mirror registry (e.g., taobao) — it may cause proxy errors during environment setup.
npm config set registry https://registry.npmjs.org
For the first download, packages may be slow. Due to many legacy dependencies with complex version requirements, use yarn to install.
git clone https://github.com/czy0729/Bangumi
cd ./Bangumi
yarn
Details
If installation fails, try adding sudo before the command.
Enable developer debugging mode on Android. You need to open Android Studio at least once while connected via USB to allow debugging.
Make sure the app has installation and overlay permissions.
For spawnSync adb ENOENT, see StackOverflow.
If the first build fails with a read timeout, you may need a VPN. Builds that worked yesterday may fail today — gradlew dependencies only cache for 24 hours. Try --offline.
Details
Successfully debugged on Mac M1. iOS Expo runs smoothly, but APK builds had several issues:
./gradlew clean in the android directory and retrynode_modules package is named in the error, try manually installing itAll data and information come from various websites. No media download, direct playback, or modification functions are provided.
The project does not store any third-party user information.
This code is for learning and personal use only. Not for commercial use. Contact for takedown requests.
[Bangumi-OnAir] ekibun — episode broadcast data
[bangumi-mosaic-tile] [weizhenye](http
$ claude mcp add Bangumi \
-- python -m otcore.mcp_server <graph>