Export shinylive from a staged app directory - #2
Merged
Conversation
shinylive::export() inlines every non dotfile in the app directory into app.json, and it ignores .Rbuildignore. Exporting from the repo root meant renv.lock, renv/activate.R, man/, the Dockerfile and the Rproj file were all downloaded by every visitor. renv.lock alone is 408 KB of the 526 KB app.json. Stage only the files the app needs to run. That is 14 files and 20 KB.
ashbaldry
approved these changes
Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
shinylive::export() inlines every non dotfile in the app directory into app.json, and it does not honour .Rbuildignore. We already list renv.lock there and it was still going out.
app.json is currently 526 KB, of which renv.lock is 408 KB and renv/activate.R is 40 KB. The Dockerfile, man pages and the Rproj file were shipping too. None of it does anything in a browser.
Added a step that stages only what the app needs to run, then exports from that. 14 files, 20 KB.