The splash screen image site setting is used for this. You can use var(--primary), var(--secondary), and var(--tertiary) CSS variables within your SVG to reference your theme’s colors and adapt to dark mode.
It is important to note that enabling this functionality may have impacts on your LCP score , so making the change, waiting a while, and checking if it has any impact on LCP or indexing in the Google Search console is the best way to try this out.
We originally attempted to allow SMIL animation elements (<animate>, <animateTransform>, etc) but these animations will be paused by the browser when javascript is executing, causing stutter. Transform and opacity CSS animations are not blocked by JS, and avoid this issue. ↩︎
We don’t currently have a way to add custom CSS because this screen loads before much of the app and there are a lot more constraints. Can you share the SVG image you’re using here (or PM me with it)? I could do some testing and see if our defaults could be more accommodating.
Note that there’s a slight change in what we’re allowing for SVG animation (and I’ve updated OP to reflect this). Originally we were allowing SMIL animations in SVGs, but it turns out these stutter because the browser pauses this type of animation while javascript executes.
So instead the recommendation is to only use CSS transform and opacity animations in your SVGs, as these aren’t blocked by JS.
If you take a look at @ばこん’s SVG above… it provides a good example of an allowable animation:
Also be careful to give your animations unique names so they don’t clash with other animations in Discourse (names like “blink”, “rotate”, “fade” etc could be too generic). Using a prefix like unique- is a great way to avoid this.
Google just launched Gemini Pro 3.1, and their first highlight of the model was animated SVGs. Naturally I tried making a loader for https://discourse-on-a-pi5.falco.dev/ and got this after just 2 prompts
Yeah, I was pretty happy with the result! I’ve been trying this for a long time with models, this is the first model that can handle it well.
Here is the prompt
Generate an animated SVG that will be used as a loading animation on a forum about the raspberry pi mini board pc. Animation must be done using SVG inline CSS.
This is great! Can you change the raspberry itself, the red haxagons, animation? They are moving diagonally from top left to botton right, but are off center and it looks weird. Maybe we keep those static and centralized and with a subtler animation?
I thought this was the most interesting one, but it really didn’t work as a logo animation (and for no apparent reason was rendered as a video with sound instead of an SVG):
Sorry all for taking this off topic Let’s get back to admiring Falco’s work and discussing the splash screen!
The Discourse logo constraint may be too harsh for it I’m afraid.
I tried
Generate an animated SVG that will be used as a loading animation on a discussion forum. The forum runs on Discourse, so it could use some of the motifs of it on the svg, like rainbow colored speech bubbles maybe? Animation must be done using SVG inline CSS.
It will act as a loading icon between pages, so needs to be subtle and minimal.
Idea:
I want to keep the overall shape with no distortion
I think we can do something with the 3 inner shapes - some sort of rotating, similar to what you would get if you span a table tennis raquet in your hands by it’s handle
You MUST preserve the brand identity, and do not break it’s overall design - this is imperative to the brand.