{
    "version": "https://jsonfeed.org/version/1",
    "title": "weapp-tailwindcss Blog Feed",
    "home_page_url": "https://tw.icebreaker.top/en/blog",
    "description": "Updates, case studies, and tutorials about Tailwind CSS across mini apps and multi-platform development.",
    "items": [
        {
            "id": "https://tw.icebreaker.top/en/blog/2025/9/v4.3-release",
            "content_html": "<p>weapp-tailwindcss@4.3.0 enabled CSS variable calculation mode by default and added finer-grained <code>cssCalc</code>, <code>px2rpx</code>, and related options, significantly improving <code>rpx</code> and <code>calc</code> compatibility across targets. This post explains what changed and how to use it.</p>\n<blockquote>\n<p>Later versions changed CSS variable calculation mode back to default-off so large custom properties would not expand twice after compatibility handling. If you still need that compatibility layer, explicitly set <code>cssOptions.cssCalc: true</code>.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_CDd4\" id=\"css-variable-calculation-mode\">CSS variable calculation mode<a href=\"https://tw.icebreaker.top/en/blog/2025/9/v4.3-release#css-variable-calculation-mode\" class=\"hash-link\" aria-label=\"Direct link to CSS variable calculation mode\" title=\"Direct link to CSS variable calculation mode\" translate=\"no\">​</a></h2>\n<p>Under <code>tailwindcss@4</code>, CSS variable calculation mode was enabled by default.</p>\n<p>In this mode, all CSS variables and <code>calc</code> expressions are precompiled ahead of time.</p>\n<p>For example, the original <code>tailwindcss@4</code> output looks like this:</p>\n<div class=\"language-css codeBlockContainer_SUlo theme-code-block\" style=\"--prism-color:#D4D4D4;--prism-background-color:#212121\"><div class=\"codeBlockContent_UJo7\"><pre tabindex=\"0\" class=\"prism-code language-css codeBlock_Rhtc thin-scrollbar\" style=\"color:#D4D4D4;background-color:#212121\"><code class=\"codeBlockLines_s0U2\"><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">page,</span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">:root</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">--spacing</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> 8rpx</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">.h-2</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">height</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(220, 220, 170)\">calc</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">(</span><span class=\"token function\" style=\"color:rgb(220, 220, 170)\">var</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">(</span><span class=\"token plain\">--spacing</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">)</span><span class=\"token plain\"> * 2</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">)</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><br></div></code></pre></div></div>\n<p>After precompilation with CSS variable calculation mode enabled, the result becomes:</p>\n<div class=\"language-css codeBlockContainer_SUlo theme-code-block\" style=\"--prism-color:#D4D4D4;--prism-background-color:#212121\"><div class=\"codeBlockContent_UJo7\"><pre tabindex=\"0\" class=\"prism-code language-css codeBlock_Rhtc thin-scrollbar\" style=\"color:#D4D4D4;background-color:#212121\"><code class=\"codeBlockLines_s0U2\"><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">page,</span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">:root</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">--spacing</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> 8rpx</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">.h-2</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">height</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> 16rpx</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">height</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:rgb(220, 220, 170)\">calc</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">(</span><span class=\"token function\" style=\"color:rgb(220, 220, 170)\">var</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">(</span><span class=\"token plain\">--spacing</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">)</span><span class=\"token plain\"> * 2</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">)</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><br></div></code></pre></div></div>\n<p>This mode helps with compatibility issues around <code>calc</code> and <code>rpx</code> on many device runtimes.</p>\n<p>The default behavior keeps the original <code>calc()</code> declaration so the stylesheet can still follow standard CSS cascading rules. If your target mini app runtime prefers the later <code>calc()</code> line and overrides the precomputed fallback, you can explicitly specify which CSS variables should have their original <code>calc()</code> declarations removed.</p>\n<blockquote>\n<p>You can manually disable this feature by passing <code>cssCalc: false</code> to the plugin.</p>\n</blockquote>\n<p>If you want to remove the original <code>calc()</code> declaration that matches <code>--spacing</code>, pass:</p>\n<div class=\"language-js codeBlockContainer_SUlo theme-code-block\" style=\"--prism-color:#D4D4D4;--prism-background-color:#212121\"><div class=\"codeBlockContent_UJo7\"><pre tabindex=\"0\" class=\"prism-code language-js codeBlock_Rhtc thin-scrollbar\" style=\"color:#D4D4D4;background-color:#212121\"><code class=\"codeBlockLines_s0U2\"><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token literal-property property\" style=\"color:#9CDCFE\">cssCalc</span><span class=\"token operator\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">[</span><span class=\"token string\" style=\"color:rgb(206, 145, 120)\">'--spacing'</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:rgb(106, 153, 85)\">// or more precisely</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token literal-property property\" style=\"color:#9CDCFE\">cssCalc</span><span class=\"token operator\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">    </span><span class=\"token literal-property property\" style=\"color:#9CDCFE\">includeCustomProperties</span><span class=\"token operator\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">[</span><span class=\"token string\" style=\"color:rgb(206, 145, 120)\">'--spacing'</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><br></div></code></pre></div></div>\n<blockquote>\n<p>Regular expressions are supported as well.</p>\n</blockquote>\n<p>That produces:</p>\n<div class=\"language-css codeBlockContainer_SUlo theme-code-block\" style=\"--prism-color:#D4D4D4;--prism-background-color:#212121\"><div class=\"codeBlockContent_UJo7\"><pre tabindex=\"0\" class=\"prism-code language-css codeBlock_Rhtc thin-scrollbar\" style=\"color:#D4D4D4;background-color:#212121\"><code class=\"codeBlockLines_s0U2\"><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">page,</span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">:root</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">--spacing</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> 8rpx</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token selector\" style=\"color:rgb(215, 186, 125)\">.h-2</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\">  </span><span class=\"token property\" style=\"color:#9CDCFE\">height</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">:</span><span class=\"token plain\"> 16rpx</span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">;</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#D4D4D4\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(212, 212, 212)\">}</span><br></div></code></pre></div></div>\n<p>This is one practical way to fix device compatibility issues around <code>calc</code> and <code>rpx</code>.</p>\n<p>See the <a href=\"https://github.com/sonofmagic/weapp-tailwindcss/tree/main/packages/weapp-tailwindcss/src\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">current source and option types</a> for the latest API shape.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_CDd4\" id=\"new-options\">New options<a href=\"https://tw.icebreaker.top/en/blog/2025/9/v4.3-release#new-options\" class=\"hash-link\" aria-label=\"Direct link to New options\" title=\"Direct link to New options\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_CDd4\" id=\"px2rpx\">px2rpx<a href=\"https://tw.icebreaker.top/en/blog/2025/9/v4.3-release#px2rpx\" class=\"hash-link\" aria-label=\"Direct link to px2rpx\" title=\"Direct link to px2rpx\" translate=\"no\">​</a></h3>\n<p>Adds a <code>px2rpx</code> option to control whether <code>px</code> units should be converted to <code>rpx</code>. The default is <code>false</code>.</p>\n<p>Passing <code>true</code> converts every <code>px</code> unit to <code>rpx</code> at a <code>1:1</code> ratio.</p>\n<p>If you need more advanced conversion behavior, pass an object. Its option shape follows <a href=\"https://www.npmjs.com/package/postcss-pxtransform\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://www.npmjs.com/package/postcss-pxtransform</a></p>\n<h3 class=\"anchor anchorTargetStickyNavbar_CDd4\" id=\"loglevel\">logLevel<a href=\"https://tw.icebreaker.top/en/blog/2025/9/v4.3-release#loglevel\" class=\"hash-link\" aria-label=\"Direct link to logLevel\" title=\"Direct link to logLevel\" translate=\"no\">​</a></h3>\n<p>Adds a <code>logLevel</code> option to control log output verbosity. The default is <code>info</code>.</p>",
            "url": "https://tw.icebreaker.top/en/blog/2025/9/v4.3-release",
            "title": "4.3.0 🚀",
            "summary": "weapp-tailwindcss@4.3.0 enabled CSS variable calculation mode by default and added finer-grained cssCalc and px2rpx options, significantly improving rpx and calc compatibility across targets.",
            "date_modified": "2025-09-13T00:00:00.000Z",
            "author": {
                "name": "icebreaker",
                "url": "https://github.com/sonofmagic"
            },
            "tags": []
        }
    ]
}