(This website is rather broken.)
I'm using Tailwind in a Next.js app and am exclusively using the css utilities in my css (combined with css modules). I'm basically using Tailwind as a style library (to define my tokens, breakpoints etc).
I don't think I'll ever be convinced to use the utility css classes, I just don't see the benefit.
I recently started using a popular framework that uses css-in-js and noticed similar performance issues. Like serious runtime performance issues, and I wasn't doing anything crazy, I was rendering a small table with some row action buttons, and my app would freeze.
I spent a long time trying to understand how to optimise, but discovered most of the work was being doing in react context and style generation.
It made me laugh, because react was developed to work around the inefficiencies in DOM updates (moving more logic to JS, eg vdom diffing) but now we're seeing huge performance issues in runtime JS!
I've now seen the authors of said framework move away from css-in-js and back to plain css (sass).
I'm yet to be convinced css-in-js is a good idea.
I find the README somewhat confusing:
> Practice your skills with no assistance from libraries
Then within the rules:
> You are allowed to use libraries,
I agree there will be extra time required to learn TypeScript and construct your types correctly. Saying that, I find the TypeScript type system _not that hard_ to learn. Yes there will be an initial learning curve but it's easier to learn than other type systems (eg flow).
Once you've setup your types correctly you can argue it saves you time in the long run, especially when it come to refactoring. Also consuming typed packages is easier, you don't need to refer to the docs to understand expected data types or parameters, the IDE will tell you how to consume 3rd party code.
TypeScript should complement and not replace existing good practises.