-
Notifications
You must be signed in to change notification settings - Fork 313
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
stylex is adding the class names to my element but its not applying the styles. #768
Comments
UPDATE (new issues)ive made multiple changes and theres new issues now. let me start by providing codes. Header.tsx import React from 'react'
import * as stylex from "@stylexjs/stylex";
const Header = () => {
return (
<header {...stylex.props(styles.headerWidth, styles.headerHeight, styles.headerPosition, styles.headerZindex, styles.headerTop, styles.headerLeft, styles.headerRight)}>
</header>
)
}
const styles = stylex.create({
headerWidth: {width: "100%"},
headerHeight: {height: "60px"},
headerPosition: {position: "sticky"},
headerTop: {top: 0},
headerLeft: {left: 0},
headerRight: {right: 0},
headerZindex: {zIndex: 9999},
})
export default Header next.config.ts import type { NextConfig } from "next";
import stylexPlugin from "@stylexjs/nextjs-plugin";
const nextConfig: NextConfig = {
/* config options here */
pageExtensions: ['js', 'jsx', 'mdx', 'ts', 'tsx'],
transpilePackages: ["@stylexjs/open-props"],
};
const __dirname = new URL(".", import.meta.url).pathname;
export default stylexPlugin({
rootDir: __dirname,
})(nextConfig); .babelrc.js module.exports = {
presets: ['next/babel'],
plugins: [
[
'@stylexjs/babel-plugin',
{
dev: process.env.NODE_ENV === "development",
test: false,
runtimeInjection: false,
genConditionalClasses: true,
treeshakeCompensation: true,
unstable_moduleResolution: {
type: "commonJS",
rootDir: __dirname,
},
},
],
],
}; layout.tsx import type { Metadata } from "next";
import "./globals.css";
import * as stylex from "@stylexjs/stylex";
import Script from "next/script";
import Header from "@/components/Header";
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body className={``}>
<div id="__jsx">
<div dir="ltr">
<div
{...stylex.props(
styles.fullWidth,
styles.minHeightScreen,
styles.systemFont,
styles.display,
styles.flexDir,
styles.background,
styles.color
)}
>
<Header/>
{children}
</div>
</div>
</div>
</body>
</html>
);
}
const styles = stylex.create({
fullWidth: { width: "100%" },
minHeightScreen: { minHeight: "100dvh" },
systemFont: { fontFamily: "system-ui, sans-serif" },
display: {display: "flex"},
flexDir: {flexDirection: "column"},
position: {position: "relative"},
background: {background: "#000"},
color: {color: "#fff"}
}); and page.tsx import Image from "next/image";
import * as stylex from "@stylexjs/stylex";
export default function Home() {
return (
<>
<h1 id="home-text" {...stylex.props(styles.font, styles.size, styles.underline)}>Hello WORLD</h1>
</>
);
}
const styles = stylex.create({
font: {
fontWeight: 800,
},
size: {
fontSize: "3rem",
},
underline: {
textDecoration: "underline"
}
}) ISSUESafter running * {
margin: 0;
padding: 0;
box-sizing: border-box
}
.x1bvjpef {
text-decoration: underline
}
.x8cw2a4:not(#\#) {
font-size: 3rem
}
.xuv8nkb:not(#\#) {
font-weight: 800
} meanwhile the looks like this:<header class="xh8yej3 xng8ra x7wzq59 x1q2oy4v x13vifvy xu96u03 x3m8u43"></header> without any styles being applied. the URL is: https://stylex-thsec.vercel.app. and the github repo is: https://github.com/Lolhp0/stylex_thsec NOTE
|
Thanks for the github repo. I will investigate and let you know. As Next.js has been changing rapidly, the best solution might be to migrate to using the StyleX CLI instead of the next-plugin. I will make a PR to your repo with how to go about doing that. It is a lot more reliable as long are you're not depending on external packages that themselves depend on StyleX. We will also be making further improvements to the CLI to make that even better. It might also be useful to try using https://github.com/dwlad90/stylex-swc-plugin instead. |
hello, thanks for the reply. I tried making a new blank project and it seems that everything is working fine. I dont know what the issue was with the old one yet. ill check out the swc plugin |
@Lolhp0 the Going forward we recommend using the CLI for a Next.js project or the community SWC plugin. |
Alright. also when will it be tested with next 15? because theres like many issues like when i try to define variables and use them in a class, it gives me an error that there should only be static styles in create() and I had followed the documentation on the site as well as used a seperate file for defining variables just like in the documentation. Aswell as it seems like stylex isnt really compatitable with pages router cuz it just wont apply the styles to the classes even tho its adding the class names. But that might just be a bug from stylex since as you said its not tested for Next15 yet. |
@Lolhp0 as I said, please use the CLI instead of the Next plugin. StyleX is based on Babel and the Next team doesn't invest in the Babel+Webpack implementation as much and can run into various issues. The CLI works for simple projects right now and will continue to get better in the coming weeks and will work with any Next version (as long as it is configured with an See this PR for an example: #618 |
I've been having the same issue. However, if I reload the page while on any other page than the first one I went to after "yarn dev" It has all it's classnames, but none of the style definitions. Edit: I'm using Next v14.2 |
@BjornHMS are you ussing the If you see issues with the CLI, please create an issue with a small repro project so I can help debug. |
first of all the code:
the output of this is
but the styles are NOT being applied to the class names for some reason. here's my next.config.ts
and .babelrc.js
can someone help me out? I am using next 15 app router and typescript
The text was updated successfully, but these errors were encountered: