
Security News
libxml2 Maintainer Ends Embargoed Vulnerability Reports, Citing Unsustainable Burden
Libxml2’s solo maintainer drops embargoed security fixes, highlighting the burden on unpaid volunteers who keep critical open source software secure.
react-native-size-matters
Advanced tools
A React-Native utility belt for scaling the size your apps UI across different sized devices
The react-native-size-matters package provides utility functions to handle scaling of sizes in a React Native application. It helps in making the app responsive across different screen sizes and resolutions.
Scaling Sizes
This feature allows you to scale sizes based on the device's screen size. The `scale`, `verticalScale`, and `moderateScale` functions help in scaling width, height, and other dimensions respectively. The `ScaledSheet` utility allows you to define styles with scaling directly in the stylesheet.
import { ScaledSheet, moderateScale, verticalScale, scale } from 'react-native-size-matters';
const styles = ScaledSheet.create({
container: {
width: '100@s', // scales the width
height: '50@vs', // scales the height vertically
padding: '10@ms', // scales the padding moderately
},
});
const scaledWidth = scale(100);
const scaledHeight = verticalScale(50);
const scaledPadding = moderateScale(10);
ScaledSheet
The `ScaledSheet` utility allows you to create stylesheets where you can use scaling directly in the style definitions. This makes it easier to maintain and apply consistent scaling across your application.
import { ScaledSheet } from 'react-native-size-matters';
const styles = ScaledSheet.create({
container: {
width: '100@s',
height: '50@vs',
padding: '10@ms',
},
text: {
fontSize: '14@ms',
},
});
The react-native-responsive-screen package provides utility functions to make your React Native app responsive. It offers functions like `widthPercentageToDP` and `heightPercentageToDP` to convert percentage-based dimensions to device pixels. Compared to react-native-size-matters, it focuses more on percentage-based scaling rather than fixed scaling values.
The react-native-dimension package provides a simple way to handle responsive design in React Native. It offers functions like `getWidth` and `getHeight` to get dimensions based on the device's screen size. While it provides similar functionality to react-native-size-matters, it is less feature-rich and does not offer moderate scaling or a scaled stylesheet utility.
A lightweight, zero-dependencies, React-Native utility belt for scaling the size of your apps UI across different sized devices.
npm install --save react-native-size-matters
//or:
yarn add react-native-size-matters
When developing with react-native, you need to manually adjust your app to look great on a variety of different screen sizes. That's a tedious job.
react-native-size-matters provides some simple tooling to make your scaling a whole lot easier.
The idea is to develop once on a standard ~5" screen mobile device and then simply apply the provided utils.
📖 You can read more about what led to this library on my blog post, which can be found in this repo or at Medium.
import { scale, verticalScale, moderateScale } from 'react-native-size-matters';
const Component = props =>
<View style={{
width: scale(30),
height: verticalScale(50),
padding: moderateScale(5)
}}/>;
scale(size: number)
Will return a linear scaled result of the provided size, based on your device's screen width.
verticalScale(size: number)
Will return a linear scaled result of the provided size, based on your device's screen height.
moderateScale(size: number, factor?: number)
Sometimes you don't want to scale everything in a linear manner, that's where moderateScale comes in.
The cool thing about it is that you can control the resize factor (default is 0.5).
If normal scale will increase your size by +2X, moderateScale will only increase it by +X, for example:
➡️ scale(10) = 20
➡️ moderateScale(10) = 15
➡️ moderateScale(10, 0.1) = 11
moderateVerticalScale(size: number, factor?: number)
Same as moderateScale, but using verticalScale instead of scale.
All scale functions can be imported using their shorthand alias as well:
import { s, vs, ms, mvs } from 'react-native-size-matters';
import { ScaledSheet } from 'react-native-size-matters';
const styles = ScaledSheet.create(stylesObject)
ScaledSheet will take the same stylesObject a regular StyleSheet will take, plus a special (optional) annotation that will automatically apply the scale functions for you:
<size>@s
- will apply scale
function on size
.<size>@vs
- will apply verticalScale
function on size
.<size>@ms
- will apply moderateScale
function with resize factor of 0.5 on size
.<size>@mvs
- will apply moderateVerticalScale
function with resize factor of 0.5 on size
.<size>@ms<factor>
- will apply moderateScale
function with resize factor of factor
on size.<size>@mvs<factor>
- will apply moderateVerticalScale
function with resize factor of factor
on size.ScaledSheet also supports rounding the result, simply add r
at the end of the annotation.
Example:
import { ScaledSheet } from 'react-native-size-matters';
const styles = ScaledSheet.create({
container: {
width: '100@s', // = scale(100)
height: '200@vs', // = verticalScale(200)
padding: '2@msr', // = Math.round(moderateScale(2))
margin: 5
},
row: {
padding: '10@ms0.3', // = moderateScale(10, 0.3)
width: '50@ms', // = moderateScale(50)
height: '30@mvs0.3' // = moderateVerticalScale(30, 0.3)
}
});
FAQs
A React-Native utility belt for scaling the size your apps UI across different sized devices
The npm package react-native-size-matters receives a total of 149,165 weekly downloads. As such, react-native-size-matters popularity was classified as popular.
We found that react-native-size-matters demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Libxml2’s solo maintainer drops embargoed security fixes, highlighting the burden on unpaid volunteers who keep critical open source software secure.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.