Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/mobile/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
"react-native-worklets": "0.13.0",
"shiki": "4.2.0",
"tailwind-merge": "^3.5.0",
"uniwind": "1.11.0"
"uniwind": "1.12.1"
},
"devDependencies": {
"@effect/vitest": "catalog:",
Expand Down
10 changes: 4 additions & 6 deletions apps/mobile/src/lib/uniwind-platform-variants.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { beforeAll, describe, expect, it } from "vite-plus/test";
// `@media ios { ... }` block, and uniwind's CSS processor used to drop the
// block's media queries after its first nested rule. Everything past the first
// utility compiled unguarded and shipped to both platforms. These tests run
// the installed (patched) uniwind compiler over real Tailwind output, per
// the installed uniwind compiler over real Tailwind output, per
// platform, and assert what each bundle receives. The compiler itself runs in
// a plain Node child process (uniwind-platform-variants.fixture.cjs) so no
// test-runner module transforms sit between the test and the shipped code.
Expand Down Expand Up @@ -215,11 +215,9 @@ describe("uniwind keeps media rules nested inside class rules attached to the cl
});
});

// The patch file carries three independent uniwind fixes (state/data selector
// variants, the Metro native-styles fingerprint, and this media-query scoping
// fix). Regenerating it for one fix must not silently drop the others — this
// suite exercises the shipped transformer and compiler for the other two.
describe("uniwind patch keeps pre-existing selector and transformer behavior", () => {
// Keep guarding selector variants and the Metro native-styles fingerprint
// alongside media-query scoping when upgrading the installed Uniwind package.
describe("uniwind keeps selector and transformer behavior", () => {
let output: FixtureOutput;

beforeAll(() => {
Expand Down
11 changes: 5 additions & 6 deletions docs/internals/mobile-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,11 @@ shutdown, but a supervisor created after its cleanup runs would escape it. A clo
parent scope also closes late arrivals, preventing interrupted startup or runtime
replacement from leaving a WebSocket alive outside the new registry.

The [Uniwind patch](../../patches/uniwind@1.11.0.patch) still compiles CSS on Metro
updates so newly used classes are discovered. It skips global style invalidation
only when the generated stylesheet and theme list are unchanged. Skipping compilation
would lose new classes; invalidating every consumer for unchanged output makes an
ordinary component edit refresh the whole app. The fingerprint is recorded only
after initialization succeeds.
Uniwind compiles CSS on Metro updates so newly used classes are discovered. It
skips global style invalidation only when the generated stylesheet and theme list
are unchanged. Skipping compilation would lose new classes; invalidating every
consumer for unchanged output makes an ordinary component edit refresh the whole
app. The fingerprint is recorded only after initialization succeeds.

The [expo-notifications patch](../../patches/expo-notifications@57.0.15.patch) protects
`NotificationCenterManager`'s delegates and pending responses with a lock. React runtimes can
Expand Down
Loading
Loading