
Security News
upm Launches as a Fast, Tiny Package Manager Written in TypeScript
upm uses Node.js to deliver fast npm installs in about 250 KB, with a JavaScript API and security defaults.
@limrun/play-auth
Advanced tools
Browser Google authentication and Google Play publishing primitives for Limrun.
Headless building blocks for publishing an AAB asset from the Limrun
registry to Google Play, with a browser-owned Google sign-in. No UI ships
here; embedders render their own buttons and dialogs around the hook,
same as device-install.
The Google access token is minted in the browser via Google Identity Services (token model, no client secret) and sent to the registry once per publish. Limrun never stores it.
import { usePlaystorePublish } from '@limrun/play-auth/react';
const play = usePlaystorePublish({
registryApiUrl: 'https://registry.limrun.com',
token: limrunToken,
organizationId: organizationTid,
googleClientId: GOOGLE_OAUTH_CLIENT_ID,
});
// On dialog open, warm the sign-in script so the click stays popup-safe.
// Optionally await the returned promise (true = ready) to gate the button:
play.preloadGoogle();
// Button handlers:
await play.signInWithGoogle();
await play.publish({ assetName: 'app-release.aab', packageName: 'com.example.app' });
// Render from state: play.status, play.versionCode, play.error, play.errorCode
errorCode carries the registry's machine-readable error code; the
canonical value list lives on PlaystorePublishError's doc comment and
grows additively.
Google access tokens expire after about an hour. A permissionDenied
error long after sign-in usually means the token expired; offer "Sign in
with Google" again rather than pointing users at Play Console
permissions.
Persistent signing material such as the Play upload keystore stays under
the caller's control through SigningSecretStore, the same pluggable
interface @limrun/apple-auth uses for Apple material (the two are
structurally identical, so one store instance can serve both). Generate a
keystore in the browser and escrow it in whichever store you choose:
import {
createLimrunSecretStore,
generateAndroidUploadKeystore,
putAndroidSigningKeySecret,
} from '@limrun/play-auth';
const store = createLimrunSecretStore({ apiUrl, token, organizationId }); // or your own
const keystore = await generateAndroidUploadKeystore('com.example.app');
await putAndroidSigningKeySecret(store, 'com.example.app', keystore);
createLimrunSecretStore escrows in Limrun's organization secret store,
which is where lim gradle build --sign looks the key up (named by the
bare application ID). Applications that keep secrets themselves implement
the interface over their own storage — a database, a KMS, anything; the
publish-to-stores example backs it with its example backend's file store.
import { requestGoogleAccessToken, publishToPlaystore } from '@limrun/play-auth';
const accessToken = await requestGoogleAccessToken({ clientId: GOOGLE_OAUTH_CLIENT_ID });
const { versionCode } = await publishToPlaystore({
registryApiUrl,
token,
organizationId,
accessToken,
assetName: 'app-release.aab',
packageName: 'com.example.app',
});
FAQs
Browser Google authentication and Google Play publishing primitives for Limrun.
The npm package @limrun/play-auth receives a total of 33 weekly downloads. As such, @limrun/play-auth popularity was classified as not popular.
We found that @limrun/play-auth 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.

Security News
upm uses Node.js to deliver fast npm installs in about 250 KB, with a JavaScript API and security defaults.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.