🦁 <1kb compiler-augmented virtual DOM. It's fast!

Overview

Million Logo

English | 中文

<1kb compiler-augmented virtual DOM. It's fast!

Current Virtual DOM implementations are inadequate—Ranging from overcomplicated to abandoned, most are unusable without sacrificing raw performance and size. Million aims to fix this, providing a library-agnostic Virtual DOM to serve as the core for Javascript libraries that focus on precompilation and static analysis.

CI Code Size NPM Version Code Coverage

→ Check out the Million documentation

Why Million?

  • 🦁 Built for libraries that compile
  • 📦 Lightweight bundle size (<1kb brotli+min)
  • Fast runtime operations
  • 🛠️ Composable using drivers, sensible by default

Installing Million

Million doesn't require build tools by default, but it is highly recommended you use NPM to install.

npm install million

Quick Start

Below is an extremely simple implementation of a Counter page using Million.

import { m, createElement, patch } from 'million';

const view = (seconds) => m('p', undefined, [`Time elapsed: ${seconds}`]);

const el = createElement(view(0));

let seconds = 0;

setInterval(() => {
  patch(el, view(seconds));
  seconds++;
}, 1000);

document.body.appendChild(el);

→ Check out more examples

Sponsors

Vercel

Want your logo here? → Sponsor Million

Resources & Contributing Back

Looking for the docs? Check the documentation out.

Have a question about Million? Post it on the GitHub Discussions and ask the community for help.

Find a bug? Head over to our issue tracker and we'll do our best to help. We love pull requests, too!

We expect all Million contributors to abide by the terms of our Code of Conduct.

→ Start contributing on GitHub (pnpm welcome)

Acknowledgments

Million takes heavy inspiration from snabbdom, ivi, mikado, and more. Feel free to check them out if you interested in an alternative library to use.

Why is it called "Million"? The name originated with the goal of being able to handle 1M+ ops/sec for benchmarks.

License

Million is MIT-licensed open-source software and research by Aiden Bai.

View count

Comments
  • feat: something like Svelte actions

    feat: something like Svelte actions

    Is your feature request related to a problem? Please describe. Not applicable.

    Describe the solution you'd like I'd like to use something like Svelte actions in Million, e.g.:

    // This is an action
    const tooltip = (node, { text }) => {
      // Mount the tooltip (i.e. create)
    
      return {
        update: ({ text }) => {
          // Update the tooltip with its new text
        },
        destroy: () => {
          // Unmount the tooltip
        },
      }
    }
    
    // This is the action being used
    html`<button ${tooltip({ text: 'Some explanation' })}>Do something</button>`
    

    Describe alternatives you've considered Maybe it can be implemented with a driver? Not sure yet, I discovered Million less than 24h ago.

    Additional context https://svelte.dev/docs#template-syntax-element-directives-use-action

    enhancement 
    opened by gustavopch 13
  • VFlag Import Undefined

    VFlag Import Undefined

    Describe the bug Importing VFlags leads to import errors with Webpack

    Expected behavior Just being able to import VFlags from Millionjs to use with m function

    Screenshots image

    Desktop (please complete the following information):

    • OS: Manjaro
    • Browser: Firefox
    opened by joselevelsup 11
  • bug: Documentation search bar doesn't work

    bug: Documentation search bar doesn't work

    Describe the bug Trying to search something in the million documentation causes an endless spinner

    To Reproduce Steps to reproduce the behavior:

    1. Go to 'https://millionjs.org/'
    2. Click on the search bar
    3. Type in the search bar, notice the endless spinner
    4. console has this error: "Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0"
    5. Hit enter key, still has endless spinner
    6. an additional console error bubbles up: "Uncaught TypeError: Cannot read properties of undefined (reading 'route')"

    Expected behavior I'd expect the search function to work

    Screenshots Screen Shot 2022-08-02 at 4 39 02 PM

    Device (please complete the following information):

    • OS: iOS (Big Sur v11.6)
    • Browser: Chrome v103
    • Version: latest million release
    bug 
    opened by ryanjmack 8
  • Bug: createElement doesn't support Fragment as root VNode.

    Bug: createElement doesn't support Fragment as root VNode.

    Describe the bug

    The return type of Fragment is VNode[].

    https://github.com/aidenybai/million/blob/7ccc5f021df8ea384d5e03da165633238b52529f/src/jsx.ts#L110

    However, createElement doesn't support passed in an array of VNode:

    https://github.com/aidenybai/million/blob/1ea5443220a9d7caf1512862a3b24e968548e638/src/createElement.ts#L10-L13

    To Reproduce

    import { createElement } from 'million';
    
    function Example() {
      return (
        <>
          {
            ['A', 'B', 'C'].map(i => (<div>{i}</div>))
          }
        </>
      );
    }
    
    document.body.appendChild(createElement(Example));
    

    Expected behavior

    Render <div>A</div><div>B</div><div>C</div> instead of <undefined></undefined>.

    Screenshots

    No response

    Operating System

    Not applicable

    Browser

    Not applicable

    Additional context

    No response

    bug help wanted 
    opened by SukkaW 8
  • Bug: why does using keys produce seemingly random duplicates?

    Bug: why does using keys produce seemingly random duplicates?

    Describe the bug

    The deeper you go, the more likely you are to hit this issue. For instance, a top-level wrapper with ONLY_KEYED_CHILDREN and unique keys appears to work fine. But nest it within another element as a wrapper, and duplicates start appearing after adding maybe 3 items.

    Reproducing this in a basic page like this was a nightmare. 🥵 I still haven't actually reproduced the issue I was originally troubleshooting, which was adding 6-8 duplicate items when inserting one (deleting it from the context/state deleted all 6-8 dupes of the row).

    Here's an example:

    <!DOCTYPE html>
    <body>
    <div id="app"></div>
    
    <script type="module">
      import {
        m,
        patch,
        VFlags
        /* or any other exports you want to access */
      } from 'https://unpkg.com/million?module';
    
      const format = new Intl.DateTimeFormat('en-us', { dateStyle: 'short', timeStyle: 'medium' });
      let dates = [];
    
      function render() {
        dates.push(new Date());
    
        let vdom = m(
          'div',
          { id: "app" },
          [
            m('div', undefined, dates.map(dt => m('div', { key: dt.getTime().toString() }, [format.format(dt)])), VFlags.ONLY_KEYED_CHILDREN)
          ]
        );
    
        console.log('render', vdom);
    
        patch(document.getElementById('app'), vdom);
      }
    
      setInterval(render, 1000);
      render();
    </script>
    </body>
    

    To "fix" this behavior, just remove the VFlags.ONLY_KEYED_CHILDREN and the default diffing works fine. Even more strange: remove the .wrapper element and make the date entries direct children of the #app element and it works again.

    To Reproduce

    This behavior appears to be part of the diffing when using keys with ONLY_KEYED_CHILDREN. What confuses me is why it only happens after it's nested below the top-level. I've spent time trying to review the children driver for diffing, and haven't noticed anything obvious.

    To reproduce this:

    • Nest the children one level deeper than the top, or more.
    • Add keys on each element.
    • Add VFlags.ONLY_KEYED_CHILDREN on the parent/wrapper node.

    Expected behavior

    Yeah, only 1 item should be added per keyed item.

    Screenshots

    Screen Shot 2021-10-22 at 12 10 11 PM

    Operating System

    MacOS Catalina 10.15.7 (19H1419)

    Browser

    Chrome 94; FireFox 93

    Additional context

    No response

    bug 
    opened by rk 8
  • empty export

    empty export

    I create codesandbox with million and it fires with errors million.m is not a function, looks like problem in browser bundle

    link: https://codesandbox.io/s/nervous-wright-k98xz?file=/src/index.js

    opened by jeetiss 8
  • feat: improve `pnpm welcome`

    feat: improve `pnpm welcome`

    Is your feature request related to a problem? Please describe. Currently, the pnpm welcome command is lackluster -- it just shows you how to install packages (ref).

    Describe the solution you'd like It would be nice to have more setup steps (how to use dev environment, filesystem walkthrough, script walkthrough, etc.). Feel free to ask for feedback on what to add

    enhancement good first issue 
    opened by aidenybai 7
  • feat: take million router implementation to next level

    feat: take million router implementation to next level

    Is your feature request related to a problem? Please describe. This feature is to take million/router to next level

    Describe the solution you'd like My presented solution is to make url prefetching and diffing faster by doing it ahead of time and parallel in a web worker. Users can present links with a dummy attribute to recognise the priority of resource. All the links in the current page view will be collected and sent off to the web worker where it will request and cache resources based on priority. On caching, high priority resources can be made into a vdom representation in the worker and sent back to the main thread where it will use the watchMedia function to render it in a template tag. When the user clicks that url, simply the template tag can be brought in. This will make mpa traversing faster. Additionally it can even provide some transitions animation technique support like FLIP

    Describe alternatives you've considered turbodrive seems to provide similar functionality but with millionjs perf, ahead of time parallelized caching and concurrent morphing of the template dom based on the availability of main thread we will be better than turbodrive. Also FLIP support and minimal size will be good to have add-ons

    enhancement 
    opened by Borrus-sudo 7
  • feat: feature list

    feat: feature list

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    if possible, can provide a featurelist so that everyone can participate and build million.

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    enhancement 
    opened by cbbfcd 6
  • bug: `diff` children, the vnodes can includes `null` node

    bug: `diff` children, the vnodes can includes `null` node

    Describe the bug A clear and concise description of what the bug is. image

    image

    so, the element can be removed, it's not work as excepted.

    if we filter the vnodes in my demo, it work perfect. image

    but, this causes the order of vnodes to be out of order, i try to find a nother way to resolve it. what's your opinion? To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Device (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    bug 
    opened by cbbfcd 6
  • feat(react): add `componentDidCatch`

    feat(react): add `componentDidCatch`

    Please describe the changes this PR makes and why it should be merged:

    Closes #222 Relates to https://github.com/aidenybai/million-react/issues/6

    In draft.

    Currently, componentDidCatch in class components only works for render errors, not for effects. It's a lot harder to achieve considering the current architecture of Million, because we need to retrieve recursively the parent VNode of a VNode, until is a class component and has componentDidCatch.

    UPDATE I found a way to catch all errors from effects, but it might add a (lot?) of overhead. In each VNode, we have to keep track of the parent VNode (_parent). Class Components also add a _component field to the root VNode. When an error is thrown from an effect (initial or subsequent), we traverse up the three of VNodes until we find one that has a _component, and run its componentDidCatch. This is similar to Preact's implementation.

    Status

    • [x] Code changes have been tested against prettier, or there are no code changes
    • [x] I know how to update typings and have done so, or typings don't need updating

    Semantic versioning classification:

    • [x] This PR changes the codebase
      • [ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
      • [x] This PR changes the internal workings with no modifications to the external API (bug fixes, performance improvements)
    • [ ] This PR only includes non-code changes, like changes to documentation, README, etc.
    enhancement 
    opened by QuiiBz 5
  • Feedback for “router()” submit form not working

    Feedback for “router()” submit form not working

    < form method="get" >
        < input type="text" name="q" >
        < input type="submit" value="Submit" >
    < /form >
    
    <script type="module">
    	import { router } from 'https://cdn.skypack.dev/million/router';
        router('body');
    </script>
    
    opened by liveTVchannels 0
  • bug: document or clarify how hooks can be used

    bug: document or clarify how hooks can be used

    Describe the bug This bug is a request for to further document or clarify how hooks can be used, when they are called and when not.

    Expected behavior A clear and concise description of what can be expected when using hooks.

    Additional context I try to use hooks. But the create hook is not called on nested vnodes, when patching them in. I tried to find documentation or tests on hooks and tried to step through the code, without success.

    The bug is about documentation because i cannot figure out what the intended behavior is meant to be.

    bug 
    opened by mb0 0
  • bug: React.memo works incorrectly

    bug: React.memo works incorrectly

    Describe the bug Hey. I'm trying to test the compatibility layer with react. I came across a bug when using the memo function. This function is not properly passing props. I think the point is that memo function is implemented by passing props through Object.values(props)which produces an array instead of an object. As a result, the memoizable component receives an array of arguments as input, instead of a single props argument.

    To Reproduce Wrap any component in memo and pass some props to it.

    Expected behavior Props must be passed as a single argument.

    bug 
    opened by atellmer 0
  • feat: children can be an object or an array of `VNode`

    feat: children can be an object or an array of `VNode`

    Please describe the changes this PR makes and why it should be merged:

    WIP

    Status

    • [x] Code changes have been tested against prettier, or there are no code changes
    • [ ] I know how to update typings and have done so, or typings don't need updating

    Semantic versioning classification:

    • [x] This PR changes the codebase
      • [ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
      • [x] This PR changes the internal workings with no modifications to the external API (bug fixes, performance improvements)
    • [ ] This PR only includes non-code changes, like changes to documentation, README, etc.
    enhancement 
    opened by QuiiBz 1
  • feat: Next.js support

    feat: Next.js support

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    enhancement 
    opened by aidenybai 10
Releases(v1.12.6-beta.2)
  • v1.12.6-beta.2(Sep 30, 2022)

    What's Changed

    • (fix) - typos in docs by @lucacataldo in https://github.com/aidenybai/million/pull/268
    • fix(#269): correct memo behavior by @SukkaW in https://github.com/aidenybai/million/pull/270
    • feat: ci failed and i don't know why command by @aidenybai in https://github.com/aidenybai/million/pull/271
    • docs: fix morph exmaple by @aidenybai in https://github.com/aidenybai/million/pull/274
    • docs(benchmarks): fix typo in README.md by @eltociear in https://github.com/aidenybai/million/pull/275
    • fix: use html parser over xml by @aidenybai in https://github.com/aidenybai/million/pull/277
    • docs: fix wording by @aidenybai in https://github.com/aidenybai/million/pull/278

    New Contributors

    • @lucacataldo made their first contribution in https://github.com/aidenybai/million/pull/268
    • @eltociear made their first contribution in https://github.com/aidenybai/million/pull/275

    Full Changelog: https://github.com/aidenybai/million/compare/v1.12.5...v1.12.6-beta.2

    Source code(tar.gz)
    Source code(zip)
  • v1.12.5(Aug 19, 2022)

    What's Changed

    • fix: wouter compat by @QuiiBz in https://github.com/aidenybai/million/pull/258

    Full Changelog: https://github.com/aidenybai/million/compare/v1.12.4...v1.12.5

    Source code(tar.gz)
    Source code(zip)
  • v1.12.3(Aug 12, 2022)

    What's Changed

    • docs: correct typos and article agreement by @vladdoster in https://github.com/aidenybai/million/pull/224
    • Fix small typo by @oliviertassinari in https://github.com/aidenybai/million/pull/228
    • refactor: duplicated code inside scheduler by @QuiiBz in https://github.com/aidenybai/million/pull/229
    • React jsx runtime export fragment by @joshgillies in https://github.com/aidenybai/million/pull/231
    • fix: welcome command not working on initial run by @QuiiBz in https://github.com/aidenybai/million/pull/230
    • fix: og:image by @38elements in https://github.com/aidenybai/million/pull/234
    • feat(router): support non-text links as external by @QuiiBz in https://github.com/aidenybai/million/pull/233
    • Fix: small typo by @RezaRahemtola in https://github.com/aidenybai/million/pull/240
    • chore(docs): ESPrisma -> ESPrima by @QuiiBz in https://github.com/aidenybai/million/pull/239
    • chore: summary_large_image -> summary by @38elements in https://github.com/aidenybai/million/pull/243
    • fix(#241): remove edit this page on github by @aidenybai in https://github.com/aidenybai/million/pull/245
    • Add Home to index page by @PringlePot in https://github.com/aidenybai/million/pull/246
    • fix(hooks): uselist splice optimization by @jasonappah in https://github.com/aidenybai/million/pull/247
    • fix(#242): github issue template discrepancies by @aidenybai in https://github.com/aidenybai/million/pull/244
    • Fix for h1 title by @PringlePot in https://github.com/aidenybai/million/pull/249
    • fix(compiler): handle literal attribute keys by @jasonappah in https://github.com/aidenybai/million/pull/250
    • fix: typo on compatibility by @cusspvz in https://github.com/aidenybai/million/pull/251
    • chore(contributing): fix issues in Scripts section by @QuiiBz in https://github.com/aidenybai/million/pull/252
    • feat(react): add componentDidCatch by @QuiiBz in https://github.com/aidenybai/million/pull/238
    • fix: new implementation of useSyncExternalStore by @aidenybai in https://github.com/aidenybai/million/pull/254
    • feat: new website hero by @aidenybai in https://github.com/aidenybai/million/pull/255

    New Contributors

    • @vladdoster made their first contribution in https://github.com/aidenybai/million/pull/224
    • @oliviertassinari made their first contribution in https://github.com/aidenybai/million/pull/228
    • @QuiiBz made their first contribution in https://github.com/aidenybai/million/pull/229
    • @joshgillies made their first contribution in https://github.com/aidenybai/million/pull/231
    • @38elements made their first contribution in https://github.com/aidenybai/million/pull/234
    • @RezaRahemtola made their first contribution in https://github.com/aidenybai/million/pull/240
    • @PringlePot made their first contribution in https://github.com/aidenybai/million/pull/246
    • @jasonappah made their first contribution in https://github.com/aidenybai/million/pull/247
    • @cusspvz made their first contribution in https://github.com/aidenybai/million/pull/251

    Full Changelog: https://github.com/aidenybai/million/compare/v1.12.0...v1.12.3

    Source code(tar.gz)
    Source code(zip)
  • v1.12.0(Jul 28, 2022)

  • v1.12.0-beta.0(Jul 22, 2022)

  • v1.11.8-1(Jul 13, 2022)

    • fix: router to full prefetch aaae9c4
    • chore: bump CITATION.cff version 71484c8

    https://github.com/aidenybai/million/compare/v1.11.8-0...v1.11.8-1

    Source code(tar.gz)
    Source code(zip)
  • v1.11.8-0(Jul 13, 2022)

  • v1.11.7(Jul 13, 2022)

    • feat: fetch on view ff6676c
    • build: ignore during build 2f84ce7
    • ci e778bca
    • fix: package.json formatting 7fc9464
    • chore: format f4043a0
    • build: new monorepo structure 3182fa8
    • fix: typecheck ci 7402343
    • chore: cleanup website a49b332
    • chore: bump CITATION.cff version 80ba351

    https://github.com/aidenybai/million/compare/v1.11.6...v1.11.7

    Source code(tar.gz)
    Source code(zip)
  • v1.11.6(Jul 11, 2022)

    What's Changed

    • docs: add website 72f346e
    • Merge pull request #220 from aidenybai/feat/new-style-guide cfb9b01
    • chore: typecheck everything 57793e9
    • style: overhaul linting to vercel 310476c
    • fix: nested components and context 1bcedb5
    • fix: use type instead of assertion b0f9fb7
    • docs(readme): add acknowledgement 7f9899c
    • fix: ci script bf26ff6
    • fix: ci script 8296230
    • Merge branch 'main' of https://github.com/aidenybai/million 80254ac
    • build: migrate to bun 0dcc686
    • Merge pull request #219 from wulinsheng123/fix 552f3b7
    • fix: exit 1 will break program 5299e19
    • Merge branch 'main' of https://github.com/aidenybai/million 3a150db
    • feat(: add note to welcome gen 9ace7bf
    • Merge pull request #217 from wulinsheng123/main 3de49e6
    • fix: add id name in welcome/scripts c4b3e4e
    • docs: list of script defs c9f22f6
    • docs: better contributing onboard 42977d4
    • chore: bump CITATION.cff version a91a6f9

    New Contributors

    • @cbbfcd
    • @SukkaW
    • @HerbertHe
    • @gustavopch

    Full Changelog: https://github.com/aidenybai/million/compare/v1.11.5...v1.11.6

    Source code(tar.gz)
    Source code(zip)
  • v1.11.5(Jul 3, 2022)

    • chore: handle style attributes like width cbaecaa
    • docs: switch to note quote d89f0f1
    • chore: bump CITATION.cff version 0630f4e

    https://github.com/aidenybai/million/compare/v1.11.4...v1.11.5

    Source code(tar.gz)
    Source code(zip)
  • v1.11.4(Jun 30, 2022)

    • fix: wait a second prior to bump 737453d
    • Merge pull request #211 from aidenybai/feat/handle-children 28e9651
    • Merge branch 'main' into feat/handle-children 8f6f849
    • fix: unused variable a84dec6
    • chore: bump CITATION.cff version 1387b8c
    • chore: skip peerdep ad83b90
    • fix: unused typers ae1bc33
    • fix: remove pr contents 4da0435
    • fix: install 1abbfa4
    • feat: clean empty vnode children 5a075f4
    • feat: clean empty vnode children 3161a5c

    https://github.com/aidenybai/million/compare/v1.11.3...v1.11.4

    Source code(tar.gz)
    Source code(zip)
  • v1.11.3(Jun 29, 2022)

    • fix: peer dep issue from vite@beta 3d7c735
    • Merge pull request #212 from cbbfcd/bugfix/typo 97f88be
    • fix: remove broken swr fetching 6db52cc
    • fix: the augmentor function is named hook 1de78e1
    • Merge branch 'main' of https://github.com/aidenybai/million 0c7ea41
    • chore: install peer dep 69fde0d
    • Merge pull request #207 from cbbfcd/feat/driver-el-not-empty 5e215ed
    • Merge pull request #206 from cbbfcd/feat/check-el-no-empty 4c7c8b3
    • feat: driver should not handle empty el 305b236
    • feat: check the el is not empty 1672b1a
    • Merge pull request #205 from cbbfcd/feat/exclude-some-properties 39f1c92
    • feat: exclude children property dcd4528
    • chore: resolve peers pnpm a208fa9
    • chore: remove unnecessary packages d0cb298
    • bump version e9b1e6c
    • fix: change import for path 027e1ec
    • chore: taze packages 8a515af
    • chore: bump CITATION.cff version 2244852

    https://github.com/aidenybai/million/compare/v1.11.2...v1.11.3

    Source code(tar.gz)
    Source code(zip)
  • v1.11.2(Jun 22, 2022)

    • build: generate measurement builds dbc5754
    • build: generate measurement builds cb92b82
    • build: fix unused import b4f8e42
    • Merge branch 'main' of https://github.com/aidenybai/million 4c7294a
    • build: fix build ordering c323d59
    • Merge pull request #201 from cbbfcd/feat/code-optimization 8923fc5
    • feat: should not use svg twice. f7ac9f8
    • chore: bump CITATION.cff version 8e61832

    https://github.com/aidenybai/million/compare/v1.11.1...v1.11.2

    Source code(tar.gz)
    Source code(zip)
  • v1.11.1(Jun 21, 2022)

    • feat(hooks): Consumer property for context e25e5df
    • fix(scripts): external vite run 660567e
    • docs(readme): fix typo 91216e7
    • Merge branch 'main' of https://github.com/aidenybai/million bb7e5e1
    • fix(#199 + #200): fix useRef for component root element ff3fef0
    • Merge pull request #198 from SukkaW/fix-prop-setting 8e00f00
    • fix(createElement): ignore prop value with null and undefined c6ae6f7
    • docs(readme): trailer e0896e6
    • chore: bump CITATION.cff version 380a387

    https://github.com/aidenybai/million/compare/v1.11.0...v1.11.1

    Source code(tar.gz)
    Source code(zip)
  • v1.11.0(Jun 18, 2022)

  • v1.11.0-1(Jun 18, 2022)

    • feat(vite-plugin): error handling 72bbaf5
    • chore: bump CITATION.cff version b252298

    https://github.com/aidenybai/million/compare/v1.11.0-0...v1.11.0-1

    Source code(tar.gz)
    Source code(zip)
  • v1.11.0-0(Jun 17, 2022)

    • refactor(morph): allow memo of dom elements 022edb9
    • chore: fmt 22d0ab3
    • fix(createElement): remove unused import 76b262a
    • Merge branch 'main' of https://github.com/aidenybai/million ebff895
    • fix(#195): fix xmlns and xlink d44a631
    • Merge pull request #197 from cbbfcd/refactor/exclude-readonly-properties 99e0495
    • refactor: optimize judgment conditions be6e01e
    • docs(readme): baby go nyoom eb07f64
    • docs(readme): fix light/dark mode switch 350f1c6
    • feat(hooks): merging hooks ee824f9
    • Merge pull request #194 from aidenybai/hooks 39f4ad4
    • refactor(hooks): used mapped type 53e3ed9
    • Merge pull request #193 from aidenybai/hooks 48353a1
    • Merge branch 'main' into hooks b984e99
    • refactor(hooks): use enum 763dbe5
    • Merge pull request #192 from cbbfcd/patch-1 0af6982
    • fixed: do not set readonly property. 93245d7
    • chore: fmt eb36126
    • feat(million): hooks c86f4fb
    • feat(react): add comments to hooks 870ab76
    • feat(react): 4 new hooks! 0802981
    • refactor(react): native method for useId 3e1a664
    • refactor(react): shorter ids 77ede99
    • fix(code-measure): use react pkg for accuracy 529d407
    • chore: bump CITATION.cff version e0a4b62

    https://github.com/aidenybai/million/compare/v1.10.16...v1.11.0-0

    Source code(tar.gz)
    Source code(zip)
  • v1.10.16(Jun 14, 2022)

    • fix(code-measure): use react pkg for accuracy 21c4ea8
    • chore: bump CITATION.cff version 098914d

    https://github.com/aidenybai/million/compare/v1.10.15...v1.10.16

    Source code(tar.gz)
    Source code(zip)
  • v1.10.15(Jun 14, 2022)

    • chore: fmt a6b895f
    • refactor(jsx-runtime): shorten constants ec54ad2
    • fix(vite-plugin): allow static optimization 47467db
    • feat(react): React 17 render function eb97dbc
    • docs(readme): change time a8fdd91
    • fix(html): vnode assert 78fa4ac
    • chore: bump CITATION.cff version eeb29f3

    https://github.com/aidenybai/million/compare/v1.10.15-0...v1.10.15

    Source code(tar.gz)
    Source code(zip)
  • v1.10.15-0(Jun 9, 2022)

    • chore: format f850c9e
    • feat(react): children prop a7af3c7
    • chore: bump CITATION.cff version 8667f63

    https://github.com/aidenybai/million/compare/v1.10.14...v1.10.15-0

    Source code(tar.gz)
    Source code(zip)
  • v1.10.14(Jun 9, 2022)

    • build: internalize tslib d420225
    • chore: bump CITATION.cff version 0b522a2

    https://github.com/aidenybai/million/compare/v1.10.13...v1.10.14

    Source code(tar.gz)
    Source code(zip)
  • v1.10.13(Jun 9, 2022)

    • feat(react): fix suspense and strict mode dab3f5c
    • chore: bump CITATION.cff version 31b89bf

    https://github.com/aidenybai/million/compare/v1.10.12...v1.10.13

    Source code(tar.gz)
    Source code(zip)
  • v1.10.12(Jun 9, 2022)

    • chore: format 86fce14
    • chore: format f3b7e14
    • chore: bump CITATION.cff version 64a3357

    https://github.com/aidenybai/million/compare/v1.10.12-3...v1.10.12

    Source code(tar.gz)
    Source code(zip)
  • v1.10.12-3(Jun 9, 2022)

    • chore: format 3da0a52
    • feat(jsx-runtime): react compat mode by default for jsx function 219e9aa
    • chore: bump CITATION.cff version cd0de8b

    https://github.com/aidenybai/million/compare/v1.10.12-2...v1.10.12-3

    Source code(tar.gz)
    Source code(zip)
  • v1.10.12-2(Jun 9, 2022)

    • build(react): bundled build for default, mkdist for subpaths 1e9d567
    • chore: bump CITATION.cff version f7b9ef6

    https://github.com/aidenybai/million/compare/v1.10.12-1...v1.10.12-2

    Source code(tar.gz)
    Source code(zip)
  • v1.10.12-1(Jun 9, 2022)

    • chore: format 004e9f5
    • build(react): generalize imports 001965b
    • chore: bump CITATION.cff version b397d2d

    https://github.com/aidenybai/million/compare/v1.10.12-0...v1.10.12-1

    Source code(tar.gz)
    Source code(zip)
  • v1.10.12-0(Jun 9, 2022)

    • build(react): fix exports ef83666
    • chore: bump CITATION.cff version 7d93366

    https://github.com/aidenybai/million/compare/v1.10.11...v1.10.12-0

    Source code(tar.gz)
    Source code(zip)
  • v1.10.11(Jun 9, 2022)

    • build(react): fix exports 221ae0a
    • chore: bump CITATION.cff version 0236397

    https://github.com/aidenybai/million/compare/v1.10.10...v1.10.11

    Source code(tar.gz)
    Source code(zip)
  • v1.10.10(Jun 9, 2022)

    • build(react): mkdist react for next compat a1575ca
    • feat(react): keyed component support 3a666a3
    • docs(readme): reduce time 9aadcbe
    • fix: root fragments 4987e70
    • fix(#189): nested components 000ff6d
    • chore(react): formatting 01149c7
    • feat(react): support forwardRef and createRef 613db11
    • refactor(vite-plugin): suffix constants with __ 63ffb9b
    • fix(vite-plugin): toggle injects 829562a
    • chore: bump CITATION.cff version 245cb16

    https://github.com/aidenybai/million/compare/v1.10.9...v1.10.10

    Source code(tar.gz)
    Source code(zip)
  • v1.10.9(Jun 5, 2022)

    • chore: format 18f8c23
    • fix(react): runtime-based jsxFactory 92150e9
    • chore: bump CITATION.cff version 32e5652

    https://github.com/aidenybai/million/compare/v1.10.8...v1.10.9

    Source code(tar.gz)
    Source code(zip)
Owner
Aiden Bai
research 🙌 open source
Aiden Bai
This web application aim to produce an contest notifier utility and a modern open-source compiler.

This web application aim to produce an contest notifier utility and a modern open-source compiler. The current features of the application include : Code Runner , Upcoming and Ongoing Contests.

ABHAY GUPTA 6 Dec 3, 2022
Its Amazon-like E-commerce store is called shopping-spree!

Its Amazon-like E-commerce store is called shopping-spree! The technologies used for this Project are React.js Frame work Next.js, MongoDB For Database, Mongoose, Material UI and JWT for Authentication Functions and Context API for managing the state Across the Application! where I've Implemented many Functionalities like ADD to Cart, Login, Register, with Next-Authentication, Shipping Screen, Order Details Screen, and Check-out Screen and UPdate the Profile Section Page!

null 1 Dec 18, 2021
Web application that tracks the covid-19 statistics in Chile and its regions.

Covid 19 Monitor Web page that shows the covid statistics of the country of Chile, all the confirmed cases, the deaths and also the daily statistics.

David Vergaray 6 Mar 17, 2022
A virtual traning coach.

fitzome A virtual coach to do - Refactor code (Flat list ones) - Allow users to update their workouts - Add remote config Writing and formatting synt

pedro rivas 16 Dec 30, 2022
This is Covid-19 data that shows for each country.You can search your country and know its statistics .

COVID-19 Data TRACKER This is Covid-19 data that shows for each country.You can search your country and know its statistics . Built With HTML, CSS, SC

Samiullah Bhadur 2 Apr 21, 2022
🐐 Simple and complete React DOM testing utilities that encourage good testing practices.

React Testing Library Simple and complete React DOM testing utilities that encourage good testing practices. Read The Docs | Edit the docs Table of Co

Testing Library 17.3k Jan 4, 2023
A highly impartial suite of React components that can be assembled by the consumer to create a carousel with almost no limits on DOM structure or CSS styles.

A highly impartial suite of React components that can be assembled by the consumer to create a carousel with almost no limits on DOM structure or CSS styles. If you're tired of fighting some other developer's CSS and DOM structure, this carousel is for you.

Vladimir Bezrukov 1 Dec 24, 2021
a more intuitive way of defining private, public and common routes for react applications using react-router-dom v6

auth-react-router is a wrapper over react-router-dom v6 that provides a simple API for configuring public, private and common routes (React suspense r

Pasecinic Nichita 12 Dec 3, 2022
Build blazing fast, modern apps and websites with React

Gatsby v3 ⚛️ ?? ?? Fast in every way that matters Gatsby is a free and open source framework based on React that helps developers build blazing fast w

Gatsby 54k Jan 9, 2023
⚛️ Hooks for building fast and extendable tables and datagrids for React

Hooks for building lightweight, fast and extendable datagrids for React Enjoy this library? Try them all! React Query, React Form, React Charts Visit

Tanner Linsley 20.3k Jan 3, 2023
Tweak React components in real time. (Deprecated: use Fast Refresh instead.)

React Hot Loader Tweak React components in real time ⚛️ ⚡️ Watch Dan Abramov's talk on Hot Reloading with Time Travel. Moving towards next step React-

Dan Abramov 12.2k Jan 1, 2023
An interactive CLI automation tool 🛠️ for creating react.js and next.js projects most fast and efficiently. ⚛️

An interactive CLI automation tool ??️ for creating react.js and next.js projects most fast and efficiently. ⚛️ About ℹ️ ReexJs CLI is an interactive

Alexis Guzman 27 Apr 12, 2022
An example of a fast food ordering app with Ionic React

ionic-fast-food-app An example of a Food Ordering app in Ionic React Included in this Ionic React Template/UI Data fetching from JSON files Global sta

Alan Montgomery 25 Nov 28, 2022
A Minimal Setup & Fast Boilerplate for React.js with Vite.

A Minimal Setup & Fast Boilerplate for React.js with Vite Features ?? Dynamic Pages Routing with react-router-dom from React.js ?? Fast development wi

Muhammad Fauzan 26 Oct 25, 2022
A portfolio built in React and NextJS. Simple, clean, and fast.

Personal Portfolio A portfolio built in React and NextJS. Simple, clean and fast. Note: The logo and banner used in the project are my intellectual pr

Vipul Jha 98 Jan 2, 2023
Enable Fast Refresh for remote data in NextJS.

next-remote-refresh Utilize Fast Refresh for remote data in NextJS. ⚠️ This solution relies on undocumented APIs and may break in future NextJS update

Travis Arnold 153 Dec 23, 2022
A fast-searching and space-saving browser specially designed for programmers.

Programmer Browser A fast-searching and space-saving browser specially designed for programmers. ⭐ Support Us If you like our project, do not forget t

Özgür 571 Jan 1, 2023
Fast, tiny and solid hooks system for Javascript and Node.js

Uncino ?? Fast, tiny and solid hooks system for Javascript and NodeJS Uncino is italian word for hook Do you know Wordpress hooks system? Uncino is a

Riccardo Tartaglia 201 Dec 7, 2022
Million is a lightweight (<1kb) Virtual DOM. It's really fast and makes it easy to create user interfaces.

?? Watch Video ?? Read the docs ?? Join our Discord What is Million? Million is a lightweight (<1kb) Virtual DOM. It's really fast and makes it easy t

Derek Jones 5 Aug 24, 2022
A compiler that converts React-compatible codes to VanillaJS with no Virtual DOM

Vidact Vidact compiles your React source codes to VanillaJS code with No Virtual DOM ™️ . It is similar to Svelte, but unlike Svelte, Vidact does not

Mohamad Mohebifar 753 Dec 22, 2022