@vanenshi/expo-plugins
v0.1.3
Published
A small collection of Expo config plugins.
Maintainers
Readme
@vanenshi/expo-plugins
A small collection of Expo config plugins.
Install
npx expo install @vanenshi/expo-pluginswithDisplayName
Goal: Give each build variant (dev / beta / prod) its own home-screen
display name on both iOS and Android — without touching the internal root name
(which drives bundle structure and forces slow clean rebuilds when changed).
Underneath:
- iOS — sets
CFBundleDisplayNameinInfo.plistviawithInfoPlist. - Android — sets
app_nameinstrings.xmlviawithStringsXml.
// app.config.ts
export default {
name: "MyApp", // internal project name — unchanged
plugins: [
["@vanenshi/expo-plugins/display-name", { displayName: "MyApp (Beta)" }],
],
};Options
| Option | Type | Description |
| ------------- | -------- | -------------------------------------------------- |
| displayName | string | Name shown to users on the home screen (required). |
withExpoGoogleFonts
Goal: Embed @expo-google-fonts/* faces into the native projects without
manually listing every font path in your app config. The plugin reads the
weight/style folder layout from your installed packages, resolves the .ttf
file paths, and delegates to expo-font — so you only declare which font
families and weights you want.
Underneath:
- Discovery — walks
@expo-google-fonts/<name>package folders, parses folder names like400Regular/700Bold_Italic, and collects.ttfpaths. - Delegation — passes the resolved font manifest to
expo-font/app.plugin(withFonts), which handles embedding into both Android assets and iOSInfo.plist.
npx expo install expo-font @expo-google-fonts/roboto @expo-google-fonts/inter{
"plugins": [
[
"@vanenshi/expo-plugins/google-fonts",
{
"fonts": [
{
"packageName": "roboto",
"weights": [400, 500, 700],
"importItalic": true
},
{ "packageName": "inter", "weights": [400, 600] }
]
}
]
]
}No separate ["expo-font", ...] entry is needed.
Need the raw
expo-fontoptions (e.g. to merge with local fonts)? ImportbuildExpoGoogleFontsOptions(input)and pass the result to["expo-font", options]yourself.
Options
| Option | Type | Default | Description |
| --------------- | ------------------ | --------------- | ------------------------------------------------------ |
| fonts | GoogleFontSpec[] | — | Fonts to embed (see below). |
| projectRoot | string | process.cwd() | Where to resolve @expo-google-fonts/* packages from. |
| warnOnMissing | boolean | true | Warn when a package, weight, or .ttf is missing. |
GoogleFontSpec: { packageName, fontFamily?, weights?, importItalic? } —
weights defaults to [400], fontFamily defaults to the package's metadata
family name.
Development
This package uses expo-module-scripts and follows expo/config-plugins conventions.
pnpm install
pnpm run build # compile src/ → build/
pnpm run lint
pnpm testExample app
example is a minimal Expo app wiring both plugins, used to verify plugins
work end-to-end via expo prebuild:
cd example
pnpm install
npx expo prebuild --clean
grep "Example (Beta)" android/app/src/main/res/values/strings.xml
grep "CFBundleDisplayName" ios/*/Info.plistSee example/README.md for details.
