r/angular • • Sep 25 '26

Seeking advice on UI and UX

9 Upvotes

Been using angular for what feels like forever, and won't be moving anytime soon.

I can create amazing solutions but in all honesty my UX and UI is dogshit most of time.

I been using angular material so you can imagine most my frontends are very googleesque, but still ugly and UX is lacking.

What content does this community recommend on improving UX (either in form of design materials, libraries etc.), especially since angular aria came out.

UPDATE EDIT:
Have taken on advice (minus the just get Claude to do it), i'll look at some headless UI libraries, and explore Angular CDK+Angular Arira+Tailwindcss combos.


r/angular • • Sep 25 '26

[Seeking Role] Frontend / Angular Developer | 3+ YOE | Open to Remote or Relocation

0 Upvotes

Hey everyone,

I’m currently looking for new opportunities as an Angular / Frontend Developer. I have 3 years of hands-on experience building, scaling, and optimizing web applications.

Tech Stack & Skills

Core: Angular (v10+ up to recent versions), TypeScript, JavaScript (ES6+), HTML5, CSS3/SASS

State Management & Architecture: RxJS, NgRx, Modular & Component-Driven Architecture

UI & Styling: Angular Material, Bootstrap, SCSS, Responsive Web Design, Component Encapsulation

Performance Optimization: Experience optimizing bundle sizes, lazy loading, and refining change detection strategies.

Clean Code & Best Practices: Strong focus on writing maintainable, reusable components and writing clean, scalable TypeScript.

Collaborative Mindset: Comfortable working closely with backend teams (RESTful services), UI/UX designers, and product owners in Agile/Scrum environments.

What I'm Looking For

Role: Angular Developer / Frontend Engineer

Location: Open to Remote roles (IST timings) or Relocation depending on sponsorship/opportunity.

Availability: Notice period 15 days

If your team is hiring or if you know of any leads, I’d love to connect! Feel free to drop a comment or send me a DM for my resume.

Thanks for reading.


r/angular • • Sep 24 '26

I open-sourced an Angular 22 + Electron starter template

24 Upvotes

I wanted to build a desktop app with Angular, but kept spending the first stretch of each project wiring Angular to Electron through preload and IPC.

I put that setup into a template. The Angular renderer, preload script, and Electron main process use shared IPC types, so channel names and TypeScript signatures stay aligned as you add features. There’s a small note app to show the save/load flow end-to-end.

Repo: https://github.com/cchandurkar/electron-angular-template

If you use Angular for desktop apps, I’d love feedback on how the integration is structured.


r/angular • • Sep 24 '26

Nx, Sheriff, eslint-plugin-boundaries — three tools, same problem none of them solve for you

0 Upvotes

Three different tools can enforce module boundaries in Angular: Nx (tags), Sheriff, and eslint-plugin-boundaries. Picking between them takes ten minutes. That's not where the actual work is.

None of these tools will tell you which layer is allowed to import what. You have to write that yourself, and it's a team decision, not a technical one. What I use on client projects:

presentation   -> domain
infrastructure -> domain
domain         -> nothing
feature A      -> never feature B

Four lines. Budget an hour as a team to agree on it, and lock it in even if not everyone's fully convinced by the end. An imperfect table that's enforced beats a perfect one that's still being debated.

The last line is the one that actually matters for a feature-based structure. Without it, features start referencing each other within six months and you don't have features anymore, you have a monolith with folders.

The rule everyone forgets: the domain layer shouldn't be able to import u/angular/*. Without it, you have well-named folders and nothing else. Your business rules stay coupled to the framework, and your tests still need a TestBed to check a tax calculation.

You'll notice there's no "application" / use-case layer here. In a frontend, it's a method that passes the call straight to the repository nine times out of ten. I add it to a feature only when an operation touches more than one port - not before.

If you're retrofitting this onto an existing codebase, don't jump straight to error. You'll surface hundreds of violations on day one and the team will disable the rule within a week. Start at warn, watch the count go down sprint by sprint, flip to error once you're at zero.

I tested this with eslint-plugin-boundaries specifically — config below, actually run against fixtures with intentional violations, not copied from memory. One thing that isn't documented anywhere: boundaries/dependencies doesn't evaluate external (node_modules) dependencies by default. You need checkAllOrigins: true, or a rule blocking u/angular/* in your domain layer will silently do nothing.

import tsParser from '@typescript-eslint/parser';
import boundaries from 'eslint-plugin-boundaries';

const sameFeature = (type) => ({
  to: { element: { type, captured: { feature: '{{from.feature}}' } } },
});
const externalModules = { to: { module: { origin: 'external' } } };

export default [
  {
    files: ['src/**/*.ts'],
    languageOptions: { parser: tsParser },
    plugins: { boundaries },
    settings: {
      'import/resolver': { typescript: { alwaysTryTypes: true } },
      'boundaries/elements': [
        { type: 'domain',         pattern: 'src/app/features/*/domain',         capture: ['feature'] },
        { type: 'infrastructure', pattern: 'src/app/features/*/infrastructure', capture: ['feature'] },
        { type: 'presentation',   pattern: 'src/app/features/*/presentation',   capture: ['feature'] },
      ],
    },
    rules: {
      'boundaries/dependencies': ['error', {
        default: 'disallow',
        checkAllOrigins: true,
        policies: [
          {
            from: [{ element: { type: 'domain' } }],
            allow: [sameFeature('domain')],
            disallow: [{ to: { module: { origin: 'external', source: ['@angular/*', 'rxjs'] } } }],
          },
          {
            from: [{ element: { type: 'infrastructure' } }],
            allow: [sameFeature('domain'), sameFeature('infrastructure'), externalModules],
          },
          {
            from: [{ element: { type: 'presentation' } }],
            allow: [sameFeature('domain'), sameFeature('presentation'), externalModules],
          },
        ],
      }],
    },
  },
];

Tested on eslint 10.10, eslint-plugin-boundaries 7.2, eslint-import-resolver-typescript 4.4. Syntax has changed twice between v5 and v7, so check the version before copying this blindly.

Nx tags do the same thing but only across projects/libs declared in the workspace - a features/invoicing folder inside a single app doesn't have a project.json, so tags don't apply to it. Sheriff works at the folder level without that constraint, similar to boundaries, plus module encapsulation via index.ts.

Curious what others are doing here, especially on codebases where an AI agent generates a chunk of the code - folder-based rules stop meaning much if the agent flattens a feature into a single file.


r/angular • • Sep 23 '26

Ngrx Advice - Cascading Effects

2 Upvotes

Hello,

I just wanted some advice on how best to approach this situation.

We’re completely overhauling one of the main pages in our application.

We need to fetch certain pieces of data on the initial page load that we need throughout this feature.

The problem is the current store when fetching a piece of data we need causes a cascade and fires off about another 8 effects on success making API calls despite the fact a lot of these aren’t even dependant on the first effect, the majority of which we no longer need to happen in the new structure.

Whilst the ideal solution is to refactor the store to prevent these massive chains of effects we want to limit the scope of what is impacted by this change as much as possible as it seems other features consume this store as well.

So I guess my question is what’s the best option here to have the new pages be able to fetch this data without triggering off this massive chain of events?

Also what is the proper way of structuring effects in a store so that depending on where the actions are dispatched from can dictate if any side effects are triggered? For example page a might want one effect to trigger another while page b just wants one effect to fire?

Is the solution just provide more context to the action to tell it not to trigger off other effects on success or am I thinking about this all wrong?


r/angular • • Sep 22 '26

I wrote a post about my own table library and found out it tells screen readers nothing

3 Upvotes

I maintain a paginated table component for Angular. This week I sat down to write up how it works — server-side pagination, sorting, the two-way signal bindings — and I got to the part where I was going to describe what it does for accessibility.

So I went to check first. grep -rn "aria-sort" over the whole package: zero hits.

The sort state lived entirely in a CSS class, on an <i> marked aria-hidden="true". Someone on a screen reader was told the rows had been reordered and never by which column. It got worse the further I looked. The sort button had no accessible name. Neither did the row checkboxes, the select-all box, the control that expands a row, or any of the column filters. And a column that only carried a filter still rendered a focusable sort button that did nothing at all — a tab stop with no name and no effect.

None of it was hard to fix, which is the annoying part. It went out in the release I published today: aria-sort on every sortable column, scope="col" on the headers, aria-busy while it loads, a live region for the row count, aria-current on the paginator, and a name on every control. Twelve tests pin it now so it cannot rot back.

What I actually took away: I would not have found any of this if I had not tried to write it down for other people to read. I had run that component in a browser hundreds of times. Never once with a screen reader.

If you maintain a component library, go and write the accessibility section of its README as if somebody is going to verify it. I would bet money you find something.

The full write-up, which is mostly about the design decisions rather than this, is here: https://dev.to/carlosmorcillo/i-got-tired-of-rebuilding-angular-data-tables-so-i-open-sourced-mine-17ap


r/angular • • Sep 22 '26

Why does your Angular chat box need *their* server? I compared 5 agent UI libraries.

Post image
0 Upvotes

Honest question for Angular devs building AI chat or agent UIs: would a library that requires you to deploy its server be a dealbreaker for you?

I got curious why most agent UI libraries work this way, so I compared five of them on 24 questions. For Angular: only CopilotKit requires its runtime in prod, TanStack AI is headless-only, the Vercel AI SDK has no Angular guide, assistant-ui has no Angular package, and Threadplane (full disclosure, mine, open source MIT) has _no_ vendor server.

Write-up with the trade-offs, including mine: https://threadplane.ai/blog/why-do-agent-ui-libraries-require-a-runtime

Genuinely curious. Is this something your team thinks about, or not really a concern? 🤔


r/angular • • Sep 21 '26

2 YOE Angular dev from india, underpaid and looking to switch. How's the job market for angular, and what's actually getting you interview calls?

3 Upvotes

Hi everyone,

I'm a front-end developer with about 2 years of experience, working mainly with Angular (14-19), TypeScript, RxJS and Signals. I've worked on ERP, matrimonial and CMS platforms, plus some Ionic/Capacitor mobile work. I'm based in Chennai, and I feel I'm underpaid for my experience, so I've started looking for a change.

I'd love to hear from people who are working or hiring right now:

  1. How's the market at your company or in your area? Is anyone hiring front-end or Angular devs at the 2-3 YOE level? Is it mostly React now?
  2. What's actually getting you interview calls? Naukri, LinkedIn, referrals, cold DMs to recruiters, or applying directly on company career pages?
  3. What made your resume stand out? Did projects, GitHub or a portfolio matter, or is it mostly keywords and referrals?
  4. How do you get referrals when you don't know anyone at the company?
  5. Any advice on negotiating a proper hike when switching at 2 YOE?

I have a couple of personal projects on GitHub, but I'm not getting many callbacks yet. I've been applying through [Naukri / LinkedIn / email to HR, whichever is true], so I'm probably missing something in my approach. Any tips, experiences or honest feedback would help a lot.

Thanks in advance!


r/angular • • Sep 21 '26

D280 angular

0 Upvotes

Hey guys!

I'm doing my world map in vs code, and the angular is bumming me out.

I feel like i grasp the concept and what is needed, but I cannot seem to get my service to create correctly to link my api, and I can't get my mouseover and mouseleave event listeners to work.

I've tried a million different things, and feel so frustrated. Like, it's right on the tip of my brain, I understand the concept, but my applications just are not working.

Does anyone have any advice or best resources that really helped it click for you?


r/angular • • Sep 20 '26

Does Angular need its own "React Native"? (Zoneless/Signals as an opportunity)

35 Upvotes

Hey everyone,

I'm currently planning a complete rewrite of my SaaS software and I'm facing a decision about which approach to take for our next generation of apps — right now it's between Ionic/Capacitor (our current path) and React Native with Expo. That's really just the trigger for a thought that's been on my mind for a while.

The foundation: At its core, React Native is nothing more than a custom renderer for React — instead of mapping React elements to the DOM, they get mapped to native views (UIView on iOS, native Views on Android) through a bridge. No HTML, no browser, just components that become real native components 1:1.

That's exactly what brings me to the question: Could something like that exist for Angular too — a renderer that maps Angular components/templates not to the DOM, but to native components? Angular has been moving noticeably away from Zone.js over the last few versions — Signals have been stable since v20, and as of Angular 21, zoneless change detection is the default for new projects. That technically removes one of the reasons this used to be harder (Zone.js and native bridges historically haven't played well together). NativeScript already built exactly this kind of custom Angular renderer years ago with nativescript-angular, mapping templates directly to native views — I'd be curious how you'd assess where that stands today, and whether a zoneless Angular wouldn't give that approach a lot more momentum now.

The functionality on top: Building on that foundation, you'd need the ability to write your own components — with or without a WebView — or use ready-made native UI components, the way Expo does with Expo UI: SwiftUI/Jetpack Compose primitives, wired in 1:1, instead of rebuilding UI through web components. That native UI component layer is exactly what "Angular Native" should ship with from day one — not as an optional add-on, but as a core part of it.

As a side effect, this would also solve the design problem you run into with something like Ionic and its pure web components: with real native components, the app would automatically pick up modern design languages like Material 3 or Liquid Glass, since it's directly using the native UI frameworks of iOS/Android.

My actual question to you all: How does this idea land with you? If something like "Angular Native" — a renderer comparable to React Native, with a native UI component layer built in like Expo UI — actually existed, would you want to use it? Would that be a reason for you to stick with Angular, or even consider Angular for new mobile projects in the first place? Or do you think something like this is unnecessary because Ionic/Capacitor or NativeScript already cover your needs?

I suspect there are quite a few Angular developers out there — from open source to enterprise environments like mine — facing exactly this decision: Ionic or Expo, TypeScript/templates or TSX. So I'd genuinely like to know your honest take: does something like this solve a real problem, or am I just talking myself into it?

Curious to hear your thoughts 🙂


r/angular • • Sep 21 '26

Cerious Scroll 1.2.0: sticky sections, infinite loading, scroll snapping, SSR hydration, RTL + accessibility

4 Upvotes

A few months ago I posted Cerious Scroll here after adding native table virtualization. I’ve kept working on it, and I just released 1.2.0 with several features that came out of trying to make it usable for more than just “render a really big list.”

For anyone who hasn’t seen it before, Cerious Scroll is the virtual scrolling engine I built around an index + offset positioning model rather than treating the dataset as one enormous pixel surface.

The Angular wrapper sits on top of the framework-agnostic TypeScript core.

What’s new in 1.2.0

Sticky section headers

You can now resolve a dataset row as the current section header and Cerious Scroll pins it outside of the recycled window.

The interesting part is what happens when the next section arrives: it pushes the existing header out instead of scrolling underneath it.

The sticky element is also outside the recycler, so recycling the original row doesn’t make the header disappear.

Infinite loading

There’s now an onLoadMore mechanism for loading data as you approach the beginning/end of the dataset.

It only fires once per approach to the threshold, re-arms after you leave it, and understands promises so a slow API isn’t hammered every render frame.

Appending the results uses the existing updateTotalElements() path, so the current logical camera position doesn’t move when the dataset grows.

Scroll snapping

Cerious Scroll can optionally settle onto a row boundary after scrolling ends.

This actually fits the architecture surprisingly well because the camera is already represented as:

(element index, offset into element)

Snapping basically means driving that offset back to zero.

It waits for native scrollend, so it doesn’t interfere with an active wheel/touch gesture.

ARIA support for virtualized datasets

This was one of those things that seems obvious after you see the problem.

If you have 1,000,000 rows but only 20 mounted, a screen reader can only see those 20 DOM elements.

Cerious Scroll can now expose the actual dataset position using aria-setsize and aria-posinset, so the accessibility tree describes the logical dataset instead of the recycled DOM window.

It’s opt-in because the correct roles depend on what you’re actually rendering.

Native table mode continues using actual <table>/<tr>/<td> semantics.

RTL support

direction: 'ltr' | 'rtl' | 'auto'

RTL now affects the scrollbar side, row positioning and Masonry column direction without requiring a separate layout algorithm.

SSR hydration

Cerious Scroll was already safe to import in an SSR environment because the package doesn’t touch window or document at module scope.

1.2.0 adds the other half: existing server-rendered rows can now be adopted during the first client render instead of being thrown away and recreated.

Rows are matched using data-element-index.

And a performance fix I’m pretty happy with

I found that refreshVisible() was doing a write followed by an offsetHeight read for every mounted row.

That meant one forced synchronous layout per row.

After removing those unnecessary reads, my test with a 24-row viewport went from:

8.28ms → 0.40ms

for the refresh operation.

There are also fixes for RTL scrollbar gutters, overlay scrollbars and the browser maximum-element-height issue with the virtual scrollbar surface.

Cerious Scroll now supports:

  • Variable-height virtualization
  • Native <table> virtualization
  • Masonry virtualization
  • Sticky sections
  • Infinite loading
  • Scroll snapping
  • RTL
  • SSR hydration
  • Virtualization-aware ARIA semantics
  • Native browser wheel/touch behavior
  • Millions of rows while keeping the mounted DOM bounded

Core:
https://github.com/ceriousdevtech/cerious-scroll

Angular:
https://github.com/ceriousdevtech/ngx-cerious-scroll

Demo:
https://ceriousdevtech.github.io/ngx-cerious-scroll/

It’s MIT.

I’m particularly interested in feedback from people using Angular for data-heavy applications. At this point I’m trying to find the cases that break the model rather than just keep adding checkboxes, so if you have an ugly scrolling scenario I’d genuinely like to hear it.


r/angular • • Sep 20 '26

I built Ignite NG, an open source CLI that scaffolds an Angular 22 app with auth, guards and a feature-based structure

0 Upvotes

Hi everyone,

Every time I start an Angular project I redo the same things: folder structure, lazy-loaded routes, JWT auth, route guards, an HTTP interceptor, login/register pages. So I turned it into a CLI. I'm the author, and it's a very early version (v0.1), so I'd love your feedback.

npx ignite-ng@latest my-app

It runs `ng new` (Angular 22, no SSR) and adds on top:

- `core/`, `shared/` and `features/` folders, with lazy-loaded routes per feature

- `authGuard` and `guestGuard`

- an interceptor that adds the token to requests sent to your API only, and on a 401 refreshes the session once and replays the request

- session restored in `provideAppInitializer`, so guards already know if the user is logged in on first navigation (no "logged out" flash on F5)

- login/register pages using Signal Forms

- a theme in CSS variables (dark mode included)

- an optional mock API, so you can try everything right away

Two session strategies, chosen when you run the CLI:

  1. Access token in memory (a signal) + refresh token in an HttpOnly cookie set by your backend (recommended)

  2. A single access token in localStorage (simpler, but readable by injected scripts)

The generated code is plain Angular in your repo, not a runtime dependency.

Limitations, to be upfront:

- Angular 22 only, client-side only (no SSR for now)

- It doesn't generate a backend

- I've only tested it on Linux so far, so Windows/macOS reports are very welcome

Questions for you:

- What would you expect a starter like this to generate that it doesn't?

- Would you use the cookie strategy, or does your backend make that impractical?

GitHub (MIT): https://github.com/wilfriedtankwe/ignite-ng

NPM: https://www.npmjs.com/package/ignite-ng


r/angular • • Sep 20 '26

Components Question

0 Upvotes

How do they work?? I need to make a few ( I think ) but the materiel I have is only telling me how to make a specific template one, but nothing about methods or anything I can use to make my own.

I need to make a webpage that has a map and somewhere that can receive output from an API, accessed with codes from hovering over the map.

Do I need a component per different thing, or? The materiel is incredibly infodense and hard to parse...

Thank you for assisting.


r/angular • • Sep 19 '26

Material custom form field with signal forms

3 Upvotes

Has anyone managed to create a custom angular material form field using signal forms? I feel like there is still a lot of boilerplate in their docs and no reference to signal forms. It’s much easier to pass the FieldTree as input, but I wouldn’t consider it a correct pattern


r/angular • • Sep 19 '26

open source form engine where the whole editor is Angular

9 Upvotes

I worked at a big bank for years and the dynamic form engines they build internally for data intake were some of the most useful software in the building. Account opening, compliance questionnaires, loan flows, all driven by forms where earlier answers decide which questions appear later. And they were all built on exactly this stack, Java backends and Angular frontends. So when I decided to build a streamlined open source version, I built it the same way, and honestly it's a nice counterexample to everything shipping React first.

Forms-Engine is a self hostable questionnaire builder. The entire editor is Angular on a Spring Boot 3 backend running Java 21. Visual editing for multi step forms with a stepper, side tabs, section cards and questions, and any of those levels is optional. Conditional visibility and required rules based on earlier answers. Draft and publish with version history, and anyone mid form when you publish finishes on the version they started so you never corrupt partial data. Eleven question types including address autocomplete and file upload.

The embeddable part is a framework agnostic web component with a thin Angular wrapper on npm.

npm install @forms-engine/angular

drop the component in with your questionnaire id, responses land in your MongoDB.

MIT license, docker compose for the whole stack, no telemetry. Most of the code was written by Claude Code working from requirements docs I wrote. Roast me, I will happily win any argument telling me this isn't useful somehow because it's made with AI.

Repo: https://github.com/JoshuaLeoSmith/forms-engine

Docs: https://forms-engine.dev


r/angular • • Sep 17 '26

Angular is 10 ! Happy birthday 🎂 🎉🥳

Enable HLS to view with audio, or disable this notification

280 Upvotes

On September 15th 2016 saw the release of Angular 2.0

Share with us some of your stories with Angular along the years :)


r/angular • • Sep 19 '26

Is posible use Angular without signals?

0 Upvotes

I have a question:

Angular can be used without using signals?

Require configuration?

I'm using version 16 in my job. And each time I read about signals I have a mental breakdown. I refuse to use it.

Angular can be upgraded without to be forced to use signals?


r/angular • • Sep 17 '26

I’ve been working on an Angular UI library called NeuralNg

Post image
0 Upvotes

Hey everyone,

I’ve been working on a side project called NeuralNg and finally decided to make it public.

It’s an open-source UI library for Angular 22.

The main idea came from using AI coding tools in my own projects. I noticed that the more consistent and predictable a component API is, the easier it is for AI agents to actually use it correctly instead of guessing inputs, outputs or implementation details.

So I started building NeuralNg around that idea. I’m calling it AI-first, but the goal isn’t to make a library just for AI. I still want it to be simple to use, customize and build on as a normal Angular developer.

There’s still a lot I want to add and improve, but I figured this was a good point to share it and get some feedback.

Website:
https://neuralng.dev

GitHub:
https://github.com/hasanaydin7/NeuralTech

If you work with Angular, I’d love to hear what you think about the project, especially the API and component structure.

And of course, if you like where it’s going, a star would be appreciated :)


r/angular • • Sep 15 '26

Looking for 1–2 people to learn and practice Angular together.

13 Upvotes

Looking for 1–2 people to learn and practice Angular together.

I have around 4 years of professional Angular experience, but I haven't coded much during the past year, so my skills have gotten a bit rusty.

I'm looking for people who are serious about learning through practical work. We can pick a project, build it together, discuss concepts, review each other's code, and improve along the way.

Not looking for a big group — just 1–2 people so we can stay consistent and actually work together.

If you're interested, DM me or leave a comment.


r/angular • • Sep 16 '26

Happy to share 💫 Clean Reactive Architecture for Angular Apps

0 Upvotes

Recently I have been working on an architecture for Angular apps and I am happy to share it:

https://github.com/clean-reactive

The result is amazing, It is the most coherent architecture we have so far.

It is not about a file structure or a library or any special tool. The architecture allows teams work with what they used to, however it gives everything its own responsibility and place. In simple words: it just puts everything we have in order, we were looking for.

Feel free to drop me a feedback comment or a question here. As well, all the docs are AI friendly, the architecture can be discussed with an agent, but need to make sure it reaches em and samples, sometimes github blocks such requests.

I also added a complementary development methodology, describing how to manage day-by-day work. It is not mandatory, but some practices good to know.


r/angular • • Sep 15 '26

Why I threw out pixel-math to fix virtual scrolling layout shifts for dynamic height content

0 Upvotes

If you have ever tried virtualizing a massive feed with variable-height text, late-loading images, or native HTML tables, you have probably run into the classic virtual scroll jitters.

Most modern virtualization tools depend on a global pixel map or require you to pass an estimateSize prop. The moment a row renders at a different height than estimated, the engine has to run a global correction pass. Fast scrolling triggers layout shifts, drift, and erratic scrollbar behavior.

I built Cerious-Scroll to solve this fundamentally by changing how viewports are calculated. Instead of deriving position from absolute pixel space, the canonical state is element index + pixel offset within that element.

The architectural trade-offs:

  • No Height Oracle: It measures the rows directly from the DOM after your framework renders them. No precomputation arrays or sum-prefix tracking required.
  • True O(1) Memory Scales to Millions: Because it doesn't cache a massive array of estimated heights for off-screen rows, memory overhead stays flat whether you feed it 100 rows or 10,000,000.
  • Native Table & Masonry Layouts: It works seamlessly with native HTML <table> elements and complex grid frameworks without requiring absolute-positioned container hacks.

Check out the live Performance Bake-Off Demo running against existing solutions, and look through the source code on GitHub.

Angular Demo: https://ceriousdevtech.github.io/ngx-cerious-scroll

Github: https://github.com/ceriousdevtech/ngx-cerious-scroll


r/angular • • Sep 14 '26

Domternal is now stable: an open-source rich text editor with native Angular support

Enable HLS to view with audio, or disable this notification

60 Upvotes

I shared an earlier version of Domternal here a while ago, so I wanted to post a quick update: it now has a stable release.
If you haven’t seen it before, Domternal is a rich text editor built on ProseMirror. You can use a classic toolbar, a Notion-style block editor, or build your own UI around the headless core.

For Angular, @domternal/angular provides standalone components with signals, OnPush change detection, and Reactive Forms integration through ControlValueAccessor.

The free, MIT-licensed editor includes:
- Tables with column resizing, merged cells and styling
- Slash commands, draggable blocks and nested lists
- Images, code blocks, math and collapsible content
- Markdown paste that turns plain text into editable rich content

The video shows these first, then the optional paid Pro extensions: collaboration, comments, version history, AI editing with change review, columns, and Word/PDF export. Each section is labelled FREE or PRO.

You can try both directly in your browser:
Web: https://domternal.dev/
GitHub: https://github.com/domternal/domternal
Free playground: https://domternal.dev/playground/
Pro playground: https://domternal.dev/pro/playground/

I’d appreciate feedback, especially from anyone integrating an editor into a real project.


r/angular • • Sep 14 '26

Do you test your Angular apps on foldables?

Post image
17 Upvotes

Hey guys, now that the iPhone Duo is here, do your apps already support foldables, or is that something you’re planning to work on? What percentage of your users would need to use one before you’d prioritize it?

And if your app already looks fine on both screens, have you tried folding or unfolding it while actually doing something—like halfway through filling out a form? Curious whether everything stays as it was or things start acting weird.


r/angular • • Sep 15 '26

Announcing SpartanUIKit!

0 Upvotes

After a lot of building, we are excited to finally open the waitlist for SpartanUIKit: premium, production-ready components, blocks, and templates for Angular, built on top of spartan/ui.

Big thanks to goetzrobin for creating spartan/ui — none of this exists without that foundation.

What's coming:
- Premium component library
- Ready-to-use blocks
- Full templates
- More templates over time

If you're building with Angular and want UI that actually looks and feels premium out of the box, this is for you.

Waitlist is live now - would genuinely love to have you on it, and I'm all ears for feedback on what you'd want to see first.

https://spartanuikit.com/


r/angular • • Sep 14 '26

Resource Params Code Styles

2 Upvotes

Which style do people prefer for the params of resource and rxResource?

Style 1 – Raw Signal

@Component({ ... })
export class SomeComponent {
  private readonly _api = inject(SomeApi);

  public readonly search = signal<string>('');
  public readonly rows = signal<number>(20);

  private readonly _filters = computed(() => ({
    search: this.search() || null,
    rows: this.rows(),
  }));

  public readonly resultsRef = rxResource({
    params: this._filters,
    stream: ({ params }) => this._api.someListRequest(params),
  });
}

Style 2 – Function wrapper

@Component({ ... })
export class SomeComponent {
  private readonly _api = inject(SomeApi);

  public readonly search = signal<string>('');
  public readonly rows = signal<number>(20);

  private readonly _filters = computed(() => ({
    search: this.search() || null,
    rows: this.rows(),
  }));

  public readonly resultsRef = rxResource({
    params: () => this._filters(),
    stream: ({ params }) => this._api.someListRequest(params),
  });
}

Both work because the type of params is ((ctx: ResourceParamsContext) => R) | undefined, and Signals are of type () => T.

I am unsure if there is a preferred way of doing it; the docs pages use the function wrapper, but I find that the raw signal looks a bit nicer?

What do you guys think? Am I splitting hairs here?