Tina.js: a small progressive framework for WeChat mini programs
:dancer: 一款轻巧的渐进式微信小程序框架
At a glance
- What is it?
- Tina.js is a lightweight, progressive framework for building WeChat mini programs, keeping most of the official MINA API so existing skills transfer, and it ships as a small bundled core plus optional extensions for state management, Immutable.js and router enhancements. The npm package is @tinajs/tina, the licence is Apache-2.0, and the last release was v1.8.3 in June 2020.
- Who is it for?
- Tina.js suits a developer who has to ship a WeChat mini program and wants modern conveniences, a state manager, a router and npm packages, without learning a whole new API, since it deliberately keeps most of the MINA design.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 135 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What it is: a WeChat mini program framework that keeps the MINA API
Tina.js describes itself in Chinese as a light and progressive WeChat mini program framework, and the package description in the manifest is A light and progressive Wechat-Mini Program Framework. The word progressive is the design statement, and the second feature explains it. Tina keeps most of the MINA API design, the official WeChat mini program framework, and the documentation is explicit that whether or not you have mini program development experience you can transition easily. So the value proposition is that you write against something that looks like the platform you already know, with a small core and a set of opt-in extensions. The package is published as @tinajs/tina, the licence is Apache-2.0, and the repository is under the tinajs organisation with the homepage at tina.js.org.
Lightweight and easy to pick up, the two stated features
The Features section lists three things in Chinese, and the first is stated as light and small, with the evidence being a size badge pointing at the minified bundle of the core framework on unpkg. That badge is the project's own measurement of itself, and it is the right number to look at if you are choosing a framework for a mini program where the bundle is downloaded on a phone network. The second is very easy to get started with, and the reason is the MINA API compatibility already mentioned. The third is progressive enhancement, which is the architectural commitment. The extensions are prepared for you, a state manager such as Redux, Immutable.js, and router enhancements, and the documentation also points out that you can write a new plugin yourself, which is the part that makes the framework extensible rather than merely bundled.
The extension model, and the separate tool that brings npm
The NPM and single file component section describes a companion project rather than a feature of this one. Combined with the mina-webpack project prepared for you, the mini program project gains Mina single file components and pages, NPM, so beyond the general packages you can also share or download standalone Mina components, and the Webpack capabilities that come with it such as Babel, PostCSS and code minification. So the division is clear. Tina.js is the runtime framework, the small bundled core with the extensions, and mina-webpack is the build tool that brings the Webpack ecosystem and the single file component model. The topics list on the repository names the pieces of the platform it works with, wxml, wxss and wxs, alongside weapp, wechat and weixin, so the framework sits on the platform's own template and style languages rather than replacing them.
The build, and the dependency footprint that keeps it small
The package manifest shows a build that is deliberately old fashioned, and that is consistent with the era of the releases. The main entry is dist/tina.js with type declarations in index.d.ts, and only dist and index.d.ts are published, so the tarball carries the build output and nothing else. The build runs rollup for the bundle and then uglifyjs to produce dist/tina.min.js, with the start script running rollup in watch mode. Tests are run with AVA under nyc for coverage. The dependency list is short and small, with clone, for-own, is-plain-obj, just-filter-object, just-map-object and sigmund, which are all object helpers rather than framework machinery, and the dev dependencies carry the build tooling including rollup with the babel, commonjs, node-resolve and node-builtins plugins. The absence of a state management library or a router in the dependencies is the clearest statement of the core's scope: those are the extensions, not the framework.
Applications built with the framework
The README carries a table of mini program codes with the projects behind them, and the list is a useful sample of what people built. There is a Hacker News trending reader, a Chinese news app, the Jike social app, a movie picker, a house hunting app, a wallpaper app, an education app for teachers, a music library app, and a tag app. Each entry credits the author or the project, so the list reads as a set of credits rather than an advertisement. What a list like this demonstrates is that the framework was actually used for real applications rather than only for demos, which is the part of a community framework's history that is hard to get otherwise. The README also asks anyone already using Tina.js to say so in the repository, which is how the project tracks its own adoption.
Where the project stands now, and the honest reading
The releases are v1.8.0 from June 2019, v1.8.2 from June 2020 and v1.8.3 from June 2020, and the last push to the repository was on 2026-06-10. The default branch is master, the primary language is JavaScript, and the homepage is tina.js.org, which is where the guides live, with sections for state management, the router, plugins, examples and a getting started. There is a Discord link, a pull request welcome badge and a FOSSA licence badge, and the copyright is recorded as Apache-2.0 with yelo credited from 2017 to present. The honest reading is that this is a project whose public code has been quiet for a long time, and whose documentation and community links still point at a live site. Anyone evaluating it now should judge the maintained extensions and the mina-webpack companion rather than the core version number, because the value of the framework in 2026 lies in what has been kept alive around it.
Editorial conclusion
Tina.js suits a developer who has to ship a WeChat mini program and wants modern conveniences, a state manager, a router and npm packages, without learning a whole new API, since it deliberately keeps most of the MINA design. It is the wrong choice for a new project in 2026, because the last release was v1.8.3 in June 2020 and the last push to the repository was on 2026-06-10, and a poor fit if you need current WeChat mini program platform features, since the framework is built on the MINA API of its era. Before adopting it, check the size badge for the bundled core and decide whether you want the mina-webpack companion, because the single file components and npm support come from that separate tool rather than from this package.
Frequently asked questions
What is Tina.js?
It is a light and progressive WeChat mini program framework, published to npm as @tinajs/tina. It keeps most of the MINA API design so existing mini program experience transfers, and it is licensed under Apache-2.0.
What does Tina.js add to the standard MINA framework?
A set of prepared extensions, including a state manager such as Redux, Immutable.js support and router enhancements, plus the ability to write your own plugin. The single file component model and NPM support come from the separate mina-webpack companion project rather than from the core package.
How is Tina.js built and tested?
The build runs rollup to produce dist/tina.js and then uglifyjs to produce dist/tina.min.js, with the start script running rollup in watch mode. Tests are run with AVA under nyc for coverage, and the published package contains only the dist directory and the type declarations.
Is Tina.js still actively developed?
The releases are v1.8.0 from 2019 and v1.8.2 and v1.8.3 from June 2020, and the last push to the repository was on 2026-06-10. The project is not archived, and the documentation site and community links are still live, so the practical question is whether the extensions and the mina-webpack companion are maintained rather than the core version number.
Who has built applications with Tina.js?
The showcase in the README lists applications including a Hacker News trending reader, a Chinese news app, the Jike social app, a movie picker, a house hunting app, a wallpaper app, an education app for teachers, a music library app and a tag app, each credited to its author.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/tinajs-tina)Was this useful?