Announcing our partnership w/the incredible @MichaelArnaldi, creator of @EffectTS_ & founder of @EffectfulTech! @lennypruss & @reneeshah123 share more about how this is only the beginning of a movement that will redefine what’s possible for JS developers. amplifypartners.com/blog-posts/eff…
This Week in Effect - 2024-04-19
Hi Effecters!
Welcome back to a This Week In Effect (TWIE), our weekly update that aims to help you keep track of everything that is going on inside our Community and the Effect Ecosystem.
If it’s your first time here, Effect is a powerful TypeScript library designed to help developers create complex, synchronous, and asynchronous programs. One of the key features that sets Effect apart is how it leverages structured concurrency to provide features such as async cancellation and safe resource management, making it easier to build robust, scalable, and efficient programs.
To get started, below you’ll find links to our documentation as well as our guide for installing Effect. Enjoy!
If you’re new to TWIE, here are a few words on what TWIE is and what it aims for.
We’re happy to see the community growing so fast, with more and more people adopting Effect. At the same time, we understand that it might not be easy keeping up with everything that is going on in the Effect Ecosystem:
- Effect became API stable with the Effect 3.0 release.
- Our Discord server reached 2280+ members a few days ago and the engagement is at an all-time high.
- We’ve begun publishing the talks from Effect Days every week. Make sure you don’t miss any by subscribing to our YouTube channel.
- All projects around Effect are receiving key updates and there has been a lot of activity on GitHub!
We want to make it easy for you to find all the info you need to fully enjoy your Effect journey and actively engage with the community!
And, that’s why we created TWIE – a weekly update to inform you about key events about Effect in the previous week, both from the community (Discord discussions, X posts, YouTube content, etc.) and from a technical standpoint.
Now, back to business!
We can’t beat around the bush, so let’s get straight to the big news of the week: we have released Effect 3.0, and the core package of Effect is now stable. This release is the result of five years of hard work by our team, with the support of the community.
Starting with 3.0 the main package effect
will follow semantic versioning:
- major releases will include breaking changes
- minor releases will include new features and new modules
- patch releases will include bug fixes
Our commitment for the future is to also make the other Effect Ecosystem libraries stable.
Read the full Effect 3.0 announcement.
Now, let’s take a look to all the changes that occurred last week.
- Ensure correct value is passed to mapping function in mapAccum loop (Bug Fix)
- Change return type of Fiber.joinAll to return an array (Bug Fix)
- Fix UrlParams.makeUrl when globalThis.location is set to undefined (Bug Fix)
- Add FiberHandle module, for holding a reference to a running fiber (Feature, next-minor)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Skip running effects in FiberHandle/Map if not required (Improvement)
- Improve the typings of Array.isArray (Refactor)
- Re-enable provenance publishing (Feature)
- Added Stream.fromEventListener (Feature, next-minor)
- Add Effect.timeoutOption (Feature, next-minor)
- Add Match.withReturnType api (Feature)
- Move sqlfx/sql into the @effect/sql package (Feature)
- Disable provenance for sql packages (Bug Fix)
- Clean up sql Migrator modules (Refactor)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Add sqlfx migration notes to /sql (Improvement)
- Update sql.in examples in README (Documentation Update)
- Re-enable provenance publishing (Feature)
- Use op-sqlite for sqlite react native (Feature)
- Allow http handlers to be uninterruptible (Feature)
- Move uninterruptible to route option (Feature)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Allow fs.watch backend to be customized (Feature)
- Fix Command stdin being closed too early (Bug Fix)
- Add no-op FileSystem constructor for testing (Feature)
- Re-enable provenance publishing (Feature)
- Added Stream.fromEventListener (Feature, next-minor)
- Add Http.response.void helper, for creating an http request that returns void (Feature)
- Add more span attributes to http traces (Feature)
- Ensure context is available in rpc http stream (Feature)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Re-enable provenance publishing (Feature)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Re-enable provenance publishing (Feature)
- Update README for the typeclass package (Documentation Update)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Re-enable provenance publishing (Feature)
- Update @opentelemetry/* peer dependencies to ensure allowed versions include used import (Bug Fix)
- Add otel Resource.layerFromEnv, for constructing a resource from env variables (Feature)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Re-enable provenance publishing (Feature)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Re-enable provenance publishing (Feature)
- Re-export FastCheck (Bug Fix)
- Introduce LazyArbitrary and new make (Feature)
- Make AST.pick correctly handle key renames (Bug Fix)
- Schema: consolidate schema names (Refactor)
- Add instructions for running the codemod (Documentation Update)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Schema: add compose overloads to enable a subtyping relationship in both directions between C and B (Feature)
- Fix transformOrFail and transformOrFailFrom signatures in the exported Class interface by adding the missing annotations optional argument (Bug Fix)
- Schema: refactor test filenames to align with new naming conventions (Refactor)
- Schema: expand the Zod comparison section to include a list of code comparisons that can serve as a useful migration guide (Documentation Update)
- Re-enable provenance publishing (Feature)
- Schema: partial / required: add support for renaming property keys in property signature transformations (Bug Fix)
- Re-enable provenance publishing (Feature)
- Rename ReadonlyArray and ReadonlyRecord modules (Refactor)
- Re-enable provenance publishing (Feature)
- Add Effect 3.0 changeset
- Refine package descriptions
- Fix typo in AsyncFiberException
- Update devDependencies
- Remove leftovers
- Update intro video
- Use JSONC for code example language
- Bump pnpm version
In the last week, we welcomed +80 new Effecters to our Discord server! Thank you all for joining the Effect community, we’re excited to have you on board!
We’d like to remind our French-speaking members that the first Effect Paris Meetup, hosted by Evryg, will be on Tuesday, April 23, 2024, at 7 p.m.. Thanks again to the Evryg team, in particular Jean-Baptiste Musso and Antoine Coulon for organizing!
The release of Effect 3.0 and the incorporation of Effectful Technologies has sparked a wave of excitement within our community, with many of our longstanding partners and community members eager to share their enthusiasm for this announcement.
Amplify Partners led the Seed Round for Effectful Technologies – special thanks to Lenny Pruss and Renee Shah for their invaluable support. We’re looking forward to reshaping the future of programming together!
Jean-Baptiste Musso, co-founder of Evryg, and his team have been using Effect in production for 2 years now:
If you're using TypeScript in 2024, you should definitely have a look at Effect. It's stable and production ready. The leap is like going from callbacks to promises, and it's well worth it. effect.website
Effect is finally API Stable! Starting with 3.0 the main package will follow semantic versioning: → major releases will include breaking changes → minor releases will include new features and new modules → patch releases will include bug fixes
Attila Večerek, Tech Lead & Staff Engineer at Zendesk, has also been using Effect in production for 6 months:
Absolutely correct! Been using it in prod for the past 6 months and I can confidently say that I would use it again for a new TS project for sure.
Tobias Lins, Tech Lead of observability related tools at Vercel:
Kudos to the team! Major milestone for the future of TS backends
Effect is finally API Stable! Starting with 3.0 the main package will follow semantic versioning: → major releases will include breaking changes → minor releases will include new features and new modules → patch releases will include bug fixes
David Peter, founder of Type Driven:
While I see a lot of people whining about typescript and "going back to JS". We're doubling down on TypeScript this year. Not only we're going to release production ready examples to use @EffectTS_ in your daily work. We're going to do it primarily on @deno_land as a…
Federico Biccheddu, CTO @ Parcy:
One of the best library out there. Don't sleep on it! Changes the way you work and increases your productivity by A LOT. So happy to see this release 🤩
Effect is finally API Stable! Starting with 3.0 the main package will follow semantic versioning: → major releases will include breaking changes → minor releases will include new features and new modules → patch releases will include bug fixes
Paul Gray, author of Sift, Mock, CASA node.js:
Okay sick I can now rewrite my app for the last time! Thanks for all the work on this!
Effect is finally API Stable! Starting with 3.0 the main package will follow semantic versioning: → major releases will include breaking changes → minor releases will include new features and new modules → patch releases will include bug fixes
Petr Huřťák, Software Engineer at StoryBlok and Teacher at the Czech Technical University in Prague:
If you are developing apps in TypeScript you seriously need to check this. It is similar level of paradigma shift that React brought. And just like I cant image going back to developing FE apps without React, and Effect did the same to me for the JavaScript itself.
Effect is finally API Stable! Starting with 3.0 the main package will follow semantic versioning: → major releases will include breaking changes → minor releases will include new features and new modules → patch releases will include bug fixes
Moving on, Michael Arnaldi, author of Effect, will be giving a talk at the LambdaConf 2024 on May 6-7, 2024. If you’re around, feel free to drop by and say hello!
Don't miss @MichaelArnaldi's talk on Effect: A Functional Foundation For TypeScript at #LambdaConf2024! Explore the power of functional programming principles in creating a standard library for #TypeScript. Join Now: buff.ly/3wbaG7U
This week, Milad Vafaeifard dropped a valuable learning tip on how to use Effect. The video below shows how to improve the readability of the repository in your local compiler:
Effectively Reading / Learning Tip @EffectTS_ @GitHub youtube.com/shorts/gzabKBe…
That’s all for this week. Thank you for being a vital part of our community. Your feedback is highly valued as we fine-tune this new format. Feel free to share your thoughts, and we’ll do our best to tailor it to the needs of our community.
The Effect Community Team