Skip to main content

v0.3.0 has released!

· 3 min read
Mia Gobble
Seam Creator

Version 0.3.0 of Seam is here! Included in this update is:

  • Removal of From and DeclareComponent, revamp of components system
  • Removal of preset components
  • Addition of GetValue
  • Improvements to the backend
  • Fixes to race conditions
  • Fixes to crashes and infinite loops
  • And an insane number of other fixes

This version, to put it generously, is a huge step up for Seam. Many of these fixes and changes come from internal feedback sourcing from people that used it in production! I worked closely with these developers to get a dev branch stable and working that meets their needs -- and that dev branch is now the publicly released version v0.3.0.

Revamped component system

The biggest change to Seam was the complete rethinking of the way components worked. Previously, there was a race condition to declare components, store them memory, and then use them with From. This approach was also super limited and unintuitive. Now, you create instances of components by passing the component module directly into New, giving you more control. As a bonus, these new components are object-oriented!

I got a ton of feedback regarding components from both @3_F7 and @HappySunChild, with the former developer testing my approach and approving it. You can take a look at how components work by reading the API for New and Component!

In summary, components now work like this:

  • Create the component module, containing Init and Construct methods, as well as any others you optionally want
  • Return Component(Module), instead of just Module
  • Pass in that module to the first parameter of New, and make the properties whatever you would like (they are custom, not directly applied)

I also removed preset components from Seam because, well, they feel like bloat. I would rather leave component creation to the developers and the community, who can do it much better than I can.

Addition of GetValue

GetValue is an added declaration that allows you to read any value, including states.

In this example,

local MyValue = Value(5)

local X = GetValue(5)
local Y = GetValue(MyValue)

X and Y are both 5. This is a great thing to try if your code may or may not have a state, but you need a value to work with.

Fixed many, many bugs

I fixed a ton of bugs, and had a headache doing so (you can probably tell if you look at the commit messages, lol).

A summary of fixed bugs include:

  • Fixed a C-stack overflow caused by adverse state interactions
  • Critical fix for boolean value states
  • Typechecking fixes
  • Fixes to the way tables in values worked, including a fix to how they wouldn't update
  • Rendered is now properly declared as Rendered behind the scenes, not Computed
  • Addition of Value.ValueRaw for cases that need it (since Value.Value got tons of changes for tables)
  • Fixed signal triggers not triggering when using table.insert on value's value.
  • Fixed critical issues with animation states that could cause insane lag or bugs
  • Fixed an edge-case error that was caused by declaring children improperly
  • Updated the way compute states calculate values, preventing edge-case issues
  • And more small stuff!

Seam's development philsophy remains unchanged

Seam is intended to be an improvement compared to existing UI frameworks, not a headache; this means community feedback will drive the direction of the library, and comes first for considerations on changes.

A large handful of developers were important to providing feedback to influence these changes, so my gratitude goes out to all of you!

That's all folks, enjoy a more stable and awesome Seam! :3