Skip to content

[Using a plugin] Scoped CSS changes require two page reloads. #702

@c4lliope

Description

@c4lliope

Describe the bug

The main reason I chose to use Surface is for the inline, scoped styling rules per-component. Amazing!

Sadly, there is a synchronization issue on the live page reloads;
compiling the CSS from assets/css/_components.css to assets/css/app.css
requires longer than the live page reload takes to complete.

(This could be because I am including a Tailwind plugin called DaisyUI, bulking up my CSS.)

Regardless, my in-component CSS changes only appear after a second file-save.
Both file saves reload the page. On the first pass, no changes have been applied to the CSS.
Some duration after the first reload, the _components.css is changed on disk,
so any additional file save reloads the page again and applies those changes.

How to reproduce it

This issue appears in my codebase for a client.
You could clone and run https://base.bingo/code/pain/src/branch/daisy -
a basic Phoenix LiveView app using Surface, and the daisyui NPM package as a Tailwind plugin.
I'm running these experiments in lib/pain_web/live/demo.ex, on address 0.0.0.0:4000/demo.

This is my initial experience using Surface, so there is a chance this is a common issue.

The behavior you expected

Synchronized scoped-CSS changes appearing on each reload.

Your Environment

Surface: v0.11.0
LiveView: v0.19.5
Elixir: v1.15.4

Additional Approaches

I had no luck adding _components.css to my config/dev.exs:

config :pain, PainWeb.Endpoint,
  reloadable_compilers: [:gettext, :elixir, :app, :surface],
  live_reload: [
    patterns: [
      ~r"lib/pain_web/(controllers|live|components)/.*(ex|heex|sface|js)$",
      ~r"assets/css/_components.css",
      ~r"priv/catalogue/.*(ex)$",
      ~r"priv/gettext/.*(po)$",
      ~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
    ]
  ]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions