Devvit's splash screen is a pain in the ass because:
- It ONLY accepts PNG files (no SVG, no JPEG)
- You need to configure it in TWO places
- The documentation doesn't make this clear
- If you fuck it up, you get the default Snoo icon
You need TWO PNG files in src/client/public/:
-
Splash background - The main background image
- Recommended size: 1200x630px or larger
- Format: PNG only
- Example:
splash.png
-
App icon - Small icon shown on the splash screen
- Recommended size: 256x256px or 512x512px
- Format: PNG only
- Example:
icon.pngorocricon_adobe_reddit.png
This is the static configuration used by the Devvit platform:
{
"post": {
"dir": "dist/client",
"entrypoints": {
"default": {
"entry": "index.html",
"splash": "splash.png",
"icon": "ocricon_adobe_reddit.png"
}
}
}
}This is the runtime configuration when creating posts programmatically:
return await reddit.submitCustomPost({
splash: {
backgroundUri: 'splash.png',
buttonLabel: 'Launch App',
description: 'Your app description here',
heading: 'Your App Heading',
appIconUri: 'ocricon_adobe_reddit.png',
},
// ... rest of config
});IMPORTANT: The file names in both places MUST match exactly.
"splash": "splash.svg" // WRONG - will show default Snoo// devvit.json
"splash": "splash.png"
// post.ts
backgroundUri: 'background.png' // WRONG - doesn't matchIf your PNG files are in src/client/assets/ instead of src/client/public/, they won't be copied to the build output.
You added the PNG files but forgot to run npm run build. The files need to be in dist/client/ after build.
-
Create your PNG files (use Photoshop, Figma, whatever)
splash.png- background imageicon.png- app icon
-
Put them in
src/client/public/src/client/public/ ├── splash.png └── icon.png -
Update devvit.json
"splash": "splash.png", "icon": "icon.png"
-
Update src/server/core/post.ts
splash: { backgroundUri: 'splash.png', appIconUri: 'icon.png', // ... other config }
-
Rebuild
npm run build
-
Verify files are in dist/client/
ls dist/client/ # Should show splash.png and icon.png -
Upload to Reddit
npx devvit upload
-
Create a new post to see the updated splash screen
If text is overlapping on your splash screen:
- Remove
appDisplayName- This adds extra text that can overlap - Keep
headingshort - Long headings get cut off - Keep
descriptionconcise - Max 2 lines recommended - Design your background with text in mind - Leave space for Reddit's text overlay
If you still see the default Snoo:
- Check
dist/client/- Are your PNG files there? - Check devvit.json - Do the file names match exactly?
- Check post.ts - Do the file names match exactly?
- Did you rebuild after making changes?
- Did you create a NEW post after uploading? (Old posts keep old splash screens)
- Use a dark background with light text for better readability
- Keep important content in the center - edges may be cropped on mobile
- Test on both desktop and mobile
- The splash screen is cached - create a new post to see changes
- Don't use
appDisplayNameunless you really need it - it causes text overlap
src/client/public/
splash.png (1200x630px)
icon.png (512x512px)
devvit.json
{
"post": {
"dir": "dist/client",
"entrypoints": {
"default": {
"entry": "index.html",
"splash": "splash.png",
"icon": "icon.png"
}
}
}
}src/server/core/post.ts
return await reddit.submitCustomPost({
splash: {
backgroundUri: 'splash.png',
buttonLabel: 'Launch App',
description: 'Upload and manage your documents',
heading: 'Document Manager',
appIconUri: 'icon.png',
},
subredditName: subredditName,
title: 'Document Manager',
});Now rebuild, upload, and create a new post. It should work correctly.