MCPcopy Index your code
hub / github.com/czy0729/Bangumi

github.com/czy0729/Bangumi @8.36.4 sqlite

repository ↗ · DeepWiki ↗ · release 8.36.4 ↗
6,527 symbols 35,229 edges 6,444 files 561 documented · 9%
README

header

release license stars forks issues downloads

Bangumi

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).

中文

Download

Android APK | AltStore Sideload | iOS Current Methods | Expo

  • Google Play was removed due to a report — currently on hold
  • iOS paid developer account has expired; given issues with community content, copyright, and regional regulations, no further App Store submissions are planned

Features

Basic Features (mirroring the website)

Links lead to web previews (view-only, no interaction)

Extended Features

Preview

Below are screenshots from June 2025, showing various UI pages with minimal overlap. If images don't load, visit Yuque (Chinese).

00 10 20 30 40 60 70 80 90 100 110 120

Version

Current Version Details (Chinese)

Full Changelog (Chinese)

Online

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)

Storybook Component Panel

Development Notes

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:

  • Avoid rendering oversized images (the single biggest impact on smoothness)
  • Minimize simultaneous and slow network requests (including image loads)
  • Cache computed results whenever possible
  • Defer rendering for off-screen areas (no built-in browser-like solution exists)
  • Favor functional programming and async logic; minimize this usage and loops
  • Reduce nesting depth where possible (even more critical for web)

Local Development

Environment

Details

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.

NPM

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

Android USB Debugging Issues

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.

Common Errors (Including Mac M1)

Details

Successfully debugged on Mac M1. iOS Expo runs smoothly, but APK builds had several issues:

  • Make sure you're using the correct JAVA JDK, not JRE!
  • Install watchman before building, otherwise you'll hit file watcher errors
  • If the build fails, run ./gradlew clean in the android directory and retry
  • If a node_modules package is named in the error, try manually installing it
  • For unpredictable issues, try restarting the machine

Disclaimers

  • All 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.

Acknowledgements

[Bangumi-OnAir] ekibun — episode broadcast data

[bangumi-mosaic-tile] [weizhenye](http

Extension points exported contracts — how you extend this code

Global (Interface)
(no doc)
src/types/global.d.ts
Store (Interface)
(no doc)
src/components/@/react-native-hold-menu/components/provider/Provider.tsx
DownloadOptions (Interface)
(no doc)
src/utils/thirdParty/image-cache-manager/type.ts
UserProgress (Interface)
(no doc)
src/stores/user/types.ts
IItemSettingBlock (Interface)
(no doc)
src/screens/_/item/setting-block/types.ts
GlobalThis (Interface)
(no doc)
src/types/global.d.ts
HoldMenuProviderProps (Interface)
(no doc)
src/components/@/react-native-hold-menu/components/provider/types.d.ts
BlurRootProps (Interface)
(no doc)
src/types/react-native-realtimeblurview.d.ts

Core symbols most depended-on inside this repo

rc
called by 1117
src/utils/dev/index.ts
map
called by 852
src/screens/home/link/store/computed.ts
t
called by 824
src/utils/track/index.ts
useStore
called by 761
src/stores/utils.ts
select
called by 525
android/app/src/main/java/com/czy0729/bangumi/doh/BangumiOkHttpClientFactory.java
info
called by 470
src/utils/ui/index.ts
filter
called by 433
src/screens/user/v2/store/computed.ts
getTimestamp
called by 409
src/utils/date/index.ts

Shape

Function 3,859
Method 1,534
Class 1,113
Interface 19
Enum 2

Languages

TypeScript98%
Java2%
Python1%

Modules by API surface

src/screens/home/subject/store/computed.ts143 symbols
src/stores/theme/computed.ts136 symbols
src/constants/html/index.ts75 symbols
src/constants/api/tinygrail.ts62 symbols
src/stores/tinygrail/computed.ts58 symbols
src/screens/home/subject/store/utils.ts47 symbols
src/utils/utils/index.ts45 symbols
src/screens/tinygrail/sacrifice/store/computed.ts45 symbols
src/screens/rakuen/topic/store/computed.ts40 symbols
src/screens/user/zone/store/computed.ts37 symbols
src/stores/user/computed.ts33 symbols
src/utils/thirdParty/axios.js32 symbols

Dependencies from manifests, versioned

@ant-design/react-native3.1.3 · 1×
@babel/core7.25.2 · 1×
@babel/plugin-proposal-class-properties7.18.6 · 1×
@babel/plugin-proposal-decorators7.21.0 · 1×
@babel/plugin-transform-export-namespace-from7.22.11 · 1×
@babel/plugin-transform-modules-commonjs7.22.15 · 1×
@babel/preset-react7.22.15 · 1×
@babel/preset-typescript7.22.15 · 1×
@expo/vector-icons15.0.2 · 1×
@gorhom/portal1.0.11 · 1×
@react-native-async-storage/async-storage2.2.0 · 1×
@react-native-community/async-storage1.12.1 · 1×

For agents

$ claude mcp add Bangumi \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact