themesberg / flowbite-react

Official React components built for Flowbite and Tailwind CSS
https://flowbite-react.com
MIT License
1.9k stars 425 forks source link

No force setting a cookie in localStorage when theme mode stays at default #1512

Open designtology opened 9 hours ago

designtology commented 9 hours ago

Steps to reproduce

  1. Create a gatsbyjs project
  2. Install Flowbite and Flowbite-react
  3. Implement component without setting a theme
  4. Develop with 'Gatsby develop'
  5. Take a look into local storage in browser

Current behavior

The 'flowbite-theme-mode' cookie is ALWAYS being set even if no theme mode being used.

Expected behavior

Having control over what cookie being set or at least fix a default value somewhere else preventing a cookie being set, when no theme mode is being used. I expect a default value written in the codes core not in a cookie.

Context

I tried to remove the cookie by code. Since I am using multiple templates, I tried removing it with onClientEntry and onInitialClientRender which will only succeed once. As soon as the site being reloaded, the cookie is back.

There seems to be no option to control this cookie. Searching the code also results in nothing. I could not find anything to control this cookie. I do use a custom theme but with no theme mode. It should be light by default, but it should definitely not being read from the local storage but being set internally. It does not make much sense to force write a default value into a cookie when this value will never ever change.

No dark mode, just default light mode.

If you dont respect GDPR because it is annoying we can team up: I dont like the rules either! But reading default values from a cookie which is written by default does not make a lot of sense. Store the default values in the core, not in a cookie.

NOTE: I know some people are allergic on this specific issue. You can detach this from the GDPR topic and focus on NOT setting a cookie when there is no theme mode.

SutuSebastian commented 9 hours ago

Hey there, I agree with u on this one.

There is an amount of work regarding this issue as well in the #1498 PR that is coming soon, offering full control over the "subscribe" method and local-storage sync.

So stay tuned.

designtology commented 9 hours ago

Great! Is there any temporarily workaround avoiding the cookie to be set at all?

SutuSebastian commented 8 hours ago

Great! Is there any temporarily workaround avoiding the cookie to be set at all?

Currently the LocalStorage value is being set by the hook called useThemeMode() which is also rendered inside <Flowbite /> react component.

Currently the only way to avoid it is to avoid using <Flowbite /> and useThemeMode(), until we get the PR going.