io-ts VS marshal.ts

Compare io-ts vs marshal.ts and see what are their differences.

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
io-ts marshal.ts
80 29
6,597 3,066
- 1.9%
4.9 9.7
5 months ago 9 days ago
TypeScript TypeScript
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

io-ts

Posts with mentions or reviews of io-ts. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-07.
  • TDD
    2 projects | /r/CharruaDevs | 7 Dec 2023
    Qué rico. Si tenés chance meté un proceso de code review fuerte, y para el tema de I/O probá a usar https://github.com/Effect-TS/schema ó https://github.com/gcanti/io-ts que les da una solución obvia al tema de "tipos para lo que devuelva el backend", aunque es en realidad mucho más capaz que eso.
  • Domain modelling with State Machines and TypeScript by Carlton Upperdine
    3 projects | /r/programming | 30 May 2023
    My fave is still io-ts (https://github.com/gcanti/io-ts/blob/master/docs/index.md) as I find it more flexible than zod at the ingress. The author is also working on the Effect ecosystem which also looks interesting.
  • Why I Like Using Maps (and WeakMaps) for Handling DOM Nodes
    1 project | news.ycombinator.com | 6 May 2023
    I’ve been using io-ts for this and been very happy with it. [1] It’s similar to Swift’s Coding protocol in case you’re familiar.

    [1] https://gcanti.github.io/io-ts/

  • Can someone recommend a library for data parsing similar to Zod, but with better support for input transformations/preprocessing?
    2 projects | /r/typescript | 30 Apr 2023
    Yeah, there are a few new concepts and it's not the easiest to pick up right away. The best introduction is here on the main documentation page.
  • libraries you are happy that you discovered them
    10 projects | /r/typescript | 27 Dec 2022
  • Is React for small projects an Overkill?
    2 projects | /r/reactjs | 10 Dec 2022
  • how to strictly type this?
    1 project | /r/typescript | 19 Nov 2022
    We use https://github.com/gcanti/io-ts/blob/master/Decoder.md which has a very similar interface. It can even be used to mutate the data using https://github.com/gcanti/io-ts/blob/master/Decoder.md#the-parse-combinator.
  • Typescript advanced bits: function overloading, never and unknown types
    3 projects | dev.to | 10 Nov 2022
    A good way to significantly improve the reliability of your app is via improving type-safety by moving away from using any to unknown. One relevant example could be when you type your backend responses and when stringifying JSON to using unknown combined with some sort of runtime type checking. It can be done either by using built-in functionality like type guards or using an external library like io-ts, zod or yup.
  • I found 10,000x faster TypeScript validator library
    5 projects | dev.to | 1 Nov 2022
    Usage of TypeBox is similar with io-ts and zod, but it is much powerful and faster than them. Also, TypeBox can generate JSON schema very easily. Therefore, if you're looking for a validator library for new project and not suffering from legacy codes, I think TypeBox would be much better choice than io-ts and zod. TypeBox can totally replace them.
  • Validate your data with Zod
    2 projects | dev.to | 31 Oct 2022
    This check can be done with different libraries like: io-ts, typebox, or zod. These libraries allow you to create objects that represent your typescript definitions. Then, these objects can be used at runtime to validate the received data, in addition, you can also convert this object to a Typescript definition to have all the benefits of using typescript. These objects can be called schema validations because they are responsible for the data validation.

marshal.ts

Posts with mentions or reviews of marshal.ts. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-15.
  • Deepkit Enterprise TypeScript Framework
    1 project | news.ycombinator.com | 9 Dec 2023
  • We use TypeScript not based on preference, but because we want to make money
    3 projects | news.ycombinator.com | 15 Sep 2023
    zod or yup gets you quite a bit of the way there in practice - when you would reach for a Typescript type, making it in zod instead is more verbose but gives that runtime layer.

    But for those who actually want full-stack non-stripped runtime type reflection based on Typescript syntax alone... https://deepkit.io/ - https://deepkit.io/blog/introducing-deepkit-framework - is a really promising and cool project.

    It patches the typescript compiler (which pointedly considers runtime type information out of scope) with its own type compiler that emits a bespoke bytecode that is executed in a bespoke VM to communicate runtime type information to both server and client as needed. https://docs.deepkit.io/english/runtime-types.html

    And from that baseline, there are very cool things you can do like an ORM entirely based on type annotations https://docs.deepkit.io/english/database.html or strongly-typed RPCs https://docs.deepkit.io/english/rpc.html .

    It's very much in the alpha stage, but it's really well thought out - there's a tremendous degree of care the developer is taking towards code cleanliness and developer experience. I'm torn between wishing this project to have a fully funded team and take the world by storm, vs. "letting them cook" so to speak and seeing the developer experience unfold organically. Either way, it's a breath of fresh air into the Typescript ecosystem!

  • Is there a TS backend development environment similar to what I have for the frontend?
    3 projects | /r/typescript | 8 Jul 2023
  • TypeScript please give us types
    10 projects | news.ycombinator.com | 7 Jul 2023
    Deepkit (listed in the article) is a fascinating project and really deserves to be more popular.

    It also demonstrates that what is being asked for is actually practical.

    https://deepkit.io/

  • Bebop introduces JSON-Over-Bebop for fast runtime type validation of raw JSON in Typescript; faster than Zod and other alternatives
    3 projects | /r/typescript | 27 Jun 2023
    Checkout deepkit One of the things it has is a really fast BSON parser, that is faster than the JSON one to my understanding. Interesting work with TS types too
  • Show HN: Magma – Multiplayer AI for Artists
    1 project | news.ycombinator.com | 31 May 2023
    Hello HN community! I’m one of the founders of Magma, a multiplayer art platform. You might recall our earlier post (https://news.ycombinator.com/item?id=30869131), and today we’re sharing a significant update with our artist-focused, multiplayer AI assistant, a first in the realm of collaborative creative tools. Hope you’ll like it!

    See how it works in this YouTube video: https://www.youtube.com/watch?v=ZESJfjwxLjk. For in-depth understanding, here’s our documentation (https://help.magma.com/en/articles/6711598-beta-ai-assistant) and our AI manifesto (https://magma.com/aimanifesto) which is a guiding document for us.

    We're inviting you to get hands-on with this new feature. Join any of these canvases (up to 50 live contributors each): https://magm.ai/qnss, https://magm.ai/ei74, https://magm.ai/38mr, https://magm.ai/z1ti, https://magm.ai/zdub, https://magm.ai/ed93, https://magm.ai/1l84, https://magm.ai/xvu5, https://magm.ai/gd9j, https://magm.ai/pu6e. All of these canvases have extra feature flags enabled but if you’d like to go beyond them, feel free to join our beta community https://magm.ai/magma-beta-artspace-invite

    Our artist-first approach is rooted in our belief that human creativity should remain the heart of artistry. With our AI handling routine tasks, artists can focus on true creativity. Importantly, our AI preserves artists' copyright as it provides a clear distinction between human-generated and AI-generated content.

    Beyond just art, Magma is a powerful tool for game dev and animation, offering powerful design & review tools for all stages of the creative process. Our Slack/GDrive-like workspaces (we call them Artspaces) expose API and even shell tools. One can even render any artwork in the terminal. :)

    Technically speaking, our collaborative drawing engine is powered by Typescript, Node.JS, WebGL, with a hint of WebAssembly for hand-optimized performance that even Chromebooks can handle. The backend also leverages a high performance Typescript Deepkit Framework https://deepkit.io

    Our AI assistant runs on a worker-based architecture akin to Gitlab CI workers, currently leveraging Stable Diffusion 2.1. Future developments will allow connecting your own AI worker, training custom models within Magma, and plugging in API keys from other AI backends.

    Feedback, questions, thoughts? Let's discuss! Happy creating with a helping hand of AI!

    P.S. A shout-out to the HN community, our last post here helped us connect with an amazing technical angel investor who has made significant contributions. Looking forward to more such productive connections!

  • Why nodejs engineers prefer express over nestjs? although nestjs forces good practice and proper architecture and it seems to be a right choice for complex and enterprise applications like asp.net and Spring. What are the limitations of nestjs compared to express?
    3 projects | /r/node | 26 May 2023
    Take a look at restfuncs then. Or deepkit or telefunc.
  • Runtime TypeScript types change everything
    5 projects | /r/typescript | 13 May 2023
    Both work out of the box very well with Deepkit. You can either construct your own types in runtime or mix TS types with runtime information. See for example https://github.com/deepkit/deepkit-framework/blob/master/packages/framework/src/crud.ts where this is done
  • IS there a way to generate Swagger model schemas from interfaces
    2 projects | /r/typescript | 18 Apr 2023
    Yes, you can directly use the interfaces and types as is with Deepkit (https://deepkit.io) and the library deepkit-openapi. You get also full route documentation if you use the deepkit/http router where you can use interfaces and type aliases plus validation thpes for route parameters (query parameters, body, etc). It still in alpha, but approaches soon beta.
  • Hegel – An advanced static type checker for JavaScript
    12 projects | news.ycombinator.com | 11 Oct 2022
    https://deepkit.io/ may be of interest to you! It deeply patches the TS type compiler to make all types visible at runtime, enabling a lot of annotation-style workflows and dependency injection possible completely within the type annotation system: https://docs.deepkit.io/english/runtime-types.html

    Previous discussion: https://news.ycombinator.com/item?id=31663298 - it's downright mindblowing that all this seems to be the work of primarily a single developer.

    For a less intrusive solution, https://github.com/jquense/yup is a great library to reach for whenever you're defining the shape of a network-transmitted object and don't want to introduce compilation stages.

What are some alternatives?

When comparing io-ts and marshal.ts you can also consider the following projects:

zod - TypeScript-first schema validation with static type inference

ts-jackson - A typescript library to deserialize and serialize json into classes. You can use different path pattern to resolve deeply nested structures. Every path pattern provided by lodash/get|set object is supported. Check out src/examples as a reference.

class-validator - Decorator-based property validation for classes.

Quarkus - Quarkus: Supersonic Subatomic Java.

openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)

new-error - Production-grade error creation and serialization library designed for Typescript

fp-ts - Functional programming in TypeScript

polka - A micro web server so fast, it'll make you dance! :dancers:

runtypes - Runtime validation for static types

FizzBuzz Enterprise Edition - FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.

joi - The most powerful data validation library for JS [Moved to: https://github.com/hapijs/joi]

Koa - Expressive middleware for node.js using ES2017 async functions