bootsplashlisted
Install: claude install-skill ltatarev/skills
# Launch screen / bootsplash
The splash is rendered by **three** different things in sequence, each with its
own light/dark mechanism. All three have to agree or the handoff flashes:
| # | Surface | Light/dark comes from |
| --- | --- | --- |
| 1 | iOS launch screen (`BootSplash.storyboard`) | asset catalog appearance variants |
| 2 | Android launch theme (`Theme.BootSplash`) | `values-night/` + `drawable-night-*/` |
| 3 | JS overlay (`AnimatedBootSplash.tsx`) | `manifest.darkBackground` + `darkLogo` |
**1 and 2 render before any JS runs**, so they cannot read Unistyles or
`useColorScheme` — the split has to be baked into native resources.
## Sources of truth
| | Light | Dark |
| --- | --- | --- |
| Logo | `bootsplash/logo-light.svg` | `bootsplash/logo-dark.svg` |
| Background | the theme's light `surface` token | the theme's dark `surface` token |
The light side is passed to the CLI in the generate script (`--background` and
the SVG path). The dark side lives in the constants at the top of the dark
script.
Both backgrounds must mirror the app's theme file so the splash hands off to the
first screen with no flash. **If you change `surface` in either theme, change it
in both places here too** — nothing enforces this automatically.
## Why a script instead of the CLI's own flags
`react-native-bootsplash` v7 ships `--dark-background`, `--dark-logo` and
`--dark-brand`, which would do all of this. They are gated behind a paid license
key (`--license-key`), and the generato