A high-performance, web standards-compliant rendering engine based on Flutter.


kraken Post

Kraken pub package Integration Test WorkFlow

💁 Have a try

  1. Install Kraken CLI (macOS only currently)

    $ npm i @openkraken/cli -g
  2. Open with kraken

    # kraken [localfile|URL]
    $ kraken https://raw.githubusercontent.com/openkraken/kraken/master/kraken/example/assets/bundle.js

💌 Why kraken

  • Quick development 🎉

    Compatibility with web standards means you don't have to change your stack.

    const text = document.createTextNode('Hello World!');
  • Cross platform ⚛️

    Seamless integration with Flutter, supports web, mobile (iOS, Android) and desktop (MacOS, Linux, Windows).

  • Fast performance 🚀

    Provide native-like performance such as navigation, animation and infinite list scrolling.

👏 Contributing

By contributing to Kraken, you agree that your contributions will be licensed under its Apache-2.0 License.

  1. Prerequisites

    • Node.js v12.0 or later
    • Flutter version in the kraken/pubspec.yaml
    • CMake v3.2.0 or later
    • Xcode (10.12) or later (Running on macOS or iOS)
    • Android NDK version 21.4.7075529 (Running on Android)
  2. Install

    $ npm install
  3. Building bridge

    Building bridge for all supported platform (macOS, iOS, Android)

    $ npm run build:bridge:all

    Building bridge for one platform


    $ npm run build:bridge:macos


    $ npm run build:bridge:ios


    For Windows users, make sure that running this command under MINGW64 environment(eg. Git Bash).

    $ npm run build:bridge:android
  4. Start example

    $ cd kraken/example
    $ flutter run
  5. Test (Unit Test and Integration Test)

    $ npm test
  • 编译失败:集成kraken后,在xcode中运行ios成功,但在终端中执行flutter run 失败

    编译失败:集成kraken后,在xcode中运行ios成功,但在终端中执行flutter run 失败

    使用的 Kraken 版本 | What version of kraken are you using


    重现步骤 | Steps To Reproduce

    flutter版本2.5.2 stable,创建一个新flutter项目,在终端中执行flutter run能正常运行到ios模拟器中; 按文档集成kraken 后在终端中执行flutter run无法正常运行到ios模拟器中,但xcode可以正常运行 ios目录工程,并且执行flutter run也够正常运行到Andoid 上;

    重现代码 | Code example: pubspec.yaml:

    version: 1.0.0+1
      sdk: ">=2.12.0 <3.0.0"
        sdk: flutter
      kraken: '0.10.0' 
      cupertino_icons: ^1.0.2
      kraken_websocket: ^2.0.0
        sdk: flutter
      flutter_lints: ^1.0.0
      uses-material-design: true
         - images/cat.jpeg
         - kraken/guide.js

    预期结果 | Expected results:

    实际结果 | Actual results: 终端Log:

    Launching lib/main.dart on iPhone 12 Pro in debug mode...
    Running Xcode build...                                          
    Xcode build done.                                            6.9s
    Failed to build iOS app
    Error output from Xcode build:
        --- xcodebuild: WARNING: Using the first of multiple matching destinations:
        ** BUILD FAILED **
    Xcode's output:
        warning: [CP] Unable to find matching .xcframework slice in '/Users/HEcom/saas/ios/Pods/../.symlinks/plugins/kraken/ios/kraken_bridge.xcframework kraken_bridge framework ios-x86_64-simulator ios-arm64_armv7_armv7s' for the current build architectures (arm64 x86_64).
        warning: [CP] Unable to find matching .xcframework slice in '/Users/HEcom/saas/ios/Pods/../.symlinks/plugins/kraken/ios/quickjs.xcframework quickjs framework ios-x86_64-simulator ios-arm64_armv7_armv7s' for the current build architectures (arm64 x86_64).
        ld: warning: directory not found for option '-F/Users/HEcom/saas/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/kraken_bridge'
        ld: warning: directory not found for option '-F/Users/HEcom/saas/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/quickjs'
        ld: framework not found kraken_bridge
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        note: Using new build system
        note: Planning
        note: Build preparation complete
        note: Building targets in dependency order
        /Users/HEcom/saas/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.2.99. (in target 'Reachability' from project 'Pods')
        warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the Runner editor. (in target 'Runner' from project 'Runner')
    Could not build the application for the simulator.
    Error launching application on iPhone 12 Pro.
    opened by gplcn 18
  • Kraken运行不起来啊


    使用的 Kraken 版本 | What version of kraken are you using


    重现步骤 | Steps To Reproduce

    kraken http://kraken.oss-cn-hangzhou.aliyuncs.com/demo/guide-styles.js Kraken Binary NOT exists, try reinstall. FAIL: 1

    安装cmake出现这个问题 brew install cmake image 我xcode 也是最新的啊

    opened by infyzz 18
  • click 事件绑定的 console.log,在三端都没有看到日志输出

    click 事件绑定的 console.log,在三端都没有看到日志输出

    重现步骤 | Steps To Reproduce

    React Demo,给 span 绑定 onClick 事件。

    1. kraken 直接加载 bundle,在 devtools 没有看到日志输出
    2. flutter 源码调试,在 flutter 侧控制台没有看到日志输出
    3. iOS 源码调试,在 Xcode 控制台也没有看到日志输出

    不清楚是 click 事件的问题还是 console.log 的问题

    重现代码 | Code example:

    <span id="sp" onClick={() => {

    预期结果 | Expected results:


    实际结果 | Actual results:





    opened by airingursb 17
  • Kraken Binary NOT exists, try reinstall.

    Kraken Binary NOT exists, try reinstall.

    使用的 Kraken 版本 | What version of kraken are you using

    kraken 0.7.2 npm 7.10.0 node v14.16.1 MacOS 10.15.7

    重现步骤 | Steps To Reproduce

    $ sudo npm install -g @openkraken/cli
    added 24 packages in 1s
    $ kraken https://raw.githubusercontent.com/openkraken/kraken/master/kraken/example/assets/bundle.js
    Kraken Binary NOT exists, try reinstall.

    预期结果 | Expected results:


    实际结果 | Actual results:


    opened by FantasyWind2016 16
  • cli 启动官网项目白屏

    cli 启动官网项目白屏

    使用的 Kraken 版本 | What version of kraken are you using


    重现步骤 | Steps To Reproduce

    kraken https://raw.githubusercontent.com/openkraken/kraken/master/kraken/example/assets/bundle.js image

    重现代码 | Code example:

    预期结果 | Expected results: 成功渲染

    实际结果 | Actual results: 白屏

    opened by 18zili 14
  • Kraken.defineCustomElement切换tabbar 会报错

    Kraken.defineCustomElement切换tabbar 会报错

    debug bug

    --js-- image

    import { createElement } from 'rax';
    function ListView(props) {
      return createElement('etsx-list-view', props);
    export default ListView;
    import { createElement } from 'rax';
    function RefreshIndicator(props) {
        props['onReachedbottom'] = props['onReachedBottom'];
        delete props['onReachedBottom'];
      return createElement('etsx-refresh-indicator', props);
    export default RefreshIndicator;


      Kraken.defineCustomElement('etsx-list-view', (context) {
        return EtsxListViewWidgetElement(context);
      Kraken.defineCustomElement('etsx-refresh-indicator', (context) {
        return EtsxRefreshIndicatorWidgetElement(context);
    class EtsxListViewWidgetElement extends WidgetElement {
      EtsxListViewWidgetElement(context) :
      Widget build(BuildContext context, Map<String, dynamic> properties, List<Widget> children) {
        Size size = MediaQuery.of(context).size;
        ScrollController controller = ScrollController();
        controller.addListener(() {
          if(controller.position.pixels == controller.position.maxScrollExtent) {
            Event changeEvent = CustomEvent('reachedbottom', CustomEventInit(detail: ":"));
            changeEvent.currentTarget = this;
            changeEvent.target = this;
        print(properties );
        return ListView(
          padding: const EdgeInsets.all(0),
          key: const ValueKey('lv'),
          controller: controller,
          children: children
    class EtsxRefreshIndicatorWidgetElement extends WidgetElement {
      EtsxRefreshIndicatorWidgetElement(EventTargetContext? context) : super(context);
      Widget build(BuildContext context, Map<String, dynamic> properties, List<Widget> children) {
        return RefreshIndicator(
          key: ValueKey('ri'),
            onRefresh: () async {
              Event changeEvent = CustomEvent('refresh', CustomEventInit(detail: ":"));
              changeEvent.currentTarget = this;
              changeEvent.target = this;
            child: children[0]
    opened by yuchonghua 12
  • 添加一套独立于引擎之上的 JS Engine API 设计

    添加一套独立于引擎之上的 JS Engine API 设计

    Kraken 未来会在 JS Engine 领域上进行更多的探索,包括尝试不同的 JS Engine,使用一些 Private API 等,但是这些工作又会对上层的 bridge 功能实现带来很多 Break Changes,因此需要设计并实现一层独立于引擎之外的抽象设计。

    Node.js 的 (Node-API)是个很好的参考


    1. 使用模版及内联函数去降低函数调用开销
    2. 禁用 copy 语义,借鉴 rapidJSON 的 move 语义
    3. 优先将 JS 对象分配到栈上,同时也支持分配在堆上。
    4. 支持 JS 类,函数的创建,并支持实现 JS 原型继承的 API
    enhancement tsc 
    opened by andycall 12
  • flutter端运行报Unhandled Exception: Invalid argument(s): Failed to lookup symbol (dlsym(0x8609000, initJSPagePool): symbol not found)

    flutter端运行报Unhandled Exception: Invalid argument(s): Failed to lookup symbol (dlsym(0x8609000, initJSPagePool): symbol not found)

    使用的 Kraken 版本

    kraken: 0.10.1
    kraken_websocket: any

    重现步骤 | Steps To Reproduce


    VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: Invalid argument(s): Failed to lookup symbol (dlsym(0x8609000, initJSPagePool): symbol not found) #0 DynamicLibrary.lookup (dart:ffi-patch/ffi_dynamic_library_patch.dart:31:29) #1 _initJSPagePool package:kraken/…/bridge/to_native.dart:215 #2 _initJSPagePool (package:kraken/src/bridge/to_native.dart) package:kraken/…/bridge/to_native.dart:1 #3 initJSPagePool package:kraken/…/bridge/to_native.dart:219 #4 initBridge package:kraken/…/bridge/bridge.dart:49 #5 new KrakenViewController package:kraken/…/launcher/controller.dart:126 #6 new KrakenController package:kraken/…/launcher/controller.dart:894 #7 _KrakenRenderObjectWidget.createRenderObject package:kraken/…/widget/kraken.dart:918 #8 RenderObjectElement.mount package:flutter/…/widgets/framework.dart:5533 #9 SingleChildRenderObjectElement.mount package:flutter/…/widgets/framework.dart:6194 #10 _KrakenRenderObjectElement.mount package:kraken/…/widget/kraken.dart:991 #11 Element.inflateWidget package:flutter/…/widgets/framework.dart:3673 #12 Element.updateChild package:flutter/…/widgets/framework.dart:3425

    重现代码 | Code example: 下边是调用的代码 Kraken( bundle: KrakenBundle.fromUrl( 'http://kraken.oss-cn-hangzhou.aliyuncs.com/demo/guide-styles.js', ))

    opened by WK726 11
  • 编译总是失败


    使用的 Kraken 版本 | What version of kraken are you using


    Error [ERR_UNHANDLED_ERROR]: Unhandled error. ({ uid: 2, name: 'build-android-kraken-lib', branch: false, error: Error: Command failed: cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=/Users/chenjun/Library/Android/sdk/ndk/21.4.7075529/build/cmake/android.toolchain.cmake -DANDROID_NDK=/Users/chenjun/Library/Android/sdk/ndk/21.4.7075529 -DIS_ANDROID=TRUE -DANDROID_ABI="arm64-v8a"
    -DANDROID_PLATFORM="android-18" -DANDROID_STL=c++_shared -G "Unix Makefiles" -B /Users/chenjun/krakenSDK/kraken/bridge/cmake-build-android-arm64-v8a -S /Users/chenjun/krakenSDK/kraken/bridge at checkExecSyncError (node:child_process:826:11) at execSync (node:child_process:900:15) at /Users/chenjun/krakenSDK/kraken/scripts/tasks.js:661:5 at Array.forEach () at /Users/chenjun/krakenSDK/kraken/scripts/tasks.js:657:9 at taskWrapper (/Users/chenjun/krakenSDK/kraken/node_modules/undertaker/lib/set-task.js:13:15) at bound (node:domain:421:15) at runBound (node:domain:432:12) at asyncRunner (/Users/chenjun/krakenSDK/kraken/node_modules/async-done/index.js:55:18) at processTicksAndRejections (node:internal/process/task_queues:78:11) { status: 127, signal: null, output: [ null, null, null ], pid: 12245, stdout: null, stderr: null, domainThrown: true }, duration: [ 0, 14079750 ], time: 1642385834539 }) at new NodeError (node:internal/errors:371:5) at Gulp.emit (node:events:379:17) at Gulp.emit (node:domain:475:12) at Object.error (/Users/chenjun/krakenSDK/kraken/node_modules/undertaker/lib/helpers/createExtensions.js:61:10) at handler (/Users/chenjun/krakenSDK/kraken/node_modules/now-and-later/lib/mapSeries.js:47:14) at f (/Users/chenjun/krakenSDK/kraken/node_modules/once/once.js:25:25) at f (/Users/chenjun/krakenSDK/kraken/node_modules/once/once.js:25:25) at tryCatch (/Users/chenjun/krakenSDK/kraken/node_modules/async-done/index.js:24:15) at done (/Users/chenjun/krakenSDK/kraken/node_modules/async-done/index.js:40:12) at Domain.onError (/Users/chenjun/krakenSDK/kraken/node_modules/async-done/index.js:51:5) { code: 'ERR_UNHANDLED_ERROR', context: { uid: 2, name: 'build-android-kraken-lib', branch: false, error: Error: Command failed: cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=/Users/chenjun/Library/Android/sdk/ndk/21.4.7075529/build/cmake/android.toolchain.cmake -DANDROID_NDK=/Users/chenjun/Library/Android/sdk/ndk/21.4.7075529 -DIS_ANDROID=TRUE -DANDROID_ABI="arm64-v8a"
    -DANDROID_PLATFORM="android-18" -DANDROID_STL=c++_shared -G "Unix Makefiles" -B /Users/chenjun/krakenSDK/kraken/bridge/cmake-build-android-arm64-v8a -S /Users/chenjun/krakenSDK/kraken/bridge at checkExecSyncError (node:child_process:826:11) at execSync (node:child_process:900:15) at /Users/chenjun/krakenSDK/kraken/scripts/tasks.js:661:5 at Array.forEach () at /Users/chenjun/krakenSDK/kraken/scripts/tasks.js:657:9 at taskWrapper (/Users/chenjun/krakenSDK/kraken/node_modules/undertaker/lib/set-task.js:13:15) at bound (node:domain:421:15) at runBound (node:domain:432:12) at asyncRunner (/Users/chenjun/krakenSDK/kraken/node_modules/async-done/index.js:55:18) at processTicksAndRejections (node:internal/process/task_queues:78:11) { status: 127, signal: null, output: [ null, null, null ], pid: 12245, stdout: null, stderr: null, domainThrown: true }, duration: [ 0, 14079750 ], time: 1642385834539 } }

    android SDK 路径没有问题。设备是 mac M1 芯片。

    opened by yoyo89757001 11
  • 启动页面时的参数传递


    使用场景 | Use case




    提案 | Proposal

    请求支持。 例如

    kraken.loadPath(xxx, param)
    kraken.loadContent(xxx, param)
    opened by cnryb 11
  • feat: define custom element with flutter widget

    feat: define custom element with flutter widget


      Kraken.defineCustomElement('flutter-text', (Map<String, dynamic> properties) {
        return Text(properties['value'] ?? '', textDirection: TextDirection.ltr, style: TextStyle(color: Color.fromARGB(255, 100, 100, 100)));
    <flutter-text value="Hello" />
    opened by yuanyan 11
  • sliver里面包不同类型的item运行有问题


    使用的 Kraken 版本 | What version of kraken are you using

    sliver里面包不同类型的item, 滚动 、增加新元素时候报错

    重现步骤 | Steps To Reproduce

    重现代码 | Code example:

    预期结果 | Expected results:

    实际结果 | Actual results:

    opened by zjt123 1
  • window下使用gitbash按照文档构建不了android


    使用的 Kraken 版本 | What version of kraken are you using

    Kraken 0.10.0

    重现步骤 | Steps To Reproduce

    运行 [email protected] MINGW64 /d/fulldata/kraken-0.10.0-flutter-2.2.x $ npm run build:bridge:android

    CMake Error: The source directory "/" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI. D:\fulldata\kraken-0.10.0-flutter-2.2.x\node_modules\async-done\index.js:18 throw err; ^

    Error [ERR_UNHANDLED_ERROR]: Unhandled error. ({ uid: 2, name: 'build-android-kraken-lib', branch: false, error: Error: Command failed: cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=D:\java\androidsdk\ndk\21.4.7075529\build\cmake\android.toolchain.cmake -DANDROID_NDK=D:\java\androidsdk\ndk\21.4.7075529 -D

    opened by Alembertcn 0
  • 官方文档Kraken Playground 安装二维码失效

    官方文档Kraken Playground 安装二维码失效

    使用的 Kraken 版本 | What version of kraken are you using

    重现步骤 | Steps To Reproduce

    访问 https://openkraken.com/guide 安卓机任意浏览器扫描下方二维码 image

    重现代码 | Code example: none

    预期结果 | Expected results: 安装此应用

    实际结果 | Actual results: image

    opened by melodyWxy 0
  • addEventListener中返回的Event需要添加PointerDeviceKind属性来兼容不同手势之间的差异


    使用场景 | Use case


    提案 | Proposal


    opened by xuzhongpeng 12
  • position:absoluted 元素获取offsetLeft、offsetTop失败为null

    position:absoluted 元素获取offsetLeft、offsetTop失败为null

    使用的 Kraken 版本 | What version of kraken are you using


    重现步骤 | Steps To Reproduce

    重现代码 | Code example:

           const BODY = document.getElementsByTagName('body')[0];
            function setElementStyle(dom, object) {
                if (object == null) return;
                for (let key in object) {
                    if (object.hasOwnProperty(key)) {
                        dom.style[key] = object[key];
            function createElementWithStyle(tag, style, child) {
                const el = document.createElement(tag);
                setElementStyle(el, style);
                if (Array.isArray(child)) {
                    child.forEach(c => el.appendChild(c));
                } else if (child) {
                return el;
            function createText(content) {
                return document.createTextNode(content);
            let target;
            let div;
            div = createElementWithStyle(
                'div', {
                    overflow: 'auto',
                    height: '100px',
                    width: '200px',
                    'background-image': 'linear-gradient(#e66465, #9198e5)',
                    (target = createElementWithStyle(
                        'div', {
                            position: 'absolute',
                        [createText(`Modified text`)]
                    createElementWithStyle('div', {
                        width: '400px',
                        height: '10px',
            div.scrollLeft = 1000;

    预期结果 | Expected results:


    实际结果 | Actual results: 打印为null 同时 assert断言异常

    Matrix4 getLayoutTransformTo(RenderObject current, RenderObject ancestor, { bool excludeScrollOffset = false }) {
      final List<RenderObject> renderers = <RenderObject>[];
      for (RenderObject renderer = current; renderer != ancestor; renderer = renderer.parent! as RenderObject) {
        assert(renderer.parent != null); -->报错
      final Matrix4 transform = Matrix4.identity();
      for (int index = renderers.length - 1; index > 0; index -= 1) {
        RenderObject parentRenderer = renderers[index];
        RenderObject childRenderer = renderers[index - 1];
        // Apply the layout transform for renderBoxModel and fallback to paint transform for other renderObject type.
        if (parentRenderer is RenderBoxModel) {
          parentRenderer.applyLayoutTransform(childRenderer, transform, excludeScrollOffset);
        } else {
          parentRenderer.applyPaintTransform(childRenderer, transform);
      return transform;
    opened by pba-cra 0
  • 0.11.0(Apr 7, 2022)

    Breaking Changes

    • Update flutter requirement to 2.8.x https://github.com/openkraken/kraken/pull/1298

    Bug Fixed

    • Fix Kraken widget instance memory leak from window. https://github.com/openkraken/kraken/pull/1297
    Source code(tar.gz)
    Source code(zip)
  • 0.10.4(Apr 2, 2022)


    • Support window.innerWidth & window.innerHeight, and screen.availWidth & screen.availHeight. https://github.com/openkraken/kraken/pull/1256

    Bug Fixed

    • Fix error when using KrakenBundle.fromByteCode(). https://github.com/openkraken/kraken/pull/1245
    • Fix DataBundle string with non latin. https://github.com/openkraken/kraken/pull/1263

    ** Others **

    • Change copyright to The Kraken authors.
    Source code(tar.gz)
    Source code(zip)
  • 0.10.3(Mar 25, 2022)

    Bug Fixed

    • Fix Http cache file io error https://github.com/openkraken/kraken/pull/1202.
    • Fix align-self not work for positioned flex item. https://github.com/openkraken/kraken/pull/1207
    • Fix text-align should only work for text node for flex item. https://github.com/openkraken/kraken/pull/1208
    • Fix crash with scrolling. https://github.com/openkraken/kraken/pull/1209
    • Fix children of inline-block element not stretch. https://github.com/openkraken/kraken/pull/1214
    • Fix style set to empty string. https://github.com/openkraken/kraken/pull/1220
    • Fix flex item not stretch when child size changed. https://github.com/openkraken/kraken/pull/1229
    • Fix html parse error. https://github.com/openkraken/kraken/pull/1231
    • Fix asset protocol error. https://github.com/openkraken/kraken/pull/1232
    • Fix file protocol. https://github.com/openkraken/kraken/pull/1234
    Source code(tar.gz)
    Source code(zip)
  • 0.10.2(Mar 2, 2022)

    Bug Fixed

    • Fix report error cause stack overflow. https://github.com/openkraken/kraken/pull/1164
    • Fix object-fit not work due to image resize optimization. https://github.com/openkraken/kraken/pull/1165
    • Fix crash when reload. https://github.com/openkraken/kraken/pull/1167
    • Fix referer and origin. https://github.com/openkraken/kraken/pull/1170
    • Fix large file content may fail. https://github.com/openkraken/kraken/pull/1176
    • Fix native event memory align on 32 bit devices. https://github.com/openkraken/kraken/pull/1182
    • Fix image load error cause crash. https://github.com/openkraken/kraken/pull/1187
    Source code(tar.gz)
    Source code(zip)
  • 0.10.1(Feb 10, 2022)

    Bug Fixed

    • Fix custom flutter widget when kraken disposed. https://github.com/openkraken/kraken/pull/1142
    • Fix scrollable size should include padding. https://github.com/openkraken/kraken/pull/1135
    • Fix http request doesn't support multiple headers. https://github.com/openkraken/kraken/pull/1148
    • Fix document.location is undefined. https://github.com/openkraken/kraken/pull/1150
    • Fix WebSocket dev server error. https://github.com/openkraken/kraken/pull/1131
    • Fix image intrinsic size not correct which include padding and border. https://github.com/openkraken/kraken/pull/1127
    • Fix unhandledPromiseRejection event. https://github.com/openkraken/kraken/pull/1137
    • Fix fetch API request options. https://github.com/openkraken/kraken/pull/1139
    • Fix HttpCache error on linux platform. https://github.com/openkraken/kraken/pull/1113
    • Fix exception leak cause globalObject not fully freed. https://github.com/openkraken/kraken/pull/1117
    • Fix border radius of one percentage value. https://github.com/openkraken/kraken/pull/1121
    • Fix empty screen when page reload. https://github.com/openkraken/kraken/pull/1109
    • Fix linux dynamic rpath. https://github.com/openkraken/kraken/pull/1111
    • Fix error when set empty string to textOverflow. https://github.com/openkraken/kraken/pull/1095
    • Fix input delete key binding. https://github.com/openkraken/kraken/pull/1096
    • Fix load kraken bundle from env and native side. https://github.com/openkraken/kraken/pull/1098
    • Fix crash when reload page. https://github.com/openkraken/kraken/pull/1102
    • Fix stack overflow when working with multiple thread. https://github.com/openkraken/kraken/pull/1086
    • Fix sepeated setting of style is invalid. https://github.com/openkraken/kraken/pull/1088
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Jan 12, 2022)

    Break Changes

    • Kraken.loadURL, Kraken.loadContent, Kraken.loadByteCode are deprecated. Please use KrakenBundle.fromUrl, KrakenBundle.fromContent instead.
    • Flutter Widget API had been upgraded, please refer to https://openkraken.com/guide/advanced/widget-custom-element for more info.

    Big News

    • Support using Flutter Widget as HTML Custom Element which can greatly extend the capability of Web, refer to this doc for detailed use.
    • Performance optimized:
      • Page load time reduced 10%.
      • Scrolling FPS incrased 40%.
    • Linux platform supported.
    • Support Flutter 2.5.3.


    • Support defining Flutter widget as HTML custom element. https://github.com/openkraken/kraken/pull/904
    • Support style element and className attribute. https://github.com/openkraken/kraken/pull/656
    • Support link element and CSS variables. https://github.com/openkraken/kraken/pull/961
    • Support assets: protocol to unify the means to load local assets for different platforms. https://github.com/openkraken/kraken/pull/866
    • Support pause kraken pages when navigator changes. https://github.com/openkraken/kraken/pull/877
    • Support linux platform. https://github.com/openkraken/kraken/pull/887
    • Support customize kraken dynamic library path. https://github.com/openkraken/kraken/pull/1048

    Bug Fixed

    • Fix width error in case of min width width padding. https://github.com/openkraken/kraken/pull/843
    • Fix percentage with decimal point. https://github.com/openkraken/kraken/pull/845
    • Fix iOS App store certificate validation. https://github.com/openkraken/kraken/pull/847
    • Fix text height with text-overflow ellipsis. https://github.com/openkraken/kraken/pull/848
    • Fix clone documentFragment node support. https://github.com/openkraken/kraken/pull/851
    • Fix layout wrapping space. https://github.com/openkraken/kraken/pull/856
    • Fix position placeholder offset not including margin. https://github.com/openkraken/kraken/pull/857
    • Fix position sticky fail with overflow hidden. https://github.com/openkraken/kraken/pull/858
    • Fix HTMLAnchorElement lack full property support. https://github.com/openkraken/kraken/pull/864
    • Fix HTMLBRElement size not correct. https://github.com/openkraken/kraken/pull/867
    • Fix crash due to disposeEventTarget sync implementation. https://github.com/openkraken/kraken/pull/873
    • Fix image performance by add image cache. https://github.com/openkraken/kraken/pull/879
    • Fix empty text node renderObject. https://github.com/openkraken/kraken/pull/881
    • Fix previous blank of text node. https://github.com/openkraken/kraken/pull/886
    • Fix only trigger gc once when disposed. https://github.com/openkraken/kraken/pull/892
    • Fix crash due to weak reference between style and element. https://github.com/openkraken/kraken/pull/895
    • Fix layout performance by caching constraints. https://github.com/openkraken/kraken/pull/897
    • Fix sliver child is text without renderer should not accept. https://github.com/openkraken/kraken/pull/898
    • Fix renderObject and element memory leaks. https://github.com/openkraken/kraken/pull/900
    • Fix hit test children not works in sliver list. https://github.com/openkraken/kraken/pull/905
    • Fix intersection observer performance. https://github.com/openkraken/kraken/pull/908
    • Fix crash when reportError. https://github.com/openkraken/kraken/pull/913
    • Fix style fail after resize. https://github.com/openkraken/kraken/pull/916
    • Fix some sliver usage cases. https://github.com/openkraken/kraken/pull/922
    • Fix free event targets properties by gc mark. https://github.com/openkraken/kraken/pull/929
    • Fix insert before fixed element. https://github.com/openkraken/kraken/pull/930
    • Fix document.createElement in multiple context. https://github.com/openkraken/kraken/pull/935
    • Fix error due to lacking negative length validation. https://github.com/openkraken/kraken/pull/938
    • Fix bridge memory leaks. https://github.com/openkraken/kraken/pull/939
    • Fix nested fixed element paint order. https://github.com/openkraken/kraken/pull/947
    • Fix image natural size with same url. https://github.com/openkraken/kraken/pull/948
    • Fix createElement and createTextNode performance. https://github.com/openkraken/kraken/pull/952
    • Fix text not shrink in flex container. https://github.com/openkraken/kraken/pull/980
    • Fix text rendering performance. https://github.com/openkraken/kraken/pull/990
    • Fix flex stretch height when positioned child exists. https://github.com/openkraken/kraken/pull/1004
    • Fix transform should avoid trigger layout. https://github.com/openkraken/kraken/pull/1008
    • Fix ui command buffer instance leak. https://github.com/openkraken/kraken/pull/1014
    • Fix element attributes incorrect reference count. https://github.com/openkraken/kraken/pull/1020
    • Fix relayout boundary of flex item. https://github.com/openkraken/kraken/pull/1023
    • Fix element insert order of insertBefore. https://github.com/openkraken/kraken/pull/1024
    • Fix event target string property leak. https://github.com/openkraken/kraken/pull/1028
    • Fix reposition children logic lacking when position changed. https://github.com/openkraken/kraken/pull/1033
    • Fix this_val on global func call. https://github.com/openkraken/kraken/pull/1036
    • Fix event type atom id changed when free. https://github.com/openkraken/kraken/pull/1040
    • Fix offsetTop and offsetLeft should relative to body element if no positioned parent found. https://github.com/openkraken/kraken/pull/1041
    • Fix percentage of positioned element. https://github.com/openkraken/kraken/pull/1044
    • Fix input should blur when click other target. https://github.com/openkraken/kraken/pull/1052
    • Fix positioned element logical width/height calculation. https://github.com/openkraken/kraken/pull/1053
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Nov 4, 2021)

    Big News

    The QuickJS engine is now landed on kraken and we decided to replace our original JavaScriptCore implementation, which can provide low latency page init time and memory usage.

    Break Changes

    • Kraken.defineCustomElement API had been redesigned, now you can define both element and widget with the same API. https://github.com/openkraken/kraken/pull/792


    • Migrate JavaScript Engine from JavaScriptCore to QuickJS.
    • Support query attributes on element from document.querySelector and document.querySelectorAll. https://github.com/openkraken/kraken/pull/747
    • Auto detect physical device type and use different scroll animation behavior. BouncingScrollPhysics on iOS and ClampingScrollPhysics on Android. https://github.com/openkraken/kraken/pull/750
    • Add empty SVGElement tags but not svg rendering, to let vue app works. https://github.com/openkraken/kraken/pull/757
    • Add Apple silicon support. https://github.com/openkraken/kraken/pull/767
    • Add Webpack HMR support. https://github.com/openkraken/kraken/pull/785

    Bug Fixed

    • Fix async error when update src property on image element. https://github.com/openkraken/kraken/pull/759
    • Fix http-cache not updating when last-modified headers on HTTP request changed. https://github.com/openkraken/kraken/pull/784
    • Fix HTML tags can not use custom tags. https://github.com/openkraken/kraken/pull/790
    • Fix rendering error when append child on image elemnet. https://github.com/openkraken/kraken/pull/791
    • Fix translate negative percentage not working. https://github.com/openkraken/kraken/pull/832
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.9.0.zip(59.21 MB)
    ios.sdk.0.9.0.zip(51.26 MB)
  • 0.8.4(Oct 18, 2021)

    Break Changes

    • Navigator.vibrate API no long support as default. https://github.com/openkraken/kraken/pull/655
    • Rename kraken.setMethodCallHandler to kraken.addMethodCallHandler. https://github.com/openkraken/kraken/pull/658
    • gestureClient API migrated to GestureListener API. https://github.com/openkraken/kraken/pull/716


    • Support documentFragment. https://github.com/openkraken/kraken/pull/641
    • Add default 1em margin for <p> https://github.com/openkraken/kraken/pull/648
    • Support document.querySelector and document.querySelectorAll. https://github.com/openkraken/kraken/pull/672
    • Improve canvas performance when drawing pictures. https://github.com/openkraken/kraken/pull/679
    • Use xcframework for iOS release. https://github.com/openkraken/kraken/pull/698
    • Support vue-router with History API. https://github.com/openkraken/kraken/pull/711
    • Support <template /> and element.innerHTML API. https://github.com/openkraken/kraken/pull/713
    • Support offline http cache. https://github.com/openkraken/kraken/pull/723

    Bug Fixed

    • Fix webpack hot reload. https://github.com/openkraken/kraken/issues/642
    • Fix hit test with detached child render object. https://github.com/openkraken/kraken/pull/651
    • Fix silver conflict with overflow-y. https://github.com/openkraken/kraken/pull/662
    • Fix child of flex item with flex-grow not stretch. https://github.com/openkraken/kraken/pull/665
    • Fix auto margin in flexbox. https://github.com/openkraken/kraken/pull/667
    • Fix positioned element size wrong when no width/height is set. https://github.com/openkraken/kraken/pull/671
    • Fix scroll not working when overflowY is set to auto/scroll and overflowX not set. https://github.com/openkraken/kraken/pull/681
    • Fix multi frame image can replay when loading from caches. https://github.com/openkraken/kraken/pull/685
    • Fix main axis auto size not including margin. https://github.com/openkraken/kraken/pull/702
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.8.4.zip(70.60 MB)
    ios.sdk.0.8.4.zip(51.08 MB)
  • 0.8.3+3(Aug 26, 2021)


    • Support window.onerror and global error event. https://github.com/openkraken/kraken/pull/601
    • Add HTML Head's tags, like <head>, <link>, <style>. https://github.com/openkraken/kraken/pull/603
    • Support customize User-Agent header. https://github.com/openkraken/kraken/pull/604
    • Remove androidx dependence. https://github.com/openkraken/kraken/pull/606
    • Add default margin for h1-h6 elements. https://github.com/openkraken/kraken/pull/607

    Bug Fixed

    • Fix ios build. https://github.com/openkraken/kraken/pull/629
    • Fix crash caused by context has been released. https://github.com/openkraken/kraken/pull/605
    • Fix window.open() not working when bundleURL not exist. https://github.com/openkraken/kraken/pull/612
    • Fix location.href is empty when set onLoadError handler. https://github.com/openkraken/kraken/pull/613
    • Fix http cache should not intercept multi times. https://github.com/openkraken/kraken/pull/619
    • Fix input value when set to null. https://github.com/openkraken/kraken/pull/623
    • Fix input change event not trigger when blur. https://github.com/openkraken/kraken/pull/626
    • Fix keyboard not shown when keyboard dismissed and input gets focused again. https://github.com/openkraken/kraken/pull/627
    • Fix missing HTTP headers with fetch and xhr request. https://github.com/openkraken/kraken/pull/633
    • Fix error when reading local path. https://github.com/openkraken/kraken/pull/635
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.8.3+3.zip(68.48 MB)
    ios.sdk.0.8.3+3.zip(74.75 MB)
  • 0.8.2(Aug 11, 2021)


    • Support percentage for translate3d translateX and translateY https://github.com/openkraken/kraken/pull/547
    • Add findProxyFromEnvironment methods in HttpOverrides. https://github.com/openkraken/kraken/pull/551/files
    • Treat empty scheme as https protocol. https://github.com/openkraken/kraken/pull/557/files
    • Support length/percentage value for background-size. https://github.com/openkraken/kraken/pull/568
    • Support dbclick event. https://github.com/openkraken/kraken/pull/573

    Bug Fixed

    • Fix crash when HMR enabled. https://github.com/openkraken/kraken/pull/507
    • Fix parent box height can't auto caculate by scrollable container children. https://github.com/openkraken/kraken/pull/517
    • Fix linear-gradient parse failed when have more than one bracket. https://github.com/openkraken/kraken/pull/518
    • Fix image flex items have no size. https://github.com/openkraken/kraken/pull/520
    • Fix transition throw error. https://github.com/openkraken/kraken/pull/542
    • Fix empty screen in launcher mode. https://github.com/openkraken/kraken/pull/544
    • Fix element instanceof HTMLElement return false https://github.com/openkraken/kraken/pull/546
    • Fix transition animation execution order. https://github.com/openkraken/kraken/pull/559
    • Fix transition of backgroundColor with no default value not working. https://github.com/openkraken/kraken/pull/562
    • Fix opacity 0 not working. https://github.com/openkraken/kraken/pull/565
    • Fix hittest with z-index order. https://github.com/openkraken/kraken/pull/572
    • Fix click event not triggerd on input element. https://github.com/openkraken/kraken/pull/575
    • Fix ios bridge build. https://github.com/openkraken/kraken/pull/576
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.8.2.zip(68.84 MB)
    ios.sdk.0.8.2.zip(75.40 MB)
  • 0.8.1(Jul 16, 2021)


    • input element not support maxlength property https://github.com/openkraken/kraken/pull/450
    • support em and rem CSS length https://github.com/openkraken/kraken/pull/475

    Bug Fixed

    • remove same origin policy for xhr https://github.com/openkraken/kraken/pull/463
    • fix error when scroll to top in silver box https://github.com/openkraken/kraken/issues/468
    • fix js contextId allocate order error https://github.com/openkraken/kraken/pull/474 https://github.com/openkraken/kraken/pull/477
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.8.1.zip(46.65 MB)
    ios.sdk.0.8.1.zip(72.33 MB)
  • 0.8.0(Jun 18, 2021)

    Big News

    • Kraken v0.8.0 now support flutter 2.2.0


    • Support dart null safety and all dependencies had upgraded.
    • Lock Android NDK version to 21.4.7075529. https://github.com/openkraken/kraken/pull/394
    • Add length value support in background-position https://github.com/openkraken/kraken/pull/421

    Bug Fixed

    • Fix DOM events can't bind with addEventListener https://github.com/openkraken/kraken/pull/436
    • Fix error when setting element's eventHandler property to null https://github.com/openkraken/kraken/pull/426
    • Fix crash when trigger touchcancel events https://github.com/openkraken/kraken/pull/424
    • Fix error when reload kraken pages. https://github.com/openkraken/kraken/pull/419
    • Fix element's doesn't show up when setting display: none to display: block. https://github.com/openkraken/kraken/pull/405
    • Fix empty blank screen in Android / iOS physical devices launching with SDK mode. https://github.com/openkraken/kraken/pull/399
    • Fix WebView (created by iframe element) can't scroll. https://github.com/openkraken/kraken/pull/398
    • Fix percentage length doesn't work in flex layout box. https://github.com/openkraken/kraken/pull/397
    • Fix input element's height can't set with CSS height property. https://github.com/openkraken/kraken/pull/395
    • Fix crash when set element.style multiple times in a short of times. https://github.com/openkraken/kraken/pull/391
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.8.0+2.zip(46.57 MB)
    ios.sdk.0.8.0+2.zip(72.23 MB)
  • 0.7.3+2(Jun 3, 2021)

  • 0.7.3(May 24, 2021)


    • Feat: add network proxy interface in dart widget API https://github.com/openkraken/kraken/pull/292
    • Feat: add AsyncStorage.length method https://github.com/openkraken/kraken/pull/298
    • Feat: improve bridge call performance. https://github.com/openkraken/kraken/pull/328
    • feat: add SVGElement https://github.com/openkraken/kraken/pull/338

    Bug Fixed

    • Fix input setting value does not take effect before adding the dom tree. https://github.com/openkraken/kraken/pull/297/files
    • Fix: remove unnecessary flushUICommand https://github.com/openkraken/kraken/pull/318
    • Fix: img lazy loading not work https://github.com/openkraken/kraken/pull/319
    • Fix: touchend crash caused by bridge https://github.com/openkraken/kraken/pull/320
    • Fix: fix target of the event agent does not point to the clicked Node https://github.com/openkraken/kraken/pull/322


    • refactor: position sticky https://github.com/openkraken/kraken/pull/324
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.7.3+1.zip(46.02 MB)
    ios.sdk.0.7.3+1.zip(58.03 MB)
  • 0.7.2+4(May 8, 2021)

    Bug Fixed

    feat: support mouse event https://github.com/openkraken/kraken/pull/220 fix: event bubble not works properly https://github.com/openkraken/kraken/pull/264 fix: return value of Event.stopPropagation() should be undefined https://github.com/openkraken/kraken/pull/284 fix/text node value https://github.com/openkraken/kraken/pull/279 fix: fix kraken.methodChannel.setMethodCallHandler did't get called before kraken.invokeMethod called https://github.com/openkraken/kraken/pull/289

    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.7.2+4.zip(45.94 MB)
    ios.sdk.0.7.2+4.zip(57.75 MB)
  • 0.7.2(Apr 30, 2021)

    Break Changes

    fix: change default font size from 14px to 16px https://github.com/openkraken/kraken/pull/145

    Bug Fixed fix: modify customevent to event https://github.com/openkraken/kraken/pull/138 fix: layout performance https://github.com/openkraken/kraken/pull/155 fix: fix elements created by new operator didn't have ownerDocument. https://github.com/openkraken/kraken/pull/178 fix: flex-basis rule https://github.com/openkraken/kraken/pull/176 fix: transform functions split error when more than one. https://github.com/openkraken/kraken/pull/196 fix: Fix the crash caused by navigation in dart https://github.com/openkraken/kraken/pull/249 fix update device_info 1.0.0 https://github.com/openkraken/kraken/pull/262

    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.7.2.zip(45.31 MB)
    ios.sdk.0.7.2.zip(57.11 MB)
  • 0.7.1(Apr 9, 2021)

    Bug Fixed

    • fix: resize img wainting for img layouted#86
    • fix: fix: encoding snapshots filename to compact with windows. #69
    • fix: fix insertBefore crash when passing none node object. #70
    • fix: windows platform support build target to Android. #88
    • fix: element size not change when widget size change #90
    • fix: fix navigation failed of anchor element. #95
    • fix: 'kraken.methodChannel.setMethodCallHandler' override previous handler #96
    • fix: repaintBoundary convert logic #111
    • fix: element append order wrong with comment node exists #116
    • fix: fix access Node.previousSibling crashed when target node at top of childNodes. #126
    • fix: fix access Element.children crashed when contains non-element nodes in childNodes. #126
    • fix: percentage resolve fail with multiple sibling exists #144
    • fix: default unknow element display change to inline #133


    • feat: support Node.ownerDocument #107
    • feat: support vmin and vmax #109
    • feat: support css none value #129
    • feat: suport Event.initEvent() and Document.createEvent() #130
    • feat: Add block element: h1-h6 main header aside. #133
    • feat: Add inline element: small i code samp... #133
    Source code(tar.gz)
    Source code(zip)
    com.openkraken.kraken.sdk.0.7.1.zip(45.26 MB)
    ios.sdk.0.7.1.zip(36.68 MB)
  • 0.7.0(Mar 19, 2021)

A high-performance, web standards-compliant rendering engine based on Flutter.
Log snapshot management solution (iOS/Android/Web/Server) built with Flutter/Dart using Bloc pattern and Firebase Firestore backend.

Log snapshot management solution (iOS/Android/Web/Server) built with Flutter/Dart using Bloc pattern and Firebase Firestore backend.

Alexey Perov 4 Dec 22, 2021
The Dart Time Machine is a date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.

The Dart Time Machine is a date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.

null 2 Oct 8, 2021
Easily swap Flutter web renderers at runtime

renderer_switcher Swap Web Renderers in a Flutter Web app at runtime. Installation To use this plugin, add renderer_switcher as a dependency in your p

Wilson Wilson 11 Mar 28, 2022
A Dart package to web scraping data from websites easily and faster using less code lines.

Chaleno A flutter package to webscraping data from websites This package contains a set of high-level functions that make it easy to webscrap websites

António Nicolau 24 Aug 9, 2022
The package for building grpc channel depending on is it web or not

The package for building grpc channel depending on is it web or not Features The util builds gRPC channel for flutter web or other platforms condition

Premiumapp 1 Nov 8, 2021
A to do list app for android, apple, and the web.

noted A new Flutter project. Getting Started FlutterFlow projects are built to run on the Flutter stable release. IMPORTANT: For projects with Firesto

null 0 Dec 31, 2021
This is a simple class to package up and send requests to the Kroki.io web service.

Kroki.dart This is a simple class to package up and send requests to the Kroki.io web service. A live editor to editing diagrams that Kroki supports c

Tim Maffett 1 Jun 8, 2022
The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.

The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs. Inspired by SwiftGen. Motivation Using asset path str

FlutterGen 1.1k Sep 23, 2022
A few handy Flutter tools, dead simple `UriRouter` for `Uri`-based navigator or `BuildTracker` to track widget rebuilds and what caused them to rebuild.

noob A few handy tools for Flutter apps. UriRouter Hooks Providers PointerIndicator BuildTracker PeriodicListenable UriRouter Dead simple Uri-based pa

null 6 Jan 18, 2022
Future based HTTP client for the Dart and Flutter

Uno Future based HTTP client for the Dart and Flutter. Uno, inspired by Axios, bringing a simple and robust experience to the crossplatform apps in Fl

Flutterando 46 Aug 31, 2022
Swagger/OpenAPI code generator based on Chopper and JsonAnnotation for Flutter

Code partially generated with chopper ?? Build dart types from Swagger/OpenAPI schemas SwaggerDartCodeGenerator is a code generator that looks for *.s

null 170 Sep 19, 2022
Dart phone number parser, based on libphonenumber and PhoneNumberKit.

Dart library for parsing phone numbers. Inspired by Google's libphonenumber and PhoneNumberKit for ios.

cedvdb 34 Sep 20, 2022
Dart phone number parser, based on libphonenumber and PhoneNumberKit.

Phone Numbers Parser Dart library for parsing phone numbers. Inspired by Google's libphonenumber and PhoneNumberKit for ios. The advantage of this lib

cedvdb 32 Aug 12, 2022
A code generation tool based on Database. :construction: developing :construction:

dbgen A code generation tool based on Database. Getting Started This project is a starting point for a Flutter application. A few resources to get you

尽管如此世界依然美丽 12 Jun 8, 2022
A mobile map based application to help people everywhere around the world get help

Wonder This is a mobile application made by flutter. The application is called "Wonder" because it will help people everywhere around the world to get

Sara Nersisian 1 Dec 2, 2021
AFINN-based sentiment analysis for dart

Dart Sentiment is a dart module that uses the AFINN-165 wordlist and Emoji Sentiment Ranking to perform sentiment analysis on arbitrary blocks of input text.

Akash Lilhare 6 Sep 21, 2022
null 7 Apr 26, 2022
Flutter Version Management: A simple CLI to manage Flutter SDK versions.

fvm Flutter Version Management: A simple cli to manage Flutter SDK versions. FVM helps with the need for a consistent app builds by allowing to refere

Leo Farias 3k Sep 25, 2022