Skip to content

Releases: UnSetSoft/Ryunixjs

v1.2.4

18 Dec 20:57
326ea6e

Choose a tag to compare

What's Changed

Full Changelog: v1.2.2...v1.2.4

v1.2.3-canary.11

16 Dec 05:19
d1c820b

Choose a tag to compare

v1.2.3-canary.11 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: https://github.com/UnSetSoft/Ryunixjs/commits/v1.2.3-canary.11

v1.2.3-canary.1

14 Dec 20:38

Choose a tag to compare

v1.2.3-canary.1 Pre-release
Pre-release

v1.2.3-canary.0

14 Dec 06:57

Choose a tag to compare

v1.2.3-canary.0 Pre-release
Pre-release

Ryunix Framework - Major Improvements

🐛 Critical Bug Fixes

  • useReducer double processing: Fixed state updates incrementing by 2 instead of 1
  • Memory leaks: Effect cleanup now properly clears references
  • Props validation: Fixed props is undefined errors in createElement
  • Component rendering: Fixed broken sibling chains causing missing components

🔄 Core Architecture

  • State management: Replaced global mutable vars with getState()/resetState()
  • Test isolation: Tests now fully isolated with state resets
  • Error handling: Added try-catch blocks throughout critical operations
  • Type safety: Added runtime type checking utilities (is.object, is.function, etc.)

✨ New Features (Beta)

  • memo(): Component memoization to prevent unnecessary re-renders
  • lazy() & Suspense: Code splitting and lazy component loading
  • batchUpdates(): Group multiple state updates into single render

🎨 SSG Improvements

  • Auto-extraction: Routes automatically extracted from routes.ryx via webpack plugin
  • Per-route metadata: SEO, Open Graph, Twitter Cards per route
  • robots.txt: Automatic generation
  • Enhanced sitemap: Granular control with changefreq/priority per route
  • Smart prerendering: Skips dynamic routes (:param) and 404s automatically

📁 File Structure

packages/ryunix/src/
├── utils/index.js (getState, resetState, type utils)
├── lib/
│   ├── createElement.js (improved validation)
│   ├── hooks.js (fixed useReducer, added routing hooks)
│   ├── effects.js (memory leak fixes)
│   ├── dom.js (better error handling)
│   ├── components.js (null handling)
│   ├── reconciler.js (fixed sibling chains)
│   ├── commits.js (error handling)
│   ├── workers.js (try-catch)
│   ├── render.js (validation)
│   ├── memo.js (NEW)
│   ├── lazy.js (NEW)
│   └── batching.js (NEW)

packages/ryunix-presets/webpack/
├── utils/
│   ├── ssg.mjs (NEW - SSG utilities)
│   └── RyunixRoutesPlugin.mjs (NEW - auto route extraction)
└── bin/prerender.mjs (rewritten for auto-extraction)

📝 Usage Examples

Memo:

const MemoizedComponent = memo(ExpensiveComponent)

Batching:

batchUpdates(() => {
  setCount(c => c + 1)
  setName('New')
  setActive(true)
})

Lazy Loading:

const Heavy = lazy(() => import('./Heavy'))
<Suspense fallback={<div>Loading...</div>}>
  <Heavy />
</Suspense>

SSG Routes:

const routes = [
  { 
    path: "/", 
    component: Home,
    meta: { title: "Home", description: "..." },
    sitemap: { priority: "1.0" }
  }
]

⚠️ Breaking Changes

None - All changes are backward compatible

🔧 Migration Guide

  1. Replace 7 core files in packages/ryunix/src/lib/
  2. Add utils-index.js to packages/ryunix/src/utils/
  3. Add SSG files to packages/ryunix-presets/webpack/
  4. Optional: Add new features (memo, lazy, batching)

What's Changed

Full Changelog: v1.2.0-canary.69...v1.2.3-canary.0

v1.2.2

29 Oct 22:27
4925d59

Choose a tag to compare

What's Changed

Full Changelog: v1.2.1...v1.2.2

v1.2.1

26 Jul 06:48
8b022e9

Choose a tag to compare

What's Changed

Full Changelog: v1.1.37...v1.2.1

v1.2.0-canary.69

25 Jul 08:06
5a880e2

Choose a tag to compare

v1.2.0-canary.69 Pre-release
Pre-release

Chages

  • added eslint
  • added lint and lint fix
  • refactor experimental.ssg
  • eslint updated

Issues


v1.1.38

24 Jun 05:48
ab2e1e7

Choose a tag to compare

What's Changed

Full Changelog: 1.1.37...v1.1.38

v1.1.37

11 Jun 07:06
f01701b

Choose a tag to compare

What's Changed

Full Changelog: v1.1.21...1.1.37

v1.1.21

11 Jun 02:04
cc5c806

Choose a tag to compare

Chages

  • added back and next support for router navigation
  • added isActive in Navigation link ryunix-class={({ isActive }) => isActive ? "active" : "" }

Issues

  • fixed back and next
  • fixed className is not defined in NavLink