/flow-js-sdk

Tools for building browser applications on Flow ๐ŸŒŠ

Primary LanguageJavaScriptApache License 2.0Apache-2.0

FLOW-JS-SDK Continuous Integration

Introducing @onflow/fcl

Flow's JavaScript SDK was created to make developing JavaScript applications that connect to the Flow blockchain easy and secure.

While it would be possible to create a Flow wallet as a browser plugin, we specifically created @onflow/fcl so that web-based dapps donโ€™t have to depend on browser plugins. @onflow/fcl is able to connect browser-based dapps to a wallet service, or a wallet installed on your phone or running on your local computer without introducing the security risks that can come from installing a browser plugin.

Wallet Discovery

@onflow/fcl also eliminates the need for dapp developers to write code to integrate their user's preferred wallet into their application. Instead,@onflow/fcl uses a secure discovery protocol that wallets can implement to connect to @onflow/fcl. The end result is dapps using @onflow/fcl automatically integrate all compatible wallets without their developers needing to write any custom code!

Limitless Development

@onflow/fcl enables cross-platform dapps. By not depending on JavaScript injection as a mechanism for connecting dapps with wallets, native desktop dapps and mobile dapps can connect to the same wallet software as browser dapps.

Getting Started with FCL

To use the Flow JavaScript SDK in your application, install using yarn or npm

npm i -S @onflow/fcl @onflow/types

Learn to use @onflow/fcl: Flow App Quickstart


Requirements

Please note, that some code provided - e.g. Object.fromEntries - will require Node version v12.0.0 or higher.

Overview

  • Higher Level

  • Lower Level

    • @onflow/protobuf -- Dependency of send. Provides transport between the browser and the Flow blockchain.
    • interaction -- A data structure that can be built, resolved and sent to the Flow blockchain.
    • response -- A data structure that represents a response from the Flow blockchain. If the interaction returns something, it can be decoded without something like an ABI.
    • encode -- Transactions needs signatures, this module knows how to create the values that get signed.
  • Development Tools