-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
How to setup twind-next with new "app" folder from next.js 13? #32
Comments
Still working on an updated example. |
any progress on this? |
Is there any news? We rely heavily on the shim approach, and would love to see this happening. |
Any updates on this? |
Hello @sastan! Could you maybe share some overall ideas so we can try to implement it ourselves and potentially open a PR? I tried different approaches with no success. If you have something in mind or protocode it would help a lot 🚀 |
For those willing just to try it, a hideous way to do so which only works in client components is this one: ///useTwind.ts
import {useState, useEffect} from 'react';
import { defineConfig } from '@twind/core';
import presetAutoprefix from '@twind/preset-autoprefix';
import presetTailwind from '@twind/preset-tailwind';
import {setup} from '@twind/core';
export const config = defineConfig({
presets: [presetAutoprefix(), presetTailwind()],
});
export const useTwind = () => {
const [isLoaded, setIsLoaded] = useState(null);
useEffect(() => {
const asyncFn = async () => {
setup(config);
setIsLoaded(true);
};
asyncFn();
}, []);
return isLoaded;
}; And then in your client components: 'use client';
import { useState, useEffect, lazy } from 'react';
import { useTwind } from '../../hooks/useTwind';
export const Counter = () => {
const [value, setValue] = useState(0);
const isLoaded = useTwind();
if (!isLoaded) {
return <div>Loading...</div>;
}
return (
<div className='m-10'>
<h1 className={`mt-2`}>Count: {value}</h1>
<button onClick={() => setValue((prev) => prev + 1)}>
Increment
</button>
</div>
);
}; Btw I saw a considerable performance drop with v1 (Yes, I'm running the setup onMount so obviously it has a bigger impact in this ugly code, but I wonder what made the setup slower). |
Also for inspiration, this is how kuma-ui fixes it for ssr https://github.com/poteboy/kuma-ui/blob/main/packages/next-plugin/src/registry.tsx |
How to setup twind-next with new "app" folder from next.js 13?
The text was updated successfully, but these errors were encountered: