Skip to content

steemit/steem-js

Repository files navigation

Steem.js

A modern JavaScript/TypeScript library for interacting with the Steem blockchain. Complete refactoring with TypeScript, modern tooling, and improved security.

npm version License: MIT

📚 Documentation

👉 Complete API Documentation - Comprehensive guide with all methods, examples, and usage patterns

API routing (condenser_api vs database_api) - How RPC namespaces map to current Steem nodes (v1.0.16+)

📋 Changelog - Version history and breaking changes

🔧 Refactoring Details - Technical details about the 2025 modernization

🚀 Quick Start

Requirements

  • Node.js: >= 20.19.0 (LTS recommended)
  • Browser: Modern browsers with Web Crypto API support

Installation

# npm
npm install @steemit/steem-js

# pnpm (recommended)
pnpm install @steemit/steem-js

# yarn
yarn add @steemit/steem-js

Basic Usage

import { steem } from '@steemit/steem-js';

// Configure API endpoint
steem.config.set({
  nodes: ['https://api.steemit.com'],
  address_prefix: 'STM'
});

// Get account information
const accounts = await steem.api.getAccountsAsync(['username']);
console.log(accounts[0]);

// Vote on a post
const postingWif = steem.auth.toWif('username', 'password', 'posting');
await steem.broadcast.voteAsync(postingWif, 'voter', 'author', 'permlink', 10000);

Browser Usage

<script src="https://cdn.jsdelivr.net/npm/@steemit/steem-js/dist/index.umd.min.js"></script>
<script>
  steem.config.set({ nodes: ['https://api.steemit.com'] });
  steem.api.getAccountsAsync(['username']).then(console.log);
</script>

✨ Key Features

  • 🔗 Correct RPC routing - Legacy read APIs use condenser_api; chain/validation APIs use database_api (v1.0.16+, aligned with steem)
  • 🔒 Type Safety - Full TypeScript support with complete type definitions
  • ⚡ Modern - ES modules, async/await, modern cryptography libraries
  • 🌐 Universal - Works in Node.js, browsers, and bundlers
  • 🔐 Secure - Proper cryptographic implementations, no key exposure
  • 📖 Well Documented - Comprehensive API documentation with examples

🏗️ Development

# Install dependencies
pnpm install

# Build the library
pnpm build

# Run tests
pnpm test

# Type checking
pnpm typecheck

📦 What's New in 2025

This is a complete modernization of the original steem-js library:

  • TypeScript Migration - Full type safety and better developer experience
  • Modern Dependencies - Replaced outdated crypto libraries (bigibn.js, ecurveelliptic)
  • Modern Crypto - Using @noble/hashes and @noble/ciphers for universal browser/Node.js compatibility
  • Build System - Migrated from Webpack to Rollup for better output
  • Testing - Migrated from Mocha to Vitest with 95.8% test coverage
  • Security - Fixed insecure random number generation and crypto implementations

📋 Project Structure

src/
├── api/          # Blockchain API client (HTTP; methods.ts → condenser_api / database_api / …)
├── auth/         # Authentication and key management
├── broadcast/    # Transaction broadcasting
├── crypto/       # Cryptographic utilities
├── formatter/    # Data formatting helpers
├── memo/         # Encrypted memo handling
├── operations/   # Operation type definitions
├── serializer/   # Transaction serialization
└── utils/        # Utility functions

🔗 Links

📄 License

MIT - see LICENSE file for details.


💡 Need help? Check the complete documentation for detailed examples and API reference.

About

Steem.js the official JavaScript library for Steem blockchain

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages