---
robots: noindex, nofollow
tags: pitch
---
For instructions on shaping a project see here: [Shaping a Project](/kX02SXVbS6KzMOQd56i6Cg)
# Component Native Eventing Convergence
:snail:
### Problem
*From: [Problem guidance](https://basecamp.com/shapeup/1.5-chapter-06#ingredient-1-problem)*
Fabric Slider, ColorRectangle, and ColorSlider are some of the last simple components that relies on `EventGroup` which has been targeted for removal. `EventGroup` adds unnecessary cycles to event handling.
### Appetite
*From: [Appetite guidance](https://basecamp.com/shapeup/1.5-chapter-06#ingredient-2-appetite)*
1 weeks. The chosen components only have a few places where event group is used
### Solution
Event group should be replaced wit the native javascript `on` in Slider, ColorRectangle, and ColorSlider. For reference, there are several components that already use an array functions (`disposables`) and `on` to achieve the desired behavior.
```typescript=
class ... {
private _disposables: (() => void)[] = [];
componentDidMount() {
this._disposables.push(on(
window,
'scroll',
this.scrollCallback,
true)
);
}
componentWillUnmount(){
this._disposables.foreach((dispose: () => void) => dispose());
}
}
```
### Risks (Rabbit holes)
*From: [Rabbit hole guidance](https://basecamp.com/shapeup/1.5-chapter-06#ingredient-4-rabbit-holes)*
This has been tried before as detailed in [this document](https://hackmd.io/@cmH-jXYESEOtfKAsIDzYZA/rJxwQkeP8). There were other circumstances and different libraries used that made it seem like we could try again.
### Out of scope (No-gos)
*From: [No-gos guidance](https://basecamp.com/shapeup/1.5-chapter-06#ingredient-5-no-gos)*
This does not need to remove EventGroup everywhere yet