Skip to content
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

@react-email/tailwind Package dist size is too large #1101

Open
seawatts opened this issue Dec 17, 2023 · 5 comments
Open

@react-email/tailwind Package dist size is too large #1101

seawatts opened this issue Dec 17, 2023 · 5 comments

Comments

@seawatts
Copy link

seawatts commented Dec 17, 2023

Describe the Bug

I am trying to use react-email with TRPC and Next.js I ran a profiler on the output of next build with @next/bundle-analyzer It said the largest package was coming from @react-email/tailwind/dist/index.mjs

I am running Next.js with Open-Next deployed with SST on a Lambda in AWS. The larger the Node.js portion of the next.js code is, the longer it takes for the lambda to start. Currently it looks like @react-email/tailwind is 6.5MB

At first glance, it looks like it's pulling in all of tailwindcss and postcss here: https://github.com/resend/react-email/blob/canary/packages/tailwind/src/utils/get-css-for-markup.ts#L1-L4

Is there a way we can make this package smaller?

Which package is affected (leave empty if unsure)

No response

Link to the code that reproduces this issue

https://github.com/resend/react-email/tree/canary/packages/tailwind

To Reproduce

Run next build with @next/bundle-analyzer

Expected Behavior

The dist folder to be smaller.

What's your node version? (if relevant)

No response

@seawatts seawatts added the Type: Bug Confirmed bug label Dec 17, 2023
@seawatts seawatts changed the title Tailwind Package dist size is too large @react-email/tailwind Package dist size is too large Dec 17, 2023
@gabrielmfern
Copy link
Collaborator

Is there a way we can make this package smaller?

It certainly is something that we want to improve on and that isn't in the least optimal. The best way I found to do it was to bundle it as it is,
it might not just be postcss and tailwind that make the biggest impact on this though but rather the necessary
polyfills for internal tailwind dependencies. We polyfilled because it was either that, or patching tailwind to remove all imports for non-browser stuff.
I think there might be a way for this by not using postcss necessarily but it would need a bit of a change of the way
we do things currently. Might also avoid rendering twice for generating the styles.

@FleetAdmiralJakob
Copy link

I have the same problem. I can't push the code to the next.js edge runtime because react emails bundle is way too large. A main problem I see is the js-beautify lib.

@jlopezxs
Copy link

Same problem here

➜  node_modules du -sh -- */ | sort -rh
509M	react-email/
275M	@next/
182M	canvas/
103M	next/
65M	typescript/
62M	next-translate-plugin/

509mb of disk sizes in my docker image any way to reduce it?

@gabrielmfern
Copy link
Collaborator

@jlopezxs This issue is about the @react-email/tailwind package, not the react-email one.

For the react-email package, you should be able to just move it to a dev dependency, as it is just the CLI, and if installed with npm install --production it will not be included.

Also, there was an issue we fixed a while ago that might improve the size for you, so upgrading is also something you can do.

@PCRinus
Copy link

PCRinus commented May 27, 2024

@jlopezxs This issue is about the @react-email/tailwind package, not the react-email one.

For the react-email package, you should be able to just move it to a dev dependency, as it is just the CLI, and if installed with npm install --production it will not be included.

Also, there was an issue we fixed a while ago that might improve the size for you, so upgrading is also something you can do.

Is this something that should be documented in the docs? I was also having trouble with my bundle size, and your suggestion worked wonderfully. I can't imagine it would hurt having a smaller production bundle size, especially for serverless environments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants