Skip to content

Releases: jpudysz/react-native-unistyles

Release 3.0.7

22 Jul 19:12

Choose a tag to compare

3.0.7 (2025-07-22)

Features

  • add SafeAreaView component support with package configuration (8157978)
  • add SafeAreaView to supported components list (90f1c9f)

Release 3.0.6

22 Jul 12:09

Choose a tag to compare

3.0.6 (2025-07-22)

Features

  • add support for SafeAreaView React Native component (0c73dc8)
  • add support for nitro 0.26.4 (60da5c2)

Release 3.0.5

17 Jul 12:35

Choose a tag to compare

3.0.5 (2025-07-17)

Features

  • add dedicated breakpoint dependency handler to skip sealed check (5754344)

Bug Fixes

  • correct spelling of 'dependency' in breakpoint-related methods (8ff5fa9)
  • infinite loop with setRootViewBackgroundColor (f4eb08d)
  • map autoProcessPaths values to platform path (d1f28ff)

Release 3.0.4

14 Jul 10:26

Choose a tag to compare

3.0.4 (2025-07-14)

Bug Fixes

  • allow passing adaptiveThemes false with initialTheme (c321743)

Features

  • add debugPrintFollyDynamic helper to debug shadowe tree updates (80c633b)

Release 3.0.3

11 Jul 06:42

Choose a tag to compare

3.0.3 (2025-07-11)

Bug Fixes

  • [Web] improve no theme error messages (af25e04)
  • [Web] pick first theme if only one is passed (5e3c527)

Release 3.0.2

08 Jul 08:45

Choose a tag to compare

3.0.2 (2025-07-08)

Features

  • feat: update unistyles_get_rn_version.rb to detect react native version in monorepos (c2663774) by @howljs

Bug Fixes

  • fix: setting root view background color (451198b4)

Release 3.0.1

07 Jul 15:31

Choose a tag to compare

3.0.1 (2025-07-07)

Chores

  • chore: rename ruby script that conflicts with some libraries (d8ef9fe9)

Release 3.0.0

07 Jul 11:34

Choose a tag to compare

3.0.0 (2025-07-07)

I’m happy to announce the first stable version of Unistyles 3.0! πŸŽ‰

Blog post: https://www.reactnativecrossroads.com/posts/introducing-unistyles-3
Tutorial: https://www.unistyl.es/v3/tutorial/intro
Documentation: https://www.unistyl.es/

Features

  • [Tests] feat: add missing mocks for reanimated (05e76d57)
  • [iOS] feat: rename ruby helper as it collides with sentry (6357495f)
  • [Android] feat: add support for flexible page sizes in Android native build (168c66e7)
  • [Android] feat: improve insets initialization on Android (ee534e93)
  • [Core] feat: scopedtheme reset (ced956c1)
  • [Web] feat: update web listener to emit dependency (8d93c9aa)
  • [Core] feat: support useUnistyles and withUnistyles (69be79a6)
  • [Core] feat: scoped themeName web implementation (722d6a8a)
  • [Core] feat: Scoped Theme inverted adaptive native implementation (f965e5e8)
  • [iOS] feat: add React Native version detection for iOS dependencies in podspec (25d378b8)
  • [Core] feat: dont spread key in withUnistyles (f8d77a95)
  • [Core] feat: add destroy method to clear registry state on module invalidation (b532e6e0)

Bug Fixes

  • [Web] fix: emit adaptive themes change event, toggle adaptiveThemes after setting theme to prevent error (e6570f98)
  • [Web] fix(web): run forwarded ref without style prop (59af6a1d)
  • [Core] fix: remove redundant case for inverted adaptive theme handling (2d736a4f)
  • [TS] fix: add typecasting and type reference (8645f6e6) by @phoenixisuppose
  • [Core] fix: prevent runtime updates in scoped theme when theme name changes (132a9bc6)
  • [Web] fix: emit theme change when theme is updated (8e52391c)
  • [Android] fix: use content view instead of decorView to get initial window insets on Android (30ff893d)
  • [iOS] fix: set default RN version to 999 in podspec when USE_FRAMEWORKS is enabled (e4efbbce)
  • [iOS] fix: improve React Native version parsing using Gem::Version in rn_version.rb (f7956bea)
  • [iOS] fix: update pod dependencies and switch from framework to static library in iOS (ea0cab0d)
  • [Web] fix: correctly detect pseudo class or pseudo element (e6b172e1)
  • [Core] fix: remove invalid assignment to correctly set rootViewBackgroundColor (929160dc)

Chores

  • chore: release 3.0.0-nightly-20250703 (68bacec7)
  • chore: release 3.0.0-nightly-20250626 (1265e26c)
  • chore: release 3.0.0-nightly-20250619 (a746f3cf)
  • chore: simplify home screen with variant styles and navigation links (0de395d7)
  • chore: improve ScopedTheme component type safety and switch case order (a771dcc6)
  • chore: release 3.0.0-nightly-20250617 (ad3aef94)
  • chore: include rn_version.rb file in npm package distribution (044b48ba)
  • chore: release 3.0.0-nightly-20250616 (4dad05c8)
  • chore: release 3.0.0-nightly-20250613 (0ff6b0e6)
  • chore: remove usage of replace in pseudo css generation (ce9024e3)

Documentation

  • docs: update minimum React Native version requirement to 0.78.0 (ff6e8571)
  • docs: update React Native and Expo SDK version requirements (44961935)

Release 2.43.0

19 Jun 09:05

Choose a tag to compare

2.43.0 (2025-06-19)

Features

  • [Android] - add support for 16KB page sizes (4b3ef0)

Release 3.0.0-rc.5

10 Jun 09:56

Choose a tag to compare

3.0.0-rc.5 (2025-06-10)

πŸ₯‡ GOLDEN RC πŸ₯‡

Stable release comming later this month!

Hello, Unistylers!
This is the biggest release candidate since the first version, as it includes a ton of DX improvements and bug fixes.

Breaking changes

  1. We now require the root option for the Babel plugin. This was confusing for many developers, and it was hard to tell if a style was managed by Unistyles or not. With this new required option, you need to provide the root of your application, e.g., src or app. All StyleSheets and components within this folder will be managed by Unistyles! Read more.
// babel.config.js

return {
  plugins: [
    ['react-native-unistyles/plugin', {
      root: 'src'
    }]
  ]
}
  1. React Native 0.78 and React 19 are now the minimum required versions. We always strive to maintain backward compatibility with the oldest possible versions of React Native. However, with the latest changes that improved the ShadowTree algorithms, we were able to remove a lot of code that was impacting performance and compatibility with other libraries like react-native-reanimated. The stable version of Unistyles 3.0 will not be released before React Native 0.80, which means that from day one, we will support all versions currently supported by React Native.
  2. Shadow Tree algorithm, which is the core of Unistyles, was replaced during the nightly phase between RC.4 and RC.5. You should see noticeable improvements, especially with lists, but we want to make this explicit in the changelog so everyone is aware of this impactful change. This is an internal update and does not introduce any visible changes for developers.
  3. react-native-gesture-handler paths are no longer processed automatically by the Unistyles Babel plugin. After careful consideration and a bug report from Storybook, we decided to remove this option from the plugin. We believe that handlers are not the best place to style your views, and most use cases simply add { flex: 1 } to make them expandable containers. Initially, we wanted to support RNGH Pressable to be automatically managed by Unistyles ShadowTree updates, but after further investigation, we confirmed that this is a native view, so the only way to upgrade it is by wrapping it in withUnistyles.

New features

  1. New hook for Reanimated: useAnimatedVariantColor, which helps you reuse StyleSheet variants and animate color transitions. The Unistyles wrapper uses interpolateColor from Reanimated under the hood. You can animate color transitions however you want, and as always, your view will never re-render!
import { StyleSheet } from 'react-native-unistyles'
import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated'
import { useAnimatedVariantColor } from 'react-native-unistyles/reanimated'

// JSX
const color = useAnimatedVariantColor(styles.styleWithVariants, 'backgroundColor')
const animatedStyle = useAnimatedStyle(() => {
  return {
    backgroundColor: withTiming(color.value, {
      duration: 500
    })
  }
})

// styles
const styles = StyleSheet.create(theme => ({
  styleWithVariants: {
     height: 100,
     width: 100,
     variants: {
        variant: {
           red: {
               backgroundColor: theme.colors.red
           },
           blue: {
               backgroundColor: theme.colors.blue
            }
         }
      }
  }
})

Read more about new API here.

  1. ScopedTheme now supports inverted colors. This change was inspired by feedback on App.js and addresses some missing functionalities found in other styling libraries. Starting from RC.5 you can use the inverseAdaptive prop to invert the theme for all children when your app is in adaptiveMode. In other words, if your theme is light, all children will be rendered with dark colors, and vice versa.
<ScopedTheme invertedAdaptive>
    <View style={styles.container}>
        <Text style={styles.text}>
            Text is light when color scheme is dark and dark when color scheme is light
        </Text>
    </View>
</ScopedTheme>

Read more about invertedAdaptive here.

  1. Support for Repack!

Thanks to @whydidoo implementation you can now use Unistyles with re.pack πŸ¦€
Read more about it in PR

  1. Last but not least support for React Native 0.80 and Nitro 0.26+ has been added. We’re ready to spend the next 2-3 weeks monitoring any issues you report before promoting Unistyles 3.0 to stable. During this time, we will focus on demos, examples, documentation, and restructuring our repository to help with maintenance.

Thank you all for your support on X, Discord, and in person during App.js Conf in Krakow. Happy styling! πŸ¦„

Features

  • feat: replace direct value assignments with set/get methods in variant color animations (bdeb5581)
  • feat: make animateCallback optional and update color variant animation handling (62ce079e)
  • feat: web animated variants (30761e26)
  • feat: remove react-native-gesture-handler from auto-processed paths (cca51b5b)
  • feat: add crash prevention for horizontal FlatList on Android with improved error messages (e810bff6)
  • feat: add simplified useAnimatedVariantColor hook for color interpolation (bed05fc9)
  • feat: bump nitro to 0.26.2 (eb3d81d8)
  • feat: add useAnimatedVariants hook for smooth theme transitions with Reanimated (66fd7bed)
  • feat: add box-shadow string parsing support for style objects (f79beee2)
  • feat: split scoped themes to separate components (c0b2d5df)
  • feat: add scoped theme components with inverted adaptive theme support (1777a0b0)
  • feat: add isLandscape and isPortrait orientation helpers to runtime (4d68832d)
  • feat: improve box shadow parsing with color validation and renamed spread property (d9f87c8b)
  • feat: add boxShadow string parser for native and web platforms (5c2ad875)
  • feat: add shadow tree flush mechanism for scoped theme updates (55a6de89)
  • feat: require react 19 for better ref cleanups (75b527ac)
  • feat: make root option required in Babel plugin configuration (e6939cae)
  • feat: build new versions (f409be56)
  • feat: added the Repack plugin to enable using Babel Unistyles in projects with Repack (1e4b05a2)
  • feat: add missing props (6fbdb6c2)
  • feat: spead up shadowtree lookup (cfadacfd)
  • feat: get rid of commit hooks, upgrade demos (5c861dea)
  • feat: update versions (a77ee610)

Bug Fixes

  • fix: improve ScopedTheme component error handling and update version table in docs (0ac9e5ca)
  • fix: simplify home screen and add tabs navigation structure (8ff01e37)
  • fix: reorder imports according to style guide in useUpdateVariantColor (d02ffac0)
  • fix: remove state cleanup during live reload in UnistylesRegistry ([869a78a](https://github.com/jpud...
Read more