Tailwind CSS v3.3 is here — bringing a bunch of new features
people have been asking for forever, and a bunch of new stuff you
didn’t even know you wanted.
Tailwind CSS v3.3 is here — bringing a bunch of new features
people have been asking for forever, and a bunch of new stuff you
didn’t even know you wanted.
That covers the most exciting stuff, but check out the release notes for an exhaustive list of every
single little improvement we’ve made since the last release.
Upgrading your projects is as easy as installing the latest
version of tailwindcss from npm:
npminstall-D tailwindcss@latest
You can also try out all of the new features on Tailwind Play, right in your browser.
Extended color palette for darker darks
One of the most common feature requests we’ve had over the years
is to add darker shades for every color — usually because someone
is building a dark UI and just wants more options down in that dark
end of the spectrum.
Well wish granted — in Tailwind CSS v3.3 we’ve added a new
950 shade for every single color.
In the grays they act as basically a tinted black, which is
great for ultra dark UIs:
And in the rest of the color spectrum we optimized
950 for high contrast text and tinted control
backgrounds:
Believe it or not the hardest part about this project was
convincing ourselves to be okay with having 11 shades per color.
Trying to make that look good in the color palette documentation was a nightmare.
Also pour one out for the 50 shades of gray jokes we used to be
able to make.
ESM and TypeScript support
Now you can configure Tailwind CSS in ESM, or even in
TypeScript:
When you run npx tailwindcss init, we’ll detect if
your project is an ES Module and automatically generate your config
file with the right syntax.
You can also generate an ESM config file explicitly by using the
--esm flag:
npx tailwindcss init --esm
To generate a TypeScript config file, use the --ts
flag:
npx tailwindcss init --ts
A lot of people assume this is easy because they’re writing
their own code in ESM already (even if it’s being transpiled by
their build tool) but it’s actually pretty tricky — we literally
have to transpile the config file for you on the fly.
It’s a bit easier to understand why this has to happen when you
think of the TypeScript case, because of course Tailwind is
distributed as JavaScript, and it can’t magically import an
uncompiled TypeScript file.
We’re handling this with the wonderful jiti library
under the hood, and using Sucrase to transpile the code with the best possible
performance while keeping the installation footprint small.
Simplified RTL support with logical properties
We’ve made it possible to style multi-directional websites using
our LTR and RTL variants for a while, but now you
can use logical properties to do most of this styling
more easily and automatically.
Using new utilities like ms-3 and
me-3, you can style the start and
end of an element so that your styles automatically adapt
in RTL, instead of writing code like ltr:ml-3
rtl:mr-3:
Here’s a full list of all of the new utilities we’ve added and
what they map to:
New class
Properties
Physical counterpart (LTR)
start-*
inset-inline-start
left-*
end-*
inset-inline-end
right-*
ms-*
margin-inline-start
ml-*
me-*
margin-inline-end
mr-*
ps-*
padding-inline-start
pl-*
pe-*
padding-inline-end
pr-*
rounded-s-*
border-start-start-radius border-end-start-radius
rounded-l-*
rounded-e-*
border-start-end-radius border-end-end-radius
rounded-l-*
rounded-ss-*
border-start-start-radius
rounded-tl-*
rounded-se-*
border-start-end-radius
rounded-tr-*
rounded-ee-*
border-end-end-radius
rounded-br-*
rounded-es-*
border-end-start-radius
rounded-bl-*
border-s-*
border-inline-start-width
border-l-*
border-e-*
border-inline-end-width
border-r-*
border-s-*
border-inline-start-color
border-l-*
border-e-*
border-inline-end-color
border-r-*
scroll-ms-*
scroll-margin-inline-start
scroll-ml-*
scroll-me-*
scroll-margin-inline-end
scroll-mr-*
scroll-ps-*
scroll-padding-inline-start
scroll-pl-*
scroll-pe-*
scroll-padding-inline-end
scroll-pr-*
These should save you a ton of code if you regularly build sites
that need to support both LTR and RTL languages, and you can always
combine these with the ltr and rtl
variants when you need more control.
Fine-tune gradient color stop positions
We’ve added new utilities like from-5%,
via-35%, and to-85% that let you adjust
the actual position of each color stop in your gradients:
We’ve included every value from 0% to 100% in steps of 5 out of
the box, but you can of course use arbitrary values to get exactly
the effect you want:
We released our official line-clamp plugin just over two years
ago and even though it uses a bunch of weird deprecated
-webkit-* stuff, it works in every browser and it’s
going to work forever, so we decided to just bake it into the
framework itself.
Boost your conversion rate
Nulla dolor velit adipisicing duis excepteur esse in duis nostrud
occaecat mollit incididunt deserunt sunt. Ut ut sunt laborum ex
occaecat eu tempor labore enim adipisicing minim ad. Est in quis eu
dolore occaecat excepteur fugiat dolore nisi aliqua fugiat enim ut
cillum. Labore enim duis nostrud eu. Est ut eiusmod consequat irure
quis deserunt ex. Enim laboris dolor magna pariatur. Dolor et ad
sint voluptate sunt elit mollit officia ad enim sit consectetur
enim.
Lindsay Walton
<article>
<div>
<time datetime="2020-03-16" class="block text-sm/6 text-gray-600">Mar 10, 2020</time>
<h2 class="mt-2 text-lg font-semibold text-gray-900">Boost your conversion rate</h2>
<p class="line-clamp-3 mt-4 text-sm/6 text-gray-600">
Illo sint voluptas. Error voluptates culpa eligendi. Hic vel totam vitae illo. Non aliquid explicabo necessitatibus unde. Sed exercitationem placeat consectetur nulla deserunt vel iusto corrupti dicta laboris incididunt.
</p>
</div>
<div class="mt-4 flex gap-x-2.5 text-sm font-semibold leading-6 text-gray-900">
<img class="xt-lazy-img" src="/..." class="h-6 w-6 flex-none rounded-full bg-gray-50" />
Lindsay Walton
</div>
</article>
So when you upgrade to v3.3, you can safely remove the
line-clamp plugin if you were using it:
Don’t let the door hit you in the ass on the way out,
plugin.
Check out the new line-clamp documentation to learn more about how it
all works if you haven’t played with it before.
New line-height shorthand for font-size utilities
One thing we’ve found over years and years of designing
beautiful stuff with Tailwind is that we literally never
set a line-height without also setting the font-size at the same
time.
So inspired by our color opacity modifier syntax, we decided to
make it possible to save a few characters by setting them together
with a single utility:
index.html
<p class="text-lg leading-7 ...">
<p class="text-lg/7 ...">
So I started to walk into the water. I won't lie to you boys, I was terrified. But
I pressed on, and as I made my way past the breakers a strange calm came over me.
I don't know if it was divine intervention or the kinship of all living things but
I tell you Jerry at that moment, I <em>was</em> a marine biologist.
</p>
You can use any value defined in your line-height scale, or use arbitrary values if you need
to deviate from your design tokens:
That’s a pretty cool trick right there for using things like
hover: with styles that come from the database or
something by the way.
Configure font-variation-settings
for custom font families
When using custom fonts, you’ll often want to configure things
like font-feature-settings or
font-variation-settings to opt-in to specific tweaks
the font offers.
We’ve made it easy to do this for
font-feature-settings for a while, but now you can do
the same thing with font-variation-settings by
providing a value for it in the sort-of options object you can plop
after the font list in your config file:
In the example above we’re using a recent release of Inter that supports using the optical size axis to
trigger the “Display” variation of the font, optimized for larger
sizes like headlines.
New list-style-image
utilities
Ever wanted to use a picture of a carrot as your list item
marker? Well now you can, with the new list-image-*
utilities.
Are you taking your first steps in selling a product or service
online and don’t know where to start? Be sure to register for our upcoming WooCommerce 101
webinar, where our expert Happiness Engineers will walk you through
everything you need to know about setting up an online store with
WooCommerce and WordPress.com
managed hosting.
Webinar details
Date: Tuesday, March 28, 2023
Time: 16:00 UTC | 18:00 CEST | 12pm EDT
| 9:00am PDT
Cost: Free
Who’s invited: business owners, entrepreneurs,
freelancers, service providers, store owners, and anyone else who
wants to sell a product or service online.
Whether you’re an e-commerce veteran or this is your first
business, join us for the inside scoop on launching a store that’s
fully customizable, completely yours, and ready to grow from the
start. In this live webinar, our Happiness Engineer will
demonstrate how to:
Instal Woo on your existing WordPress site
Use the setup wizard to get up and running fast
Set up simple products, basic shipping, and tax support
Collect payments through WooCommerce Payments and other
gateways
No previous e-commerce experience is necessary, but we recommend
a basic familiarity with WordPress.com to ensure you can make the
most from the webinar. A Q&A session will follow the
walkthrough, so be sure to bring any questions you might have!
Seats are limited, so register now to reserve your spot. See you
then!
We use optional third-party analytics cookies to understand how you use the website so we can build better products. For more information, see our Privacy Statement.
Essential cookies
We use essential cookies to perform essential website functions, e.g. they're used to log you in.
Learn more
Always active
Analytics cookies
We use analytics cookies to understand how you use our websites so we can make them better, e.g. they're used to gather information about the pages you visit and how many clicks you need to accomplish a task.
Learn more