I just checked and it looks like the problem with the lower case component names is gone (custom components would result in different code than a standard component created with jsx.component). All components have upper case names now.
There was another problem with switch statements and solidjs signals. Here, the resulting code is slightly different (the curry._1 call is gone, which is to be expected since the change to uncurried), but the resulting code still contains an additional variable assignment that breaks reactivity:
@react.component
let make = () => {
let maybe = createSignal(Some("option"))
<div>
{
switch maybe() {
| Some(m) => m
| _ => ""
}->React.string
}
</div>
}
compiled code:
function Broken(props) {
let maybe = SolidJs.createSignal("option");
let m = maybe();
return <div>
{m !== undefined ? m : ""}
</div>;
}
The problematic part: let m = maybe();.
But I am not sure this can be “fixed” (from a solidjs perspective), since, from the compilers perspective, it is a meaningful optimization and it totally makes sense to do it.
And, as you already pointed out in another post: There is a perfectly usable workaround available, by using the <For>, <If>, <Show> components provided by solid.
So all in all I would say, we only need to solve the very first problem with let newrecord = {...props}; and everything should be fine.