From d59d92913ab550aa483ffb30c4bb53e5c9d9aa26 Mon Sep 17 00:00:00 2001 From: Jaesung Hong <45475169+jezsung@users.noreply.github.com> Date: Thu, 14 May 2026 17:16:50 +0900 Subject: [PATCH 1/2] Fix toCamelCase not called in importantProperties mapping --- packages/uniwind/src/metro/addMetaToStylesTemplate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/uniwind/src/metro/addMetaToStylesTemplate.ts b/packages/uniwind/src/metro/addMetaToStylesTemplate.ts index 2a7de792..2f38636c 100644 --- a/packages/uniwind/src/metro/addMetaToStylesTemplate.ts +++ b/packages/uniwind/src/metro/addMetaToStylesTemplate.ts @@ -126,7 +126,7 @@ export const addMetaToStylesTemplate = (Processor: ProcessorBuilder, currentPlat focus, disabled, importantProperties: importantProperties - ?.map(property => property.startsWith('--') ? property : toCamelCase) + ?.map(property => property.startsWith('--') ? property : toCamelCase(property)) .map(makeSafeForSerialization) ?? [], dataAttributes, complexity: [ From 145a13e962beb774a0d4f3770681c05ddd25c2df Mon Sep 17 00:00:00 2001 From: Jaesung Hong <45475169+jezsung@users.noreply.github.com> Date: Thu, 14 May 2026 18:05:23 +0900 Subject: [PATCH 2/2] test: add specificity tests for ! modifier --- .../styles-parsing/specificity.test.tsx | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/uniwind/tests/native/styles-parsing/specificity.test.tsx diff --git a/packages/uniwind/tests/native/styles-parsing/specificity.test.tsx b/packages/uniwind/tests/native/styles-parsing/specificity.test.tsx new file mode 100644 index 00000000..36ce85c8 --- /dev/null +++ b/packages/uniwind/tests/native/styles-parsing/specificity.test.tsx @@ -0,0 +1,41 @@ +import * as React from 'react' +import View from '../../../src/components/native/View' +import { TW_BLUE_500, TW_GREEN_500, TW_RED_500 } from '../../consts' +import { renderUniwind } from '../utils' + +describe('Specificity', () => { + test('Important', () => { + const { getStylesFromId } = renderUniwind( + + + + + + + , + ) + + expect(getStylesFromId('no-important').color).toBe(TW_BLUE_500) + /* NOTE: when both classes are !important, the first one wins. + This diverges from CSS where the last !important would win. */ + expect(getStylesFromId('both-important').color).toBe(TW_RED_500) + expect(getStylesFromId('important-first').color).toBe(TW_RED_500) + expect(getStylesFromId('important-middle').color).toBe(TW_GREEN_500) + expect(getStylesFromId('important-last').color).toBe(TW_BLUE_500) + }) +})