Shizu Store Developer Docs

shizu_store.json
Reference Guide

Everything you need to know to customize your Shizuku-based app's presence on the Shizu CoreFetch Store. Override default GitHub data, configure your developer portfolio, add localized text, and target your custom ads.

Open JSON Builder View Example JSON Download Schema View README Raw JSON Raw Schema

What is shizu_store.json?

shizu_store.json is a manifest file that tells the Shizu CoreFetch Android app how to beautifully display your application — overriding the default GitHub data with your custom name, description, icon, developer info, and ads.

The Shizu Store automatically discovers and lists Shizuku-based apps. If you don't provide this file, your app will still appear, but it will use your GitHub profile picture as the icon and fetch basic details from your repository description and README. Adding a shizu_store.json unlocks a clean, tailored UI/UX experience for your users.

To apply custom branding, the store scans for a file named exactly shizu_store.json at the root of your GitHub repository. The filename is case-sensitive.

File Placement

Place shizu_store.json at the root level of your GitHub repository — the same level as your README.md.

Repository Structure
# [PASS] Correct — file is at the root
my-shizuku-app/
├── shizu_store.json   ← here
├── README.md
├── app/
│   └── src/...
└── build.gradle

# [FAIL] Wrong — file is in a subdirectory
my-shizuku-app/
├── docs/
│   └── shizu_store.json   ← NOT here
└── ...

The raw URL to your file will be something like:
https://raw.githubusercontent.com/<user>/<repo>/main/shizu_store.json

Required Fields

If you choose to create a shizu_store.json file for custom branding, it must include these four fields at minimum. If any are missing or invalid, the store will ignore the file and fall back to your default GitHub repository data.

Field Type Description
app_name string Display name of your application.
package_name string Android package name (e.g. xyz.siwane.myapp). Must be valid Java package format.
short_description string One-line description shown in listings. Max 200 characters.
icon_url string (URL) Absolute HTTPS URL to your app's icon. Square PNG or WebP recommended.

Minimal valid example

JSON
{
  "app_name": "My Shizuku App",
  "package_name": "xyz.siwane.myapp",
  "short_description": "Does something cool with Shizuku.",
  "icon_url": "https://raw.githubusercontent.com/you/repo/main/icon.png"
}

Extended Fields

These fields enhance how your app appears in the store, including your developer portfolio and community integration.

Field Type Description
detailed_descriptionstringLong-form description. Supports \n and Markdown **bold**.
developer_messagestringA personal message to your users displayed in a dedicated card.
banner_urlstringAbsolute URL to a banner image (16:9 recommended).
screenshotsarrayArray of absolute URLs to screenshot images.
repo_urlstringDirect link to the GitHub repository.
app_websitestringOfficial website for your app.
store_issue_numberintegerThe GitHub Issue number used to fetch and display user comments natively.
adbooleanSet to true to enable custom ad banners in your app details.
adsarrayArray containing your custom ad configurations (See Monetization section).
developerobjectRich developer portfolio info. See below.
localesobjectTranslated strings per language code. See Languages section.

Developer Portfolio Object

The developer object powers the developer dashboard in the store, showing your banner, website, and other apps.

JSON
"developer": {
  "name":        "Jamal El Hizazi",
  "banner_url":  "https://domain.com/coverture.jpg",
  "account_url": "https://github.com/elhizazi1",
  "email":       "[email protected]",
  "website":     "https://siwane.xyz",
  "portfolio":   "https://jamal.elhizazi.me",
  "socials": {
    "facebook":  "https://fb.com/elhizazi2",
    "instagram": "https://instagram.com/elhizazi1",
    "x":         "https://x.com/elhizazi1",
    "youtube":   "https://youtube.com/@si1xyz",
    "github":    "https://github.com/elhizazi1",
    "telegram":  "https://t.me/elhizazi1"
  }
}

Ads & Monetization

Shizu CoreFetch empowers developers by allowing them to display their own custom ads directly inside their app's details page. You keep 100% of the traffic. Set "ad": true and configure the ads array.

JSON
"ad": true,
"ads": [
  {
    "position": "top",
    "image_url": "https://yourdomain.com/ad_top.webp",
    "target_url": "https://sponsored-link.com"
  },
  {
    "position": "bottom",
    "image_url": "https://yourdomain.com/ad_bottom.jpeg",
    "target_url": "https://wa.me/123456789"
  }
]
Ad Policy & Restrictions

Developers have complete freedom to promote their own products, external links, or sponsors. However, the following categories are strictly prohibited: Gambling, Alcohol, Drugs, Pornography, and Religious disparities/paradoxes. Violating this policy will result in the immediate blacklisting of the ad or the application from the store ecosystem.

Languages & Locales

The Shizu Store natively supports 9 languages. Add translated strings under the locales key using BCP 47 language codes. The store will display the appropriate locale based on the user's device language, falling back to en if unavailable.

arArabic
enEnglish
frFrench
esSpanish
ptPortuguese
ruRussian
hiHindi
zhChinese
jaJapanese

You can also add any other language code under locales — the schema allows any BCP 47 code. Additional languages beyond the 9 listed may be displayed if the store adds support later.

What can be translated?

Each locale object supports these translatable fields:

FieldDescription
app_nameApp name in the target language
short_descriptionShort listing description
detailed_descriptionLong description with formatting
developer_messageTranslated message from the developer
developer_nameDeveloper's name in target language (e.g. Arabic)

Store Architecture & Disclaimer

Decentralized Auto-Fetching: The Shizu CoreFetch store acts as an intelligent bridge. It auto-indexes Shizuku applications and fetches metadata and APK releases directly from the developers' GitHub repositories. There is no direct hosting or intervention from the store itself. The ecosystem relies entirely on the open-source community.

Disclaimer of Liability

The creator of the Shizu CoreFetch store (Jamal El Hizazi) is not responsible for the functionality, safety, or content of any third-party application published in the store. All responsibility lies solely with the respective app developer.

However, the store administration reserves the absolute right to blacklist or block any application or advertisement if a contradiction with the store's policies is discovered, in order to prevent harm to users.

Validation

Always validate your shizu_store.json before publishing. Malformed JSON will cause the store to ignore your customizations and display the default GitHub data instead.

Online (recommended)

1
Open the JSON Schema Validator

Go to jsonschemavalidator.net

2
Paste the schema

Copy the contents of schema.json into the left (Schema) panel.

3
Paste your JSON

Copy your shizu_store.json into the right (Input JSON) panel and check for errors.

Command Line with ajv

Shell
# Install ajv-cli
npm install -g ajv-cli

# Validate your file
ajv validate -s schema.json -d shizu_store.json

Python

Python
pip install jsonschema

python3 - <<'EOF'
import json, jsonschema

with open("schema.json") as f:
    schema = json.load(f)
with open("shizu_store.json") as f:
    data = json.load(f)

jsonschema.validate(data, schema)
print("[PASS] Valid!")
EOF

Quick JSON syntax check

Shell
python3 -m json.tool shizu_store.json > /dev/null && echo "[PASS] Valid JSON"

Common Mistakes

1. Duplicate keys in an object

JSON does not allow duplicate keys inside the same object. Most parsers will silently use the last value, which leads to data loss.

Wrong
{
  "app_name": "My App",
  "app_name": "My App Again"  ← duplicate key!
}

2. Trailing commas

JSON does not allow a comma after the last item in an object or array.

Wrong
{
  "app_name": "My App",
  "package_name": "xyz.siwane.app",  ← trailing comma
}
Correct
{
  "app_name": "My App",
  "package_name": "xyz.siwane.app"
}

3. Relative URLs

All URL fields (icon_url, banner_url, screenshots, etc.) must be absolute HTTPS URLs. Relative paths won't work because the store fetches them remotely.

Wrong
"icon_url": "./assets/icon.png"
Correct
"icon_url": "https://raw.githubusercontent.com/you/repo/main/assets/icon.png"

4. Wrong file name or location

To apply your custom branding, the file must be named exactly shizu_store.json (lowercase, with underscore) and placed at the root of the repository.

Security Notice

The Shizu Store installs APKs silently using Shizuku's elevated system permissions. This is a powerful capability — users who install your app from the store are implicitly trusting you as a developer.

As a developer whose app is listed on the Shizu Store, you agree to act responsibly. This means:

Shizuku grants apps ADB-level permissions. Apps running under Shizuku can perform sensitive operations like reading private data, modifying system settings, and managing other apps. Always use the minimum permissions necessary.

FAQ

Do I need to submit my app anywhere to be listed?

No submission is required. The store automatically detects Shizuku-based repositories on GitHub. Adding a shizu_store.json simply gives you full control over how your app is presented to users.

Can I use a CDN or my own server instead of GitHub raw URLs?

Yes. Any publicly accessible HTTPS URL is valid for all URL fields. GitHub raw URLs are simply the most common choice because the JSON file lives in your GitHub repo.

What happens if a user's device language isn't in my locales?

The store falls back to the root-level (non-localized) values — i.e., whatever you put in app_name, short_description, etc. at the top level of the JSON. We recommend writing those in English.

Do I have to include all 9 languages?

No. You can include as many or as few locales as you want. Any locale you omit will automatically fall back to the root-level values.

How do I format descriptions with bold text and line breaks?

Use \n for newlines and **text** for bold text within description strings. These are interpreted by the store when rendering the app's detail page.

My app doesn't require Shizuku to run — can I still list it?

The store is designed for Shizuku-based apps. You can list it, but be clear in your description that Shizuku is not required for its core functionality.

Is there a file size limit for the JSON?

There is no hard limit documented, but keep the file reasonable. A few kilobytes is typical. Avoid embedding very long strings directly — link to external resources instead.

Can I have multiple apps in the same repository?

No. Each repository represents a single app in the store's auto-indexing logic. To list multiple apps, create separate repositories for each.