Yes, it's technically still possible to write a plain C iOS app in 2025 (and beyond). While Apple pushes developers towards Swift and SwiftUI, and Objective-C is slowly fading, the underlying iOS APIs are still C-based. This means you can use C, potentially with some Objective-C bridging for UI elements or higher-level functionalities, to create a functional app. However, this approach is significantly harder and less efficient than using Swift or Objective-C, lacking modern tools, libraries, and simplified memory management. Maintaining and updating a C-based iOS app would also be a considerable challenge compared to using more modern, officially supported languages and frameworks. Therefore, while possible, it's not generally recommended for practical development.
Pledge is a lightweight reactive programming framework for Swift designed to be simpler and more performant than RxSwift. It aims to provide a more accessible entry point to reactive programming by offering a reduced API surface, focusing on core functionalities like observables, operators, and subjects. Pledge avoids the overhead associated with RxSwift, leading to improved compile times and runtime performance, particularly beneficial for smaller projects or those where resource constraints are a concern. The framework embraces Swift's concurrency features, enabling seamless integration with async/await for modern Swift development. Its goal is to offer the benefits of reactive programming without the complexity and performance penalties often associated with larger frameworks.
HN commenters generally expressed skepticism towards Pledge's performance claims, particularly regarding the "no Rx overhead" assertion. Several pointed out the difficulty of truly eliminating the overhead associated with reactive programming patterns and questioned whether a simpler approach using Combine, Swift's built-in reactive framework, wouldn't be preferable. Some questioned the need for another reactive framework in the Swift ecosystem given the existing mature options. A few users showed interest in the project, acknowledging the desire for a lighter-weight alternative to Combine, but emphasized the need for robust benchmarks and comparisons to substantiate performance claims. There was also discussion about the project's name and potential trademark issues with Adobe's Pledge image format.
This post outlines a vision for first-class WebAssembly support in Swift, enabling developers to compile Swift code directly to Wasm for use in web browsers and other Wasm environments. The proposal emphasizes seamless integration with existing JavaScript ecosystems, allowing bidirectional communication between Swift and JavaScript code. It also aims for near-native performance by leveraging Wasm's capabilities, and proposes tools and workflows to simplify the development process, such as automatic generation of JavaScript bindings for Swift code. The ultimate goal is to empower Swift developers to build high-performance web applications and leverage the growing Wasm ecosystem, while maintaining Swift's core values of safety, performance, and expressiveness.
Hacker News users discussed the potential and challenges of Swift for WebAssembly. Some expressed excitement about the prospect of using Swift for frontend development, highlighting its performance and type safety as advantages over JavaScript. Others were more cautious, pointing to the existing maturity of JavaScript and its ecosystem, and questioning whether Swift could gain significant traction. Concerns were raised about the size of Swift compiled output and the integration with existing JavaScript libraries and frameworks. The potential for full-stack Swift development and server-side applications with WebAssembly was also mentioned as a motivating factor. Several users suggested that prioritizing the developer experience and tooling would be crucial for adoption.
This blog post explores improving type safety and reducing boilerplate when communicating between iOS apps and WatchOS complications using Swift. The author introduces two Domain Specific Languages (DSLs) built with Swift's result builders. The first DSL simplifies defining data models shared between the app and complication, automatically generating the necessary Codable conformance and WatchConnectivity transfer code. The second DSL streamlines updating complications, handling the asynchronous nature of data transfer and providing compile-time checks for supported complication families. By leveraging these DSLs, the author demonstrates a cleaner, safer, and more maintainable approach to iOS/WatchOS communication, minimizing the risk of runtime errors.
HN commenters generally praised the approach outlined in the article for its type safety and potential to reduce bugs in iOS/WatchOS communication. Some expressed concern about the verbosity of the generated code and suggested exploring alternative approaches like protobuf or gRPC, while acknowledging their added complexity. Others questioned the necessity of a DSL for this specific problem, suggesting that Swift's existing features might suffice with careful design. The potential benefits for larger teams and complex projects were also highlighted, where the enforced type safety could prevent subtle communication errors. One commenter pointed out the similarity to Apache Thrift. Several users appreciated the author's clear explanation and practical example.
Apple is open-sourcing Swift Build, the build system used to create Swift itself and related projects. This move aims to improve build performance, enable more seamless integration with other build systems, and foster community involvement in its evolution. The open-sourcing effort will happen gradually, focusing initially on the build system's core components, including the build planning framework and the driver responsible for invoking build tools. Future plans include exploring alternative build executors and potentially supporting other languages beyond Swift. This change is expected to increase transparency, encourage broader adoption, and facilitate the development of new tools and integrations by the community.
HN commenters generally expressed cautious optimism about Apple open sourcing Swift Build. Some praised the potential for improved build times and cross-platform compatibility, particularly for non-Apple platforms. Several brought up concerns about how actively Apple will maintain the open-source project and whether it will truly benefit the wider community or primarily serve Apple's internal needs. Others questioned the long-term implications, wondering if this move signals Apple's eventual shift away from Xcode. A few commenters also discussed the technical details, comparing Swift Build to other build systems like Bazel and CMake, and speculating about potential integration challenges. Some highlighted the importance of community involvement for the project's success.
Malimite is a free and open-source decompiler designed specifically for iOS and macOS applications. It aims to reconstruct the original Objective-C code from compiled Mach-O binaries, assisting in security research, software analysis, and understanding the inner workings of closed-source apps. Built using Swift, Malimite leverages a custom intermediate representation and features a modular architecture for easy extensibility and improvement. The project is actively under development and welcomes contributions from the community.
HN commenters generally express interest in Malimite's capabilities, particularly its potential for reverse engineering Swift and SwiftUI. Some highlight the difficulty of decompiling Swift and applaud any progress in this area. Others question its effectiveness compared to existing tools like Hopper, mentioning limitations in reconstructing complex control flow and higher-level language constructs. A few raise ethical concerns about the potential for misuse in piracy and intellectual property theft, while others emphasize the importance of such tools for security research and understanding closed-source software. The developer's choice to keep the tool closed-source is also a point of discussion, with some arguing for open-sourcing it to foster community development and scrutiny.
Summary of Comments ( 53 )
https://news.ycombinator.com/item?id=43682984
Hacker News users discussed the practicality and challenges of writing a plain C iOS app in 2025. Several commenters pointed out that while technically possible, using only C would be incredibly difficult and time-consuming, requiring significant workarounds to interact with essential iOS frameworks (mostly written in Objective-C and Swift). Some suggested leveraging existing C libraries and frameworks like SDL or raylib for cross-platform compatibility and easier graphics handling. Others questioned the motivation behind such an endeavor, given the availability of more suitable languages and tools for iOS development. The general consensus was that while a pure C app is theoretically achievable, it's a highly impractical approach for modern iOS development. Some pointed out that Apple's increasing restrictions on low-level access make a pure C app even more challenging going forward.
The Hacker News post "Is it possible to write plain C iOS app in 2025?" generated a fair number of comments discussing the feasibility and practicality of using C for iOS development.
Several commenters pointed out that it's technically possible but likely not practical or advisable. One commenter explained that while the entry point of an iOS app might be compiled C, interacting with any iOS frameworks would necessitate using Objective-C or Swift wrappers. They highlighted that even if some parts could be written in pure C, integrating with the iOS ecosystem would be challenging, requiring significant bridging work.
Another commenter explored the potential use of a cross-compiler targeting a suitable runtime like WASM/Wasmer, allowing for more C code. However, this approach was acknowledged as having potential performance limitations. This led to a discussion about whether such an approach would even be allowed on the App Store, given Apple's restrictions on interpreters and JIT compilers.
Some commenters offered alternative perspectives, suggesting that using C for specific performance-critical components within a larger Swift/Objective-C application might be a more realistic scenario. They argued that rewriting an entire app in C wouldn't be worth the effort, given the mature tooling and frameworks available for Swift/Objective-C development.
A few users mentioned existing projects and tools that allow for C development on iOS, such as the SDL library and Beeper (an iMessage client largely written in C++). These examples served to demonstrate that C can indeed be used, but often in conjunction with other languages and primarily for specific use cases.
A recurring theme in the comments was the trade-off between performance and developer productivity. While C might offer potential performance gains in some scenarios, the increased development time and complexity involved in interfacing with the iOS ecosystem were generally seen as outweighing those benefits.
Finally, some commenters discussed Apple's policies and their potential impact on C-based iOS development. The possibility of Apple further restricting or disallowing certain approaches was raised, reinforcing the notion that relying solely on C for iOS development is a risky proposition.