angular / angular-cli

CLI tool for Angular
https://cli.angular.io
MIT License
26.76k stars 11.98k forks source link

IWAs (Isolated Web Apps) integration proposal #27527

Closed leonelvsc closed 4 months ago

leonelvsc commented 5 months ago

Command

add

Description

As seen in the @angular/pwa package that handles the creation of the service worker, config files, manifest, etc. Would be nice if in the future the Angular CLI teams looks at other webapps packaging formats like https://github.com/WICG/isolated-web-apps/blob/main/README.md , the main reason is that some WebAPIs wouldn't be available in WebPages ie: DirectSocketsAPI https://wicg.github.io/direct-sockets/.

There are plugins for WebPack that handle the WebBundle creation ie: https://github.com/GoogleChromeLabs/webbundle-plugins#readme this could be automatically configured by the @angular/cli at build time.

Example App that I've found: https://github.com/GoogleChromeLabs/telnet-client.

I know that the proposal is still work in progress, but i feel this should be on the scope of the cli team at some point in the future

Describe the solution you'd like

The creation of @angular/iwa package at some point

Describe alternatives you've considered

No response

dgp1130 commented 5 months ago

I'm not very familiar with IWAs, what exactly would @angular/iwa actually do here? It seems like it would output a Web Bundle, is there anything beyond that such apps would need? Based on a quick reading on the proposal, it seems like this mostly has to do with how the application is packaged and distributed, so I'm unclear on how Angular can meaningfully improve this process.

leonelvsc commented 5 months ago

Well as i said it's a new kind of output for the build process today angular just compiles static code ready the be served from a webserver, i know that 3rd parties can customize and create custom builders that can solve this, but in the future, as the web continues to grow other ways of distributing and signing the compiled output should be considered and taking into account.

What I thought for the scope of @angular/iwa is the configuration of the build process like @angular/pwa for example adds the service-worker file to the output this new package could add the necessary plugins, code signing and perhaps installation of typescript typings for this restricted APIs and so on to the project.

But by all means if the team feels like this should be done outside the angular scope please close this issue, i think just worth the discussion

dgp1130 commented 4 months ago

Had a discussion about this today within the team. IWAs are a cool idea, but we're thinking it's a bit premature to be thinking about a meaningful integration at this point. If and when the spec progresses to something which can actually be experimented with, we can maybe consider a real feature to support it.

It's probably possible to support this in some capacity by just post processing the output of an Angular build to wrap it in whatever format IWA tooling would expect. Angular CLI just builds a web app, and it seems like it should be possible to take that output and box it into an IWA without a whole lot of unnecessary complexity. That's probably good enough for experimenting now, and we can consider something more comprehensive if and when the time comes.

I'll point out since this is based on Web Bundle, we're considering generating a Web Bundle as part of ng build since Chrome has support for this and can lead to performance improvements. That alone might be most of the work to making Angular IWA-compatible. We'll have to see how the spec shakes out.

I'll close this issue for now since there's nothing immediately actionable here at this moment, but as this spec evolves I'm sure we would love to hear from the community how important IWAs are for your use cases and whether we should consider more direct support in the future.

angular-automatic-lock-bot[bot] commented 3 months ago

This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.