
Research
/Security News
npm Author Qix Compromised via Phishing Email in Major Supply Chain Attack
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
@react-native-webapis/web-storage
Advanced tools
EXPERIMENTAL - USE WITH CAUTION - Web Storage API for React Native
🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧
🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧
Web Storage API for React Native.
yarn add @rnx-kit/polyfills --dev
yarn add @react-native-webapis/web-storage
or if you're using npm
npm add --save-dev @rnx-kit/polyfills
npm add @react-native-webapis/web-storage
diff --git a/packages/test-app/babel.config.js b/packages/test-app/babel.config.js
index 69ebd557..a012b7f5 100644
--- a/packages/test-app/babel.config.js
+++ b/packages/test-app/babel.config.js
@@ -13,6 +13,7 @@ module.exports = {
{ runtime: "automatic" },
],
[require("@babel/plugin-transform-react-jsx-source")],
+ [require("@rnx-kit/polyfills")],
],
},
],
diff --git a/packages/test-app/src/App.native.tsx b/packages/test-app/src/App.native.tsx
index 599634a9..b068909a 100644
--- a/packages/test-app/src/App.native.tsx
+++ b/packages/test-app/src/App.native.tsx
@@ -1,3 +1,4 @@
+// @react-native-webapis
import { acquireTokenWithScopes } from "@rnx-kit/react-native-auth";
// Both `internal` imports are used to verify that `metro-resolver-symlinks`
// resolves them correctly when `experimental_retryResolvingFromDisk` is
@@ -7,7 +8,7 @@ import {
getRemoteDebuggingAvailability,
} from "internal";
import { getHermesVersion } from "internal/hermes";
-import React, { useCallback, useMemo, useState } from "react";
+import React, { useCallback, useEffect, useMemo, useState } from "react";
import type { LayoutChangeEvent } from "react-native";
import {
NativeModules,
@@ -186,6 +187,14 @@ function App({ concurrentRoot }: { concurrentRoot?: boolean }) {
[setFabric]
);
+ const [localValue, setLocalValue] = useState("Pending");
+ useEffect(() => {
+ const key = "sample/local-storage";
+ window.localStorage.setItem(key, "Success");
+ setLocalValue(window.localStorage.getItem(key) ?? "Failed");
+ return () => window.localStorage.removeItem(key);
+ }, []);
+
return (
<SafeAreaView style={styles.body}>
<StatusBar barStyle={isDarkMode ? "light-content" : "dark-content"} />
@@ -195,6 +204,9 @@ function App({ concurrentRoot }: { concurrentRoot?: boolean }) {
style={styles.body}
>
<Header />
+ <View style={styles.group}>
+ <Feature value={localValue}>window.localStorage</Feature>
+ </View>
<View style={styles.group}>
<Button onPress={startAcquireToken}>Acquire Token</Button>
</View>
web-storage
is a new implementation that leverages platform APIs:
Instead of using existing implementations, we opted for this because:
Storage.key()
key(m)
and
key(n)
can both return the same key. We can probably work around this by
keeping a snapshot. For now, this will remain unimplemented until someone
actually needs it.storage
eventFAQs
EXPERIMENTAL - USE WITH CAUTION - Web Storage API for React Native
We found that @react-native-webapis/web-storage demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers 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.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.