> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uniwind.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Latest updates and improvements to Uniwind Pro

<Card title="Try Uniwind Pro Demo" icon="rocket" href="https://github.com/uni-stack/uniwind-pro-demo">
  See the C++ engine, ShadowTree updates, and native transitions in action. Clone the demo app (Expo SDK 54 / RN 0.83.5) and run it on your iOS simulator. No account required.
</Card>

<Update label="July 1, 2026" description="1.5.0" tags={["Stable"]}>
  ## Uniwind Pro 1.5.0

  * **Expo SDK 57 support** - Added compatibility with Expo SDK 57. See [Compatibility](/pro/compatibility)
  * **Precompiled headers** - Added precompiled headers for Android and iOS, speeding up native Uniwind compilation by up to 30%. Enabled by default. See [Precompiled Headers](/pro/precompiled-headers)
  * **Safe area RTL classes** - Added RTL-aware safe area utilities (`ps-safe`, `pe-safe`, `ms-safe`, `me-safe`, `start-safe`, `end-safe`) for the logical start and end edges. See [Safe Area Classes](/class-names#safe-area-classes)
  * **`min()` CSS function** - Added support for the `min()` CSS function in your styles
  * **React Native 0.86 converters** - Aligned all CSS C++ converters with React Native 0.86
  * **C++ converter tests** - Added 85 new C++ test cases covering every converter, running on each CI build
  * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.36.1
  * **AGENTS.md refresh** - Refreshed the `AGENTS.md` guidance for AI-assisted development
  * **`!important` specificity fix** - Fixed `!important` specificity when combined with state variants
</Update>

<Update label="June 11, 2026" description="1.4.0" tags={["Stable"]}>
  ## Uniwind Pro 1.4.0

  * **SHA-256 payload verification** - The CLI now verifies every downloaded payload against a published checksum before extracting it, and re-verifies the local cache on every restore. If verification fails, nothing is installed. Checksums are publicly available per version. See [Verifying Downloads](/pro/cicd-license#verifying-downloads)
  * **CDN integrity headers** - Download responses now include an RFC 9530 `Repr-Digest` header and honor `If-None-Match` conditional requests
  * **LayoutDirection component** - Force RTL or LTR for a subtree without changing the global device RTL state. See [Layout Direction](/api/layout-direction)
  * **C++ converter tests** - Added 42 C++ test cases for the converters: pure `folly::dynamic` conversions plus JSI marshalling against a real Hermes runtime, running on every CI build
  * **Combined variants fix** - Fixed combined variants overriding each other
  * **Bundler infinite loop fix** - Fixed an infinite bundler loop when multiple Uniwind instances are installed
  * **Web variant condition fix** - Fixed the web variant resolution condition
</Update>

<Update label="June 3, 2026" description="1.3.0" tags={["Stable"]}>
  ## Uniwind Pro 1.3.0

  * **Vite 8 support** - Added support for Vite 8 in the Uniwind Vite plugin
  * **Nitro Modules as peer dependency** - Moved `react-native-nitro-modules` to peer dependencies so apps control the installed Nitro version
  * **Isolated install fix** - Fixed phantom dependencies so isolated installs work correctly
  * **CLI improvements** - Added a more verbose error reason for stack traces
</Update>

<Update label="June 1, 2026" description="1.2.1" tags={["Stable"]}>
  ## Uniwind Pro 1.2.1

  * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.35.9
  * **Examples updated** - Updated example apps to Expo SDK 56 and React Native 0.85+
  * **Functions instead of computed values** - Replaced computed values with functions in style for more predictable resolution
  * **Artifact generation script** - Added a script to generate artifacts for Uniwind
  * **Better uniwind-pro CLI error handling** - The `uniwind-pro` CLI now shows stacktraces, HTTP error codes, and other details for easier debugging
</Update>

<Update label="May 21, 2026" description="1.2.0" tags={["Stable"]}>
  ## Uniwind Pro 1.2.0

  * **Default styles for React Native components** - Added experimental default styles support for styling built-in React Native components directly from CSS. Enable it with `experimental.defaultStyles`. See [Default Styles](/pro/default-styles)
  * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.35.7
  * **Silent CSS variable warning for SSR** - CSS variable warnings are now silenced during server-side rendering
  * **Improved hot reload** - Hot reload is now more reliable during development
  * **Flex shorthand parsing fix** - Fixed `flex: 1` being parsed into separated styles
  * **Major bundler refactor** - Refactored the bundler internals to improve maintainability and prepare for future CSS processing features
</Update>

<Update label="May 14, 2026" description="1.1.3" tags={["Stable"]}>
  ## Uniwind Pro 1.1.3

  * **Metro variable dependency fix** - Added missing variable metro dependency to the C++ side so CSS variable updates resolve correctly
  * **Cache wipe on CSS variables update** - Cache is now wiped after CSS variables update to prevent stale values from being applied
  * **!important support** - Tailwind `!important` modifier is now respected (e.g., `!bg-red-500`)
  * **Deeply themed variables fix** - Fixed lookup for deeply nested themed variables
</Update>

<Update label="May 11, 2026" description="1.1.2" tags={["Stable"]}>
  ## Uniwind Pro 1.1.2

  * **Logical inset utilities fix** - Fixed `inset-s` and `inset-e` class names in Uniwind Pro by bumping Tailwind to 4.2.1 for the new syntax
  * **line-clamp respected** - Fixed `line-clamp-*` classes not being respected in Uniwind Pro
</Update>

<Update label="May 5, 2026" description="1.1.1" tags={["Stable"]}>
  ## Uniwind Pro 1.1.1

  * **getCSSVariable function** - New `Uniwind.getCSSVariable` reads CSS variable values from outside of React components, perfect for event handlers, async callbacks, and utility modules. See [getCSSVariable](/api/get-css-variable)
  * **Logical border utilities** - `border-s` and `border-e` now correctly map to `inline-start` and `inline-end` border properties for RTL-aware layouts
  * **Joined border radius parsing** - Fixed border radius parsing so combined corner classes apply correctly across affected components
  * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.35.6
  * **Removed deprecated PushNotificationIOS getter** - Dropped the deprecated `PushNotificationIOS` getter to align with current React Native versions
</Update>

<Update label="April 23, 2026" description="1.1.0" tags={["Stable"]}>
  ## Uniwind Pro 1.1.0

  * **Group Tailwind selectors** - Added support for Tailwind's `group` variants (`group-active:*`, `group-focus:*`) with named groups. State propagates through the C++ shadow tree with no React re-renders. See [Group Variants](/pro/group-variants)
  * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.35.5
  * **Node resolver for escaped paths** - Switched to the Node resolver to prevent escaped traversal errors
  * **oxlint migration** - Replaced ESLint with `oxlint` for faster linting
  * **Config attributes and lint rules** - Updated config attribute naming conventions and lint rule set
  * **updateCSSVariable inside scoped themes** - Fixed CSS variable propagation across scoped themes when theme switches
  * **CJS injection fix** - Inject CJS instead of ESM at initialization so debug Metro builds without tree shaking don't break
</Update>

<Update label="April 7, 2026" description="1.0.1" tags={["Stable"]}>
  ## Uniwind Pro 1.0.1

  <Check>
    Uniwind Pro is now stable! After months of beta testing and seven release candidates, the C++ engine is production-ready. Thank you to every team that helped us get here.
  </Check>

  * **Dev warnings for color props** - Uniwind now warns in dev mode when you pass a regular Tailwind class (e.g., `bg-blue-500`) to a color prop that expects the `accent-` prefix (e.g., `thumbColorClassName`, `trackColorOnClassName`). This helps catch styling mistakes early
  * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.35.3
  * **Metro transformer path fix** - Fixed reading absolute `cssPath` instead of relative one in `metro-transformer`
  * **CSS file transforming fix** - Fixed CSS file transforming for special setups
</Update>

<AccordionGroup>
  <Accordion title="Show release candidate history">
    <Update label="March 26, 2026" description="1.0.0-rc.7" tags={["Release Candidate"]}>
      ## Suspended Subtrees & Pre-build Prep

      Birds are chirping — this could be the last RC before the grand finale 🎵

      * **Suspended subtrees support** - Suspended subtrees now correctly receive shadow tree updates, enabling proper usage with React's `<Freeze>` and similar patterns
      * **XCFramework pre-build preparation** - Prepared the codebase to support XCFramework pre-builds in upcoming releases
      * **withUniwind data attributes fix** - Fixed `withUniwind` not respecting data attributes
      * **P3 color parsing fix** - Fixed Display P3 color parsing
      * **Reanimated circular dependency fix** - Fixed a circular dependency issue with Reanimated
      * **tar security fix** - Updated `tar` package to address a security vulnerability
    </Update>

    <Update label="March 19, 2026" description="1.0.0-rc.6" tags={["Release Candidate"]}>
      ## Custom Animations & Native Transitions

      * **Custom animations** - Added support for custom keyframe animations via `className`. See [Reanimated Animations](/pro/reanimated-animations)
      * **Entering and exiting animations** - New built-in entering and exiting animation presets. See [Reanimated Animations](/pro/reanimated-animations)
      * **Native blur theme transitions** - Added new blur-based theme transition effects. See [Theme Transitions](/pro/theme-transitions)
      * **border-continuous and border-circular** - Added `border-continuous` and `border-circular` border curve utilities
      * **Filter unserializable tokens** - Unserializable tokens are now filtered out gracefully instead of causing a parsing failure
      * **React Native 0.85 support** - Added compatibility with React Native 0.85
      * **ThemeName type export** - Exported the `ThemeName` type for easier typed theme usage
      * **Transition animation for single node** - Ensure transition animation is triggered even for components with a single node
      * **Native transition warnings** - Warn when there is no active shadow node available for transitions
      * **getWebStyles fix** - Fixed `getWebStyles` not returning default HTML styles
      * **Data attributes fix** - Fixed passing data attributes correctly to React Native Web
      * **CSS parser transforms fix** - Fixed CSS parser not handling multiple transforms correctly
      * **Custom utilities guide** - Added a guide for creating custom utilities. See [Custom Utilities](/theming/custom-utilities)
      * **Nitro Modules upgrade** - Updated to `react-native-nitro-modules` 0.35.2
      * **E2E testing** - Added automated end-to-end tests to the repository
    </Update>

    <Update label="March 5, 2026" description="1.0.0-rc.5" tags={["Release Candidate"]}>
      ## Theme Transitions & TV Support

      * **New theme transitions** - Added `SlideLeftToRight`, `CircleTopLeft`, `CircleBottomRight`, `CircleBottomLeft`, and `CircleCenter` transition animations
      * **Web theme transitions ✨** - Added theme transition support for web using the View Transition API
      * **TV and focus selectors** - Added support for tvOS platform, `tv:`, `android-tv:`, `apple-tv:`, and `focus:` selectors
      * **Nitro Modules upgrade** - Migrated to `react-native-nitro-modules` 0.35.0
      * **Official Uniwind skill** - Added official [Uniwind skill](https://skills.sh/uni-stack/uniwind/uniwind) for AI-assisted development
      * **Pinned lightningcss** - Pinned `lightningcss` version to 1.30.1
      * **Line clamp fix** - Fixed guard against `display: box` from `line-clamp-*` classes
    </Update>

    <Update label="March 2, 2026" description="1.0.0-rc.4" tags={["Release Candidate"]}>
      ## Nitro Upgrade & Fixes

      * **Nitro Modules upgrade** - Upgraded to `react-native-nitro-modules` 0.34.1
      * **Web bundling fix** - Fixed a web bundling issue introduced in rc.3
      * **Theme selector fix** - Moved theme selector out of the root and removed nulls
    </Update>

    <Update label="February 26, 2026" description="1.0.0-rc.3" tags={["Release Candidate"]}>
      ## Scoped Themes & Stability Fixes

      * **Scoped Themes 🎉** - Added `ScopedTheme` support for applying themes to a subtree without changing the global app theme. See [Scoped Themes](/api/scoped-themes)
      * **Migration skill update** - Updated the Nativewind-to-Uniwind migration skill to include `ScopedTheme` guidance
      * **JS expression fallback fix** - Invalid JavaScript expressions are now treated as plain strings instead of failing parsing
      * **Gradient parsing fix** - Fixed gradient parsing with `%` values and CSS variables
      * **Border opacity shadow tree fix** - Fixed missing shadow tree updates for borders with opacity
      * **Android hard reload memory leak fix** - Resolved an Android memory leak during hard reloads
      * **Reanimated theme transition crash fix** - Fixed app crashes when repeatedly switching themes with reanimated transitions
    </Update>

    <Update label="February 18, 2026" description="1.0.0-rc.2" tags={["Release Candidate"]}>
      ## New Utilities & Fixes

      * **Start/end spacing properties** - Added support for `ps`, `pe`, `ms`, and `me` logical spacing utilities by @khaled-hamam
      * **fontScale and pixelRatio without arguments** - Both `fontScale()` and `pixelRatio()` functions can now be called without arguments
      * **FlatList crash fix** - Fixed a crash for undefined ShadowNode while unmounting components in nested `FlatList` and `VirtualizedList`
      * **Android IME insets** - Android now ignores IME insets and correctly respects system bars
    </Update>

    <Update label="February 13, 2026" description="1.0.0-rc.1" tags={["Release Candidate"]}>
      ## Public Release

      <Check>
        We're thrilled to announce the first public release of Uniwind Pro. Battle-tested by dozens of companies and ready to be used in your unique project.
      </Check>

      * **Insets safety with keyboard management** - Bottom safe area insets are now protected from IME insets when using keyboard management packages
      * **Nitro Modules upgrade** - Upgraded to `react-native-nitro-modules` 0.33.9
      * **Migration skill released** - Added a migration skill from Nativewind to Uniwind. Give it a try in [Skills](/skills)
      * **Metro config cleanup** - Removed `.mjs` export from Metro config
      * **Hermes v1 fix** - Insets updates now subscribe before triggering listeners
    </Update>
  </Accordion>
</AccordionGroup>

<AccordionGroup>
  <Accordion title="Show beta history">
    <Update label="February 9, 2026" description="1.0.0-beta.11" tags={["Beta"]}>
      ## Cache & Fixes

      This release focuses on download efficiency, platform fixes, and improved package manager compatibility:

      * **Local cache for worktrees** - Implemented local cache to reduce repeated downloads when working across Git worktrees
      * **Android color scheme fix** - Fixed an issue where the initial color scheme could be locked to light on Android
      * **Nitro Modules support update** - Support `react-native-nitro-modules` 0.33.7
      * **FlashList and LegendList safety fix** - Prevented nullable `__nativeTag` for FlashList and LegendList
      * **pnpm installation fix** - Added a `uniwind-pro` postinstall script to fix an issue in pnpm environments
      * **Animated Pressable restored** - Brought back Animated Pressable after a regression in beta.10
      * **RNW + Vite Tailwind fix** - Fixed Tailwind classes not applying to React Native Web and Vite by @dannyhw

      <Info>
        This is most likely the latest beta release. Uniwind Pro is expected to become generally available for everyone with the first RC release.
      </Info>
    </Update>

    <Update label="February 2, 2026" description="1.0.0-beta.10" tags={["Beta"]}>
      ## Data attributes

      This release includes engine upgrades, rendering fixes, and improved web compatibility:

      * **Data attribute selectors** - Added support for styling with `data-*` attributes. See [Data Selectors](/api/data-selectors)
      * **Nitro Modules upgrade** - Upgraded to `react-native-nitro-modules` 0.33.3
      * **hairlineWidth support** - Add missing implementation on the C++ side
      * **Nested Text classNames** - Fixed missing `className` propagation for nested `Text` components
      * **CSS variables isolation** - Fixed an issue with `updateCSSVariables` while updating the current theme
      * **React Native Web fixes** - Resolved minor issues where some styles didn't apply correctly on the web
      * **Insets parsing** - Fixed an issue with parsing insets values
    </Update>

    <Update label="January 27, 2026" description="1.0.0-beta.9" tags={["Beta"]}>
      ## Features & Bug Fixes

      This release brings iOS static frameworks support and important web platform fixes:

      * **iOS static frameworks support** - Full compatibility with `useFrameworks: "static"`
      * **Simpler CI/CD setup** - `libsecret` installation is no longer needed to verify the license on cloud platforms
      * **React Native Web CSS layer fix** - Patched React Native Web to wrap default styles with CSS layer for better style isolation
      * **Vite Animated components fix** - Fixed resolution of Animated components in Vite builds
      * **ColorSchemeName compatibility** - Added support for both new and old ColorSchemeName types in React Native
    </Update>

    <Update label="January 22, 2026" description="1.0.0-beta.8" tags={["Beta"]}>
      ## Bug Fixes

      This release includes important fixes for build and path resolution:

      * **Resolver internal path check** - Fixed internal path resolution in the custom resolver that was causing errors on the web platform
      * **CMakeLists.txt autolinking** - Corrected the autolinking file path in CMakeLists.txt for better build compatibility
    </Update>

    <Update label="January 22, 2026" description="1.0.0-beta.7" tags={["Beta"]}>
      ## More Power, More Flexibility

      This release brings exciting new features and important fixes to make your development experience even smoother.

      * **Custom safe area spacings** - You can now combine safe area utilities with custom spacing values (e.g., `pt-safe-[20px]`, `pb-safe-4`) for pixel-perfect layouts
      * **parseColor runtime support** - New `parseColor` function lets you parse Tailwind colors at runtime, perfect for dynamic theming and color manipulation
      * **Linux build fix** - Fixed a case-sensitive filename issue that caused Android builds to fail on Expo EAS (Linux environments)
      * **Improved Metro stability** - Resolved a "maximum call stack size exceeded" error that could crash the Metro bundler
      * **Better path resolution** - Fixed React Native directory resolution for non-standard project structures

      <Info>
        **Experimental iOS Static Frameworks Support**: If you're using `useFrameworks: "static"` in your Expo config, try the experimental version `uniwind-pro-1.0.0-beta.7-22012026`. This build includes fixes for iOS static framework compatibility.
      </Info>
    </Update>

    <Update label="January 20, 2026" description="1.0.0-beta.6" tags={["Beta"]}>
      ## Bug Fixes & CLI Improvements

      * **numberOfLines fix** - Fixed an issue where `numberOfLines` prop didn't work correctly
      * **Uniwind.updateInsets noop** - Added noop function for `Uniwind.updateInsets` for better compatibility with open source version
      * **CLI light theme support** - The CLI now supports light terminal themes
    </Update>

    <Update label="January 19, 2026" description="1.0.0-beta.5" tags={["Beta"]}>
      ## Welcome Waitlist Users!

      This is the first release available to users from the waitlist. We're excited to have you on board!

      * **Team license package name support** - You can now use package names with `/` in team licenses (e.g., `@repo/example`)

      ### Under the hood

      * Changed imports for some Nitro headers to be found in different C++ environments
    </Update>

    <Update label="January 19, 2026" description="1.0.0-beta.4" tags={["Beta"]}>
      ## CLI Improvements

      * **pnpm support** - The `uniwind-pro` CLI now supports pnpm package manager
    </Update>

    <Update label="January 18, 2026" description="1.0.0-beta.3" tags={["Beta"]}>
      ## Smoother Than Ever

      We've been obsessing over the small details that make a big difference. This release focuses on making Uniwind Pro feel buttery smooth.

      * **Revamped Shadow Tree algorithm** - We've rewritten how style updates propagate through the Shadow Tree. The result? Even snappier UI updates with less overhead
      * **Smarter snapshot handling** - Pending snapshots are now canceled when no Shadow Tree update occurs, avoiding unnecessary UI blocks
      * **Theme transitions fixed on iOS** - Native props now update correctly when theme transition is set to `none`
      * **One-line upgrade** - Transitioning from Uniwind to Uniwind Pro is now a single line change in your `package.json`. Less config, more building

      ### Under the hood

      * Upgraded to `react-native-nitro-modules` >= 0.33.2
    </Update>

    <Update label="January 15, 2026" description="1.0.0-beta.2" tags={["Beta"]}>
      ## Bug Fixes & Improvements

      This release includes all fixes from Uniwind Free v1.2.4:

      * **Animated components now work correctly** - Fixed an issue where Animated components were incorrectly skipped by the custom resolver
      * **Improved CSS class parsing** - Fixed whitespace handling around dots in class names
      * **Theme change API improvements** - The `onThemeChange` callback is now properly protected
      * **Nitro Modules upgrade** - Now requires `react-native-nitro-modules` >= 0.33.0
      * **CLI dependencies update** - Moved CLI packages from `devDependencies` to `dependencies` for better compatibility
    </Update>

    <Update label="January 11, 2026" description="1.0.0-beta.1" tags={["Beta"]}>
      ## Uniwind Pro Beta

      We're thrilled to announce the first beta release of Uniwind Pro! This release is powered by the brand new **Unistyles 2nd generation C++ engine** with full **Fabric** support.

      All Pro features are now available:

      * **Zero re-renders** - Shadow Tree updates happen directly in C++ without triggering React re-renders
      * **Built-in safe area insets** - Automatically injected from the native layer, no setup required
      * **Reanimated 4 support** - Use Tailwind classes for animations via `className`
      * **Full Fabric support** - Built from the ground up for the new React Native architecture

      <Info>
        All features listed on the [pricing page](https://uniwind.dev/pricing) have been implemented in this beta release.
      </Info>

      ### What's next?

      We're doing final checks before removing the waitlist and inviting subscribers. It's a matter of days rather than weeks now.
    </Update>
  </Accordion>
</AccordionGroup>
