Assets
Your project has a folder called public/. Anything in it is served straight from the root of your app: a file named logo.png is available at /logo.png, and that is the path you use in code.
Settings → Assets is a window onto that folder. It shows what is there, what each file is called on the web, how large it is, and — for images — its actual pixel size.
Why this folder and not somewhere else
Files here travel with the code. When you export to GitHub or download a ZIP, your logo comes with it. That is the reason assets live in the repository rather than in a separate library: a project whose branding disappears the moment you take it elsewhere is not really yours.
Two other places hold files, and they are for different jobs:
- File uploads — files your visitors upload while using your app: profile photos, receipts, product images. Those arrive after the app is live and there is no way to know them in advance.
- Attachments — a file you hand to the AI with a prompt, as reference. A screenshot to copy, a spec to follow. These are working material and are cleared after 30 days.
Assets are the third kind: the handful of files your app itself is built from.
Adding one
Upload puts a file in public/ directly, without spending a credit. Replacing a file keeps its name, so every reference in your code keeps working.
You can also attach an image to a prompt and ask for it to be used — the AI puts it in public/ and edits the code to point at it. That is the difference: Upload only puts the file there. A brand-new file still needs a prompt before anything on the page shows it; replacing an existing one works immediately, because the code already points at that name.
What is accepted: PNG, JPEG, GIF, WebP, AVIF, ICO, WOFF/WOFF2/TTF/OTF fonts, MP4, WebM and PDF, up to 2 MB each. Anything larger belongs in File uploads, which is built for bulk.
SVG uploads are blocked, and that is deliberate rather than an oversight. An SVG is a program as much as a picture, and this folder is served from your app's own address — so a hostile SVG uploaded here would run with your app's privileges. An SVG the AI writes as source code is a different thing and works normally.
Removing one
Delete asks once, then Delete for good. It is a change to your project's code, so the file leaves the running app — and there is no undo button.
What it does not do is rewrite your code. If a page still points at /logo.png after you delete it, that reference is now broken and the page shows a gap where the image was. Nothing blocks the delete, and Check reachable cannot warn you either: the file it would test is gone. Put a file back under the same name, or ask for the reference to be removed.
Clicking a file's web path copies it — paste that into a prompt when you want the AI to use one particular file.
Check reachable
A file being in public/ does not prove your app will serve it. The most common reason it will not: a login rule that protects every page also blocks these files, unless it is told to skip them.
Check reachable asks your running app for each file and reports what came back. Loads means a visitor gets the file. An HTTP code instead means they do not — 307 almost always being the login rule, 404 meaning the running version does not have the file yet.
The check needs your preview to be running. When it is not, it says so and checks nothing. That is not a pass: nothing was tested.
The same check runs automatically after every AI run, and a failure shows up in the amber Build issues panel — see AI runs.
When an image still looks wrong
If the file loads and the page still looks off, the file itself is usually the problem. A square app icon with the name written inside it will read as a smudge in a 40-pixel header, beside text saying the same words. Ask for a plain mark without lettering, or for a larger slot.
Limits & notes
- 2 MB per file. The list shows up to 200 files; past that it says so.
- Uploading and deleting cost nothing and do not run the AI. Only a prompt does.
- Check reachable asks your preview, which is your code right now — not what visitors see. A file can load in preview and still be missing from the published URL until you publish again.
- Pixel size is read for PNG, JPEG, GIF and WebP. Other types show a file size but no dimensions.
- This is a view of one folder. Files your app writes while running, and files your visitors upload, are not here — those are File uploads.
Related
- AI runs — the automatic check, and what Build issues means
- File uploads — files your visitors upload
- Attachments — files you give the AI as reference
- Troubleshooting — an image that does not show